{"version":3,"file":"static/js/main.15f5f263.js","mappings":"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3D,OAAQ,WACR4D,MAAO,WACPC,iBAAkB,CACdC,GAAI,MACJC,IAAK,SACLC,KAAM,YACN94C,EAAG,IACH+4C,EAAG,MACHC,KAAM,WACNC,MAAO,cACPC,GAAI,MACJC,IAAK,WACLC,IAAK,UACLC,KAAM,cACNC,KAAM,aACNC,GAAI,MACJC,MAAO,UACPC,OAAQ,aACRC,QAAS,gBACTl6C,EAAG,MACHm6C,EAAG,KACHC,GAAI,SACJC,GAAI,QACJC,IAAK,YACLC,IAAK,WACLC,KAAM,cACNC,KAAM,aACNC,IAAK,WACLC,IAAK,UACLhC,EAAG,IACHiC,GAAI,MACJC,IAAK,SACLC,IAAK,MACLC,KAAM,QACNC,MAAO,WACPC,MAAO,SACP,kBAAmB,qBACnB,oBAAqB,qBACrBC,GAAI,QACJ/6C,EAAG,IACHg7C,GAAI,MACJC,IAAK,QACLC,KAAM,WACNC,KAAM,QACNC,MAAO,WACPC,OAAQ,cACRC,MAAO,SACPC,KAAM,QACNC,MAAO,SACP,eAAgB,kBAChB,iBAAkB,oBAG1BC,YAAa,CACT5C,KAAM,iBACNC,KAAM,cACN3D,OAAQ,YACR4D,MAAO,UAEX2C,YAAa,CACT7C,KAAM,kBACNC,KAAM,YACN3D,OAAQ,WACR4D,MAAO,UAEX4C,KAAM,CACFhe,OAAQ,CACJie,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ+C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ+C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZC,OAAQ,CACJpe,OAAQ,CACJie,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIZE,SAAU,CACNre,OAAQ,CACJie,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,cACA,cACA,cACA,gBAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,cACA,cACA,cACA,iBAIZG,WAAY,CACRte,OAAQ,CACJie,YAAa,CACTM,SAAU,WACVC,GAAI,KACJ,iBAAkB,KAClBC,KAAM,OACNC,GAAI,KACJ,iBAAkB,KAClBC,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,YAEZZ,OAAQ,CACJK,SAAU,KACVC,GAAI,IACJ,iBAAkB,KAClBC,KAAM,IACNC,GAAI,IACJ,iBAAkB,KAClBC,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,YAEZX,KAAM,CACFI,SAAU,WACVC,GAAI,KACJ,iBAAkB,KAClBC,KAAM,OACNC,GAAI,KACJ,iBAAkB,KAClBC,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,aAGhB,cAAe,CACXb,YAAa,CACTM,SAAU,WACVC,GAAI,KACJ,iBAAkB,KAClBC,KAAM,OACNC,GAAI,KACJ,iBAAkB,KAClBC,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,SAEZZ,OAAQ,CACJK,SAAU,WACVC,GAAI,KACJ,iBAAkB,KAClBC,KAAM,OACN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MACJ,QACIy5B,EAAqB,GAM7B,OAH4BA,EAAmBx2G,QAAO,SAAC22G,GAAD,OACjDJ,EAAgBtlF,SAAS0lF,EADwB,GAIzD,CAED,SAASF,GAA6BH,GAClC,OAAIA,EACO,CAAChB,GAAiBK,GAAqBC,GAAsBH,GAAa14B,GAAe24B,GAAeK,GAAsBC,GAAuBC,IAEzJ,CAACX,GAAiBK,GAAqBC,GAAsBH,GAAa14B,GAAeg5B,GAAsBC,GAAuBC,GAChJ,CA6BM,SAASW,GAAiBD,GAC7B,OAAQA,GACJ,IAAK,WACD,MAAO,CAAC,UACZ,IAAK,2BACL,IAAK,4BACD,MAAO,CAAC,SAAU,UAAW,cACjC,IAAK,OACL,IAAK,MACD,MAAO,CAAC,SACZ,QACI,MAAO,GAElB,CCvFM,IAAME,GAAc,CAC1B,iBACA,eACA,2BACA,uBACA,uBACA,wBACA,mBACA,wBACA,oBACA,4BACA,mBACA,cACA,oBACA,uBACA,2BACA,eACA,cACA,qBACA,uBACA,gBACA,qBACA,mBACA,eACA,yBACA,qBACA,qBACA,4BACA,qBACA,qBACA,2BACA,kBACA,4BACA,oBACA,qBACA,oBACA,kBACA,cACA,cACA,eACA,gBAGYC,GAAQ,CACpB,gBACA,sBACA,oBACA,qBACA,uBACA,wBACA,eACA,wBACA,eACA,sBACA,cACA,aACA,cACA,cACA,mBACA,cACA,kBACA,sBACA,cACA,wBACA,iBACA,0BACA,sBACA,kBACA,kBACA,4BACA,eACA,uBACA,gBACA,kBACA,sBACA,sBACA,kBACA,uBACA,mBACA,qBACA,cACA,iBACA,eACA,mBACA,kBACA,iBACA,yBACA,oBACA,eACA,eACA,mBACA,wBACA,uBACA,eACA,oBACA,eACA,eACA,sBACA,yBACA,eACA,mBACA,cACA,cACA,mBACA,cACA,eACA,+BACA,kBACA,uBACA,cACA,qBACA,cACA,qBACA,kBACA,mBACA,kBACA,eACA,0BACA,uBACA,wBACA,oBACA,mBACA,qBACA,oBACA,qBACA,gBACA,4BACA,yBACA,kBACA,gCACA,eACA,wBACA,kBACA,s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O,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,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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V,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IAC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K,UACf5gC,cACwB,WAApBrhI,EAAMklE,KAAKhrE,KAAoB,KAb3C,SAA2BxB,GACvBsH,EAAM+3H,kBAAkBr/H,EAAGsH,EAAMklE,KACpC,EAOG,WAOI,kBACIvkD,UAAW3gB,EAAMklE,KAAKi3C,eAAiB,2BAA6B,YADxE,SAGKs3Y,EAdFzzf,EAAMklE,KAAKkyB,UAAY,YAI9B,OAaKp3F,EAAMklE,KAAK7gC,OAGvB,CAiBD,QAfA,SAAuB0td,GACnB,OACI,UAACQ,IAAD,SACQR,GADR,IAEI7sb,KAAM,SAACllE,GAAD,OACF,UAACwzf,IAAD,CACItub,KAAMllE,EAAMklE,KACZ+8F,UAAW8vV,EAAc1wX,cACzBtJ,kBAAmBg6X,EAAc1wX,eAJnC,IASjB,ECsDD,IAlBsB,CAClB,CACIh9F,KAAM,kBACNprC,MAAO,eACPy6f,aAzFqB,CACzB,CACIrvd,KAAM,aACNprC,MAAO,aACP06f,cAAe,IAEnB,CACItvd,KAAM,cACNprC,MAAO,cACP06f,cAAe,IAEnB,CACItvd,KAAM,QACNprC,MAAO,QACP06f,cAAe,IAEnB,CACItvd,KAAM,QACNprC,MAAO,QACP06f,cAAe,IAEnB,CACItvd,KAAM,SACNprC,MAAO,SACP06f,cAAe,IAEnB,CACItvd,KAAM,WACNprC,MAAO,WACP06f,cAAe,IAEnB,CACItvd,KAAM,OACNprC,MAAO,OACP06f,cAAe,IAEnB,CACItvd,KAAM,SACNprC,MAAO,SACP06f,cAAe,MAoDnB,CACItvd,KAAM,gBACNprC,MAAO,kBACPy6f,aAnDwB,CAC5B,CACIrvd,KAAM,iBACNprC,MAAO,gBACP06f,cAAe,CACX,WAAY,aAGpB,CACItvd,KAAM,aACNprC,MAAO,aACP06f,cAAe,IAEnB,CACItvd,KAAM,cACNprC,MAAO,cACP06f,cAAe,MAqCnB,CACItvd,KAAM,gBACNprC,MAAO,gBACPy6f,aApCsB,CAC1B,CACIrvd,KAAM,0BACNprC,MAAO,0BACP06f,cAAe,CACX,QAAS,QAAS,WAAY,gBAGtC,CACItvd,KAAM,kCACNprC,MAAO,4BACP06f,cAAe,CACX,UAGR,CACItvd,KAAM,eACNprC,MAAO,oBACP06f,cAAe,OCqLvB,QApPA,YAEG,EADCvyb,QACA,IAEMphE,EAAQg5F,KACd,IAAuC/F,KAAvC,GAASpJ,EAAT,KAASA,MAAS+pa,EAAlB,KAEA,KAAgC1te,EAAAA,EAAAA,UAAS2te,IAAAA,IAAzC,GAAOz8Z,EAAP,KAAiB08Z,EAAjB,KACA,KAAsC5te,EAAAA,EAAAA,UAASkxE,EAASs8Z,aAAa,IAArE,GAAOz5a,EAAP,KAAoB85a,EAApB,KACA,KAAwC7te,EAAAA,EAAAA,UAAS,IAAjD,GAAO4vS,EAAP,KAAqBk+L,EAArB,KACA,KAAgC9te,EAAAA,EAAAA,UAAS,IAAzC,GAAO4jE,EAAP,KAAiBmqa,EAAjB,KACA,KAA4B/te,EAAAA,EAAAA,UAAS,IAArC,GAAO+qE,EAAP,KAAeija,EAAf,KACA,KAAwChue,EAAAA,EAAAA,WAAS,GAAjD,GAAOiue,EAAP,KAAqBC,EAArB,KAEMr2Y,GAAW//F,EAAAA,EAAAA,UAAQ,kBAAmB6rE,EzmCpBZvlF,KAAI,SAAA+vf,GAAY,OAAIA,EAAa3vb,KAAjB,IAAwB8uG,MymCoB/C,GAA2B,CAAC3pF,IAE/Cyqa,GAAmBpvd,EAAAA,EAAAA,QAAO,MAE1Bqvd,EzmC7BH,SAAgC1qa,EAAOC,GAC1C,OAAOD,EAAMjkF,MAAK,SAAA2lE,GAAI,OAAIA,EAAKue,SAASxvE,OAAO5R,gBAAkBohF,EAASxvE,OAAO5R,aAA3D,GACzB,CymC2B0B8rf,CAAuBz2Y,EAAUj0B,GAClD2qa,EAA+B3qa,EAASzjF,MAAM,kBAEpD,SAASyhG,EAAa76F,GAClB,MAAwBA,EAAMlN,OAAtBzC,EAAR,EAAQA,KAAMrE,EAAd,EAAcA,MAEd,OAAQqE,GACJ,IAAK,YACDw2f,EAAY76f,GACZ86f,EAAe96f,EAAMy6f,aAAa,IACd,kBAAhBz6f,EAAMA,MACN+6f,EAAgB/6f,EAAMy6f,aAAa,GAAGC,cAAc,IAEpDK,EAAgB,IAEpB,MACJ,IAAK,gBACDD,EAAe96f,GACf+6f,EAAgB/6f,EAAM06f,cAAc,IACpCM,EAAYh7f,EAAMorC,MAClB,MACJ,IAAK,gBACD2vd,EAAgB/6f,GAChB,MACJ,IAAK,YACDg7f,EAAYh7f,GACZ,MACJ,IAAK,SACDi7f,EAAUj7f,GAKrB,CAjDF,SA+DgBknY,EA/DhB,oEA+DC,WAA4BlzX,GAA5B,oFACIA,EAAMO,iBAGE0sE,EAAwBl6E,EAAxBk6E,SAAUlB,EAAch5E,EAAdg5E,UAeU,qBAbtBp0D,EAAa,CACfwyE,SAAUA,EAASn+F,MACnBghF,YAAaA,EAAYhhF,MACzB68T,aAAcA,EACdhsO,SAAUA,EAASxvE,OACnB6hG,eAAgBliC,EAAYhhF,MAAMiM,WAAW,QAC7CgpC,MAAOikD,GAAoBlB,EAAOvsB,OAAS,KAC3C+Y,SAAUwT,EAAOvvE,GACjBw5D,SAAU+V,EAAOvvE,GACjBw4D,SAAAA,EACAlB,UAAAA,IAGWoe,WACXxyE,EAAWwyE,SAAW,eAES,sBAA3BxyE,EAAWq1D,YACXr1D,EAAWq1D,YAAc,cACC,kBAAnBmd,EAASn+F,QAChB2rB,EAAWu3F,gBAAiB,EAC5Bv3F,EAAWq1D,YAAcr1D,EAAWkxS,aAAax7S,QAKjD,oCADAsK,EAAWq1D,cAGXr1D,EAAWgrH,oBAAqB,IAjC5C,SAoCuBx0D,GAAWlB,EAAUt1D,GApC5C,OAoCU2mD,EApCV,OAsCIqob,EAAkB,CACd15f,KAAMm2F,GACN/yE,QAAQ,OACJoE,GAAI6pD,EAAKuO,QACNl1D,GAFA,IAGHs3D,WAAY,OAIpBw4a,IAEAr9Y,IAjDJ,4CA/DD,wBAmHC,SAASq9Y,IACLZ,EAAYD,IAAAA,IACZE,EAAe38Z,EAASs8Z,aAAa,IACrCM,EAAgB,IAChBC,EAAY,IACZC,EAAU,IACVE,GAAgB,EACnB,CAED,SAAS/8Y,IACLu8Y,EAAkB,CACd15f,KAAMu2F,IAEb,CAED,OACI,UAAC,GAAD,CACI/7B,MAAO,MACPghD,WAAW,EACXjnC,MAAO,kBACPrN,QAASi2C,EAJb,UAMI,mBAAM6F,SAAUijR,EAAcx/W,UAAU,kBAAxC,WACI,kBAAKA,UAAU,MAAf,WACI,kBAAKA,UAAU,oBAAf,WACI,iBAAKA,UAAU,aAAf,wBACA,UAACu6F,GAAD,CACI59G,KAAK,YACLo7G,YAAY,mBACZ5zC,UAAU,OACVkI,YAAY,QACZ/zE,MAAOm+F,EACPz2E,UAAU,sBACViF,KAAMiue,IACN3vb,SAAU4jC,QAGlB,kBAAKnnF,UAAU,oBAAf,WACI,iBAAKA,UAAU,aAAf,4BACA,UAACu6F,GAAD,CACI59G,KAAK,gBACLo7G,YAAY,uBACZz/G,MAAOghF,EACPnV,UAAU,OACVkI,YAAY,QACZrsD,UAAU,sBACViF,KAAMwxE,EAASs8Z,aACfxvb,SAAU4jC,OAGjB7tB,EAAY05a,cAAcx2f,OAAS,IAChC,kBAAKwjB,UAAU,oBAAf,WACI,iBAAKA,UAAU,aAAf,4BACA,UAACu6F,GAAD,CACI59G,KAAK,gBACLo7G,YAAY,uBACZz/G,MAAO68T,EACPn1S,UAAU,sBACViF,KAAMq0D,EAAY05a,cAClBzvb,SAAU4jC,EACVx3D,SAAgC,8BAAtB2pC,EAAYhhF,YAIlC,kBAAK0nB,UAAU,oBAAf,WACI,kBAAKA,UAAU,4BAAf,WACI,kBAAMA,UAAU,kBAAhB,kBACC4ze,IAAkB,mBAAO5ze,UAAU,cAAjB,yCAClB8ze,IAAgC,mBAAO9ze,UAAU,cAAjB,0CAErC,mBACI09F,UAAU,KACV19F,UAAU,+BACVrjB,KAAK,YACL4mE,SAAU4jC,EACV7uG,MAAO6wF,QAGf,iBAAKnpE,UAAU,oBAAf,UACI,kBAAKA,UAAU,OAAf,WACI,iBAAKA,UAAU,4BAAf,UACI,kBAAMA,UAAU,kBAAhB,uBAEJ,UAACqyD,GAAD,CACI11E,KAAK,SACLo7G,YAAY,oBACZz/G,MAAOg4F,EACPtwE,UAAU,sBACViF,KAAMikE,EACN3lB,SAAU4jC,EACVhjC,UAAW,OACXkC,WAAY,gBAK5B,WAAC,GAAD,CAAkB+e,OAAO,MAAzB,UACKoua,IACG,mBAAOxze,UAAU,OAAjB,UACI,kBAAKA,UAAU,iBAAf,WACI,UAAC,GAAD,CAAa8rH,YAAY,WACzB,kBAAM9rH,UAAU,4BAI5B,oBACIzmB,KAAM,SACNyS,QAAS0qG,EACT12F,UAAU,oBAHd,qBAOA,oBACIzmB,KAAM,SACNwS,IAAK4nf,EACL3nf,QAASwzX,EACTx/W,UAAU,kBACV2vB,SAnLe,IAA3Bw5C,EAASxvE,OAAOnd,QAChBs3f,GACAF,IACCtja,IACAA,EAAOvvE,IACRyye,GACoB,4BAAnB/8Z,EAASn+F,QAAwC68T,EAwK1C,2BAanB,ECvID,QAhHA,WAEI,QAA0F7iO,KAA1F,UAAStV,EAAT,EAASA,gBAAiBC,EAA1B,EAA0BA,kBAAmBC,EAA7C,EAA6CA,qBAAwB+1a,EAArE,KAEMz0b,GAAQj6B,EAAAA,EAAAA,QAAO,MAmErB,SAASyvd,IACLf,EAAkB,CACd15f,KAAM0iF,GACNt/D,QAAS,CAAC,GAEjB,CAED,OAzEAS,EAAAA,EAAAA,YAAU,WACN,SAAS62e,EAAkBl8f,GACD,OAAlBymE,EAAMv1D,SAAqBu1D,EAAMv1D,QAAQqwF,SAASvhG,EAAEqH,SAChD49E,GACAg3a,GAGX,CAID,OAFAxod,SAASu0B,iBAAiB,QAASk0b,GAE5B,WACHzod,SAASy0B,oBAAoB,QAASg0b,EACzC,CACJ,GAAE,CAACj3a,KA4DA,UAACna,GAAD,CACInE,SAAS,EACTzjC,MAAO,CAAE84B,MAAO,SAChBwK,KAAMye,EACNp2B,OAAQq2B,EAJZ,UAMI,iBAAKj9D,UAAU,QAAQjU,IAAK,SAAAmof,GAAI,OAAI11b,EAAMv1D,QAAUirf,CAApB,EAAhC,UACI,WAACljZ,GAAD,CACI19C,UAAQ,EACRr4B,MAAO,CAAEuhB,QAAS,eAAgBuX,MAAO,QACzCwkC,SAtChB,SAA8BjsF,GAC1B,OAAOA,EAAM68F,QACT,IAAK,IAvBT8pZ,EAAkB,CACd15f,KAAMw2F,GACNpzE,QAASugE,IAuBL,MACJ,IAAK,IAnBT+1a,EAAkB,CACd15f,KAAMy2F,GACNrzE,QAASugE,IAmBL,MACJ,IAAK,IAfTh3D,QAAQnL,IAAI,QAiBJ,MACJ,IAAK,IAdTmL,QAAQnL,IAAI,SAoBZi5e,GACH,EAiBW,WAKI,UAAC3pZ,GAAD,CAAU3mE,KAAK,UAGX,UAAC2mE,GAAD,CAAU3mE,KAAK,YAIf,UAAC2mE,GAAD,CAAU3mE,KAAK,SAImC,OAAlDlkB,aAAagB,QAAQ,0BAC6B,KAAlDhB,aAAagB,QAAQ,0BACrB,UAAC6pF,GAAD,CAAU3mE,KAAK,UAAa,WAMnD,ECnBD,QAjGA,WAEI,QAAsD4uD,KAAtD,UAASpJ,EAAT,EAASA,MAAO8H,EAAhB,EAAgBA,cAAiBiia,EAAjC,KAEM9uf,EAAQ6sF,EAAcjsF,MAAM,KAAKpB,KAAI,SAAApL,GAAC,OAAIoiC,SAASpiC,EAAb,IACtCqyE,EAAOse,EAAM/kF,EAAM,IAAI4/D,MAAM5/D,EAAM,IAEzC,KAAgCohB,EAAAA,EAAAA,UAASqlD,EAAKue,UAA9C,GAAOA,EAAP,KAAiBmqa,EAAjB,KACA,KAA0B/te,EAAAA,EAAAA,UAAS,MAAnC,GAAOlnB,EAAP,KAAcm5W,EAAd,KARsB,kCAmCtB,8FACU78R,GAAW/P,EAAK9nD,IAAK,CAAEqmE,SAAAA,IADjC,OAEI8pa,EAAkB,CACd15f,KAAMo2F,GACNhzE,QAAS,CACLmgE,SAAUlS,EAAKkS,SACf3D,OAAQvO,EAAK9nD,IACbqmE,SAAAA,KAGRgra,IAVJ,4CAnCsB,sBAgDtB,SAASA,IACLlB,EAAkB,CACd15f,KAAMw2F,GACNpzE,QAAS,MAEhB,CAED,OA7CAS,EAAAA,EAAAA,YAAU,YAYV,WACI,IAAMg3e,EAAmB1ia,GAAkBxI,EAAO,WAAYC,GAE9D,OAA4B,OAArBira,GAA6BA,EAAiBtxe,MAAQ8nD,EAAK9nD,GACrE,CAfO8we,GAGAp8I,EAAS,MAFTA,EAAS,6BAIhB,GAAE,CAACruR,KAwCA,WAAC,GAAD,CACIrb,MAAO,cADX,WAGI,kBAAM9tD,UAAU,kBAAhB,UACI,kBAAKA,UAAU,iBAAf,WACI,oBAAOA,UAAU,aAAjB,sBAGQ3hB,IACA,mBAAM2hB,UAAU,cAAhB,qBACiB3hB,SAIzB,mBACI9E,KAAK,OACLymB,UAAU,eACV1nB,MAAO6wF,EACP5lB,SAxDpB,SAA8Bj3D,GAC1Bgnf,EAAYhnf,EAAMlN,OAAO9G,MAC5B,UA0DO,WAAC,GAAD,CAAkB8sF,OAAO,MAAzB,WACI,oBACIplE,UAAU,oBACVhU,QArDhB,WACIinf,EAAkB,CACd15f,KAAMw2F,GACNpzE,QAAS,MAEhB,EA8CW,qBAMA,oBACIqD,UAAU,kBACVhU,QAvFM,2CAwFN2jC,SAAUw5C,EAASxvE,SAAWixD,EAAKue,SAASxvE,QAAUtb,EAH1D,yBAUf,EC3CD,QArDA,WAEI,QAAwDi0F,KAAxD,UAASpJ,EAAT,EAASA,MAAOgI,EAAhB,EAAgBA,gBAAmB+ha,EAAnC,KAEA,KAAwB1te,EAAAA,EAAAA,UAAS,CAAC,GAAlC,GAAOqlD,EAAP,KAAaypb,EAAb,KAaA,SAAShwL,IACL4uL,EAAkB,CACd15f,KAAMy2F,IAEb,CArBuB,kCAuBxB,oGACU9W,GAAWtO,EAAK9nD,KAAO8nD,EAAK7pD,IADtC,OAEIkye,EAAkB,CACd15f,KAAMq2F,GACNjzE,QAAS,CACLmgE,SAAUlS,EAAKkS,SACf3D,OAAQvO,EAAK9nD,OAGfwxe,EAAepja,EAAgBnsF,MAAM,KAAK,GAAK,KAAOmsF,EAAgBnsF,MAAM,KAAK,GAAK,GAE5Fkuf,EAAkB,CACd15f,KAAMk2F,GACN9yE,QAAS23e,IAGbjwL,IAhBJ,4CAvBwB,sBA0CxB,OApCAjnT,EAAAA,EAAAA,YAAU,WACN,GAAK8zE,EAAL,CAKA,IAAMqja,EAAerja,EAAgBnsF,MAAM,KAAKpB,KAAI,SAAA0kC,GAAC,OAAI1N,SAAS0N,EAAb,IAC/CuiC,EAAOse,EAAMqra,EAAa,IAAIxwb,MAAMwwb,EAAa,IACvDF,EAAQzpb,EAJP,MAFGypb,EAAQ,CAAC,EAOhB,GAAE,CAACnja,KA4BA,UAAC,GAAD,CACIuwM,MAAM,cACN4iC,mBAAoBA,EACpB3hU,QAAO,8CAAyCkoE,EAAKlnC,KAA9C,UACP4gS,SA/CgB,2CAgDhBpuN,SAAUmuN,EACVE,iBAAiB,UAE5B,ECmCGiwL,IAAsC,WAItC,SAASA,EAAqBlof,GAC1BrS,KAAKqS,MAAQA,EACbrS,KAAKsoC,aAAc,EACnBtoC,KAAKw6f,WAAa,GAClBx6f,KAAKy6f,iBAAmB,GACxBz6f,KAAKkvG,OAAS78F,EAAM2kf,sBACpBh3f,KAAK06f,aAAerof,EAAMlN,OAAOwqE,IACpC,CAgFD,OAzEA4qb,EAAqB18f,UAAU8V,KAAO,WAKlC,OAJK3T,KAAKsoC,cACNtoC,KAAK26f,mBAAmBppd,SAASk7E,iBAAiBzsH,KAAKqS,MAAMq6G,QAAS1sH,KAAKqS,MAAMs6G,UACjF3sH,KAAKsoC,aAAc,GAEhBtoC,IACV,EACD/B,OAAOG,eAAem8f,EAAqB18f,UAAW,gBAAiB,CAInEsnB,IAAK,WACD,SAAInlB,KAAKsoC,aAAetoC,KAAKw6f,YAAcx6f,KAAKy6f,oBAElC,GAAGjwf,OAAOxK,KAAKy6f,iBAAkB,KAAKjwf,OAAOxK,KAAKw6f,WAAY,KACpElwf,WAAW,GAAGE,OAAOxK,KAAK06f,aAAc,KAAKlwf,OAAOxK,KAAKkvG,OAAQ,KAK5E,EACDrwG,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAem8f,EAAqB18f,UAAW,kBAAmB,CAMrEsnB,IAAK,WACD,MAAO,CAAE6xe,sBAAuBh3f,KAAKw6f,WAAYE,aAAc16f,KAAKy6f,iBACvE,EACD57f,YAAY,EACZC,cAAc,IAWlBy7f,EAAqB18f,UAAU+8f,iBAAmB,WAC9C,GAAI56f,KAAKsoC,aAAetoC,KAAK66f,cAAe,CACxC,IAAIl7e,EAAK3f,KAAK86f,oBAAoBv+b,wBAAyBgmE,EAAQ5iH,EAAG+5C,IACtE,OAAI6oE,EADgF5iH,EAAGk6C,OAClE75D,KAAKqS,MAAMs6G,QA7Jd,EA8JP,QAEF3sH,KAAKqS,MAAMs6G,QAAU4V,EAhKZ,EAiKP,SAGA,OAEd,CAIJ,EACDg4X,EAAqB18f,UAAU88f,mBAAqB,SAAU9qf,GAE1D,IADA,IAAIi+B,EAAOj+B,EACJi+B,IAASA,EAAI,cAChBA,EAAOA,EAAKuxB,WAEZvxB,GAAQA,EAAI,eACZ9tC,KAAK86f,oBAAsBhtd,EAC3B9tC,KAAKw6f,WAAa1sd,EAAI,aACtB9tC,KAAKy6f,iBAAmB3sd,EAAI,mBAEnC,EACMysd,CACV,CA5FyC,GCgBnC,SAASQ,IAAiBC,EAA6BC,EAAY/F,EAAWgG,EAA6BC,EAAY9gN,GAC1H,IAAI11K,EAAgB01K,GAAiBo7M,IACrC,IA6BA,WACI,IAAKwF,IAAeA,EAAW14f,SAC1By4f,IAAgCE,EACjC,OAAO,EAEX,GAAIC,IAAeA,EAAW54f,OAE1B,OAAO,EAIX,IAAK0sG,IAAYisZ,EADLC,GAAcA,IAAeF,EAA0BE,EAAbF,EACFt2X,GAChD,OAAO,EAEX,OAAO,CACV,CA5CIy2X,GACD,OAAOC,IAEX,IAAIrpZ,EAAa/C,IAAY+rZ,EAA6BC,EAAYt2X,GACtE,IAAK3yB,EACD,OAAOqpZ,IAGX,GAAKF,GAAcA,IAAeF,EAa9B,MAAO,CAAEA,WAFWx1e,IAAWu1e,EAA6Br2X,EAAes2X,GAEvCE,WADhBxjF,IAAQ3lU,EAAYkjZ,EAAWvwX,EAAeu2X,EAA6BC,IAX/F,GAkBQ,GAAG3wf,OAAO0wf,EAA6B,KAAK5wf,WAAW,GAAGE,OAAOwwf,EAA6B,MAjBlG,OAAOK,IAEX,IAAIC,EAAoB71e,IAAWu1e,EAA6Br2X,EAAes2X,GAC3EM,EAAa5jF,IAAQ3lU,EAAYkjZ,EAAWvwX,EjBzBjD,SAA0C62X,EAAetsZ,GAC5D,IAAIusZ,EAAkBvsZ,EAEtBA,EAAS,KAAkBA,EAC3B,IAAIwsZ,EAAiB9rZ,IAFrB4rZ,EAAgB,KAAkBA,GAEsBxsZ,IACxD,GAAIE,EAAO5kG,WAAWoxf,GAAiB,CACnC,IAAIC,EAAoBzsZ,EAAOj8E,UAAUyoe,EAAen5f,QACxD,GAAIo5f,EAAmB,CACnB,IAAIC,EAAiBvsZ,IAAgBssZ,GACrC,GAAI12f,OAAO+qG,IAAWwrZ,IAAkBv2f,OAAO22f,GAI3C,OAAOpsZ,IAHaksZ,GACfz2f,OAAO22f,GAAkB,GAAG50f,WAC7B20f,EAAkB1oe,UAAU2oe,EAAer5f,QAGtD,CACJ,CACD,OAAOk5f,CACV,CiBOsEI,CAAiCb,EAA6BE,GAA8BI,GAG3J,OAAOH,EAAa,CAAEF,WAAYM,EAAYJ,WAAYI,GAAeA,EAO7E,SAASF,IACL,OAAOF,EAAa,CAAEF,WAAYA,EAAYE,WAAYA,GAAeF,CAC5E,CAoBJ,CC3JD,IAAIrgf,IAAyC,WACzC,IAAIi8C,EAAgB,SAAU52D,EAAGmJ,GAI7B,OAHAytD,EAAgB54D,OAAO2E,gBAClB,CAAEC,UAAW,cAAgBgE,OAAS,SAAU5G,EAAGmJ,GAAKnJ,EAAE4C,UAAYuG,CAAI,GAC3E,SAAUnJ,EAAGmJ,GAAK,IAAK,IAAIrJ,KAAKqJ,EAAOnL,OAAOJ,UAAUM,eAAeqB,KAAK4J,EAAGrJ,KAAIE,EAAEF,GAAKqJ,EAAErJ,GAAK,EAC9F82D,EAAc52D,EAAGmJ,EAC3B,EACD,OAAO,SAAUnJ,EAAGmJ,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI5H,UAAU,uBAAyBwD,OAAOoE,GAAK,iCAE7D,SAAS0tD,IAAO92D,KAAKpC,YAAcqC,CAAI,CADvC42D,EAAc52D,EAAGmJ,GAEjBnJ,EAAEpC,UAAkB,OAANuL,EAAanL,OAAOiB,OAAOkK,IAAM0tD,EAAGj5D,UAAYuL,EAAEvL,UAAW,IAAIi5D,EAClF,CACJ,CAd4C,GAezC9gB,IAAsC,WAStC,OARAA,IAAW/3C,OAAO8J,QAAU,SAAShK,GACjC,IAAK,IAAI4B,EAAGrB,EAAI,EAAGJ,EAAIsG,UAAUjC,OAAQjE,EAAIJ,EAAGI,IAE5C,IAAK,IAAIyB,KADTJ,EAAI6E,UAAUlG,GACOL,OAAOJ,UAAUM,eAAeqB,KAAKG,EAAGI,KACzDhC,EAAEgC,GAAKJ,EAAEI,IAEjB,OAAOhC,CACV,EACMi4C,IAASvxC,MAAMzE,KAAMwE,UAC/B,EA4FGs3f,IAAkC,SAAU7gf,GAE5C,SAAS6gf,IACL,IAAIthf,EAAmB,OAAXS,GAAmBA,EAAOxW,MAAMzE,KAAMwE,YAAcxE,KAWhE,OAPAwa,EAAMpL,MAAQ,CACVo5F,SAAS,EACT9uC,IAAK,EACLC,KAAM,EACNlwB,KAAM,GACNsyd,mBAAoB,cAEjBvhf,CACV,CAgCD,OA9CAI,IAAUkhf,EAAkB7gf,GAkB5B6gf,EAAiBj+f,UAAUs5D,OAAS,WAChC,IAAI6kc,EAAe,CAAEtic,IAAK15D,KAAKoP,MAAMsqD,IAAM,KAAMC,KAAM35D,KAAKoP,MAAMuqD,KAAO,MACzE,OAAO35D,KAAKoP,MAAMo5F,SAAYtgG,EAAAA,cAAoB,MAAO,CAAE6d,UAAW,uBAAwBib,MAAOgV,IAASA,IAAS,CAAC,EAAGh2C,KAAKoF,MAAM47B,OAAQg7d,IAC1I9zf,EAAAA,cAAoB,OAAQ,CAAE6d,UAAWmvB,GAAW,4CAA6Cl1C,KAAKoP,MAAM2sf,qBACxG7zf,EAAAA,cAAoB,OAAQ,CAAE6d,UAAW,4BAC7C/lB,KAAKoP,MAAMq6B,KAClB,EASDqyd,EAAiBj+f,UAAUymE,KAAO,SAAU5K,EAAKC,EAAMlwB,EAAMsyd,GACzD/7f,KAAK2R,SAAS,CAAE62F,SAAS,EAAM9uC,IAAKA,EAAKC,KAAMA,EAAMlwB,KAAMA,EAAMsyd,mBAAoBA,GACxF,EAIDD,EAAiBj+f,UAAU8sW,KAAO,WAC9B3qW,KAAK2R,SAAS,CAAE62F,SAAS,GAC5B,EAIDszZ,EAAiBpzb,aAAe,CAAE1nC,MAAO,CAAEuhB,QAAS,QAASyX,SAAU,WAAYwI,OAAQ,IAAOqhE,QAAS,YACpGi4X,CACV,CAhDqC,CAgDpC5zf,EAAAA,eCnKI8mG,IAAY,IAElB,SAASyD,IAAY/nC,EAAW1/C,GAK5B,IAJA,IAAI1kB,EAAS0kB,EAEPixe,EAAUvxb,EAAU5/D,MAAMkkG,KAAWtlG,KAAI,SAACQ,GAAD,OAAWjF,OAAOiF,EAAlB,IAEtC5L,EAAI,EAAGA,EAAI29f,EAAQ15f,OAAS,EAAGjE,IACpCgI,EAASA,EAAO21f,EAAQ39f,IAAIwrE,MAGhC,OAAOxjE,CACV,CAED,SAAS+0H,IAAW3wD,EAAW1/C,GAK3B,IAJA,IAAI1kB,EAEE21f,EAAUvxb,EAAU5/D,MAAMkkG,KAAWtlG,KAAI,SAACQ,GAAD,OAAWjF,OAAOiF,EAAlB,IAEtC5L,EAAI,EAAGA,EAAI29f,EAAQ15f,OAAQjE,IAE5BgI,OADW3B,IAAX2B,EACS0kB,EAAKixe,EAAQ39f,IAEbgI,EAAOwjE,MAAMmyb,EAAQ39f,IAItC,OAAOgI,CACV,CAEM,SAAS41f,IAAoB7pf,EAAO2Y,GACvC,IAAMmxe,EAAgB,IAAI5B,IAAqBlof,GAAOsB,OACvByof,EAAkB/pf,EAAzC2kf,sBACuBtsb,EAC3Byxb,EAAcE,gBADVrF,sBAGR,GAAImF,EAActB,cAAe,CAC7B,IAAMvxf,EAAWmpG,IAAY/nC,EAAW1/C,GACxC,OAAQmxe,EAAcvB,oBAClB,IAAK,QACD,MAAO,aACX,IAAK,SACD,OAAIwB,EAAc75f,SAAWmoE,EAAUnoE,SAIf,WAApB8P,EAAMi4D,KAAKhrE,MAAqBorE,EAAUnoE,OAAS,GAInD65f,EAAc/4f,OAAO,OAASqnE,EAAUrnE,OAAO,MAPxC,aAWU,MAAdqnE,GACHA,EAAUt+D,SAAV,UAAsB4iG,IAAtB,MACE,gBACA,oBACV,IAAK,QACD,OAAIotZ,EAAc/4f,OAAO,KAAOqnE,EAAUrnE,OAAO,GACtC,kBAEMsB,IAAb2E,EACkBrE,OACdylE,EAAU5/D,MAAMkkG,KAAW7rG,OAEZmG,EAAS/G,OAAS,EAC/B,oBACA,kBAGkB,WAApB8P,EAAMi4D,KAAKhrE,MACXorE,EAAUnoE,OAAS,EAEZ,aAGJ,kBAKtB,CAED,MAAO,CAAC,cAAc,EACzB,CAoFM,SAAS+5f,IAAuBC,EAAW5sV,GAC9C,IAAM6sV,EAAiBD,EAAUzxf,MAAMkkG,KACjCytZ,EAAgB9sV,EAAS7kK,MAAMkkG,KAErC,OAAOwtZ,EAAe,KAAOC,EAAc,EAC9C,CCXD,QAtJA,WAEI,MAAgCr+Z,KAAxBhgB,EAAR,EAAQA,UAAWkB,EAAnB,EAAmBA,SAEnB,IAA0B+Y,KAA1B,GAAOjpF,EAAP,KAAck1E,EAAd,KAEMs/C,GAAWt5F,EAAAA,EAAAA,QAAO,MANX,kCAqBb,8GAC0B0hU,IAAW5tR,GADrC,cACU2la,EADV,gBAEwB1ja,GAAef,GAFvC,OAEU2P,EAFV,OAGUjkE,EAAO,GAHjB,IAKyB+4d,GALzB,IAKI,IALJ,iBAKer7J,EALf,QAMcg0K,EAAa,CACf51e,GAAI4hU,EAAO7/T,IACX0tE,WAAYmyP,EAAOqjB,WACnBzsW,KAAM,SACNskF,UAAU,EACVqL,MAAOA,EAAMjkE,KAAK/f,QAAO,SAAA0lE,GAAI,OAAIA,EAAK2P,WAAaooQ,EAAO7/T,GAA7B,KAEjCmC,EAAK9oB,KAAKw6f,EAblB,EAKI,uBAA+B,GALnC,0DAeW1xe,GAfX,4CArBa,wBAuGb,OA/FA7H,EAAAA,EAAAA,YAAU,YARG,2CAST4xH,GACKl0I,MAAK,SAAAmqB,GACFs5D,EAAS,CACLhlF,KAAMq9f,GACNj6e,QAASsI,GAEhB,IACAtH,OAAM,SAAAtf,GAEN,GACR,GAAE,KAqFC,kBAAK2hB,UAAU,QAAf,WACI,kBAAKA,UAAU,4DAAf,WACI,oCACA,qBAAQA,UAAU,iCAAiChU,QA3D/D,WACIuyE,EAAS,CACLhlF,KAAMq9f,IAEb,EAuDW,WACI,eAAG52e,UAAU,qBADjB,kBAKA3W,EAAMynF,uBACN,UAAC,IAAD,IAGAznF,EAAM0nF,qBACN,UAAC,IAAD,IAGA1nF,EAAM4nF,uBACN,UAAC,IAAD,KAEJ,gBAAIjxE,UAAU,SACd,UAAC,IAAD,IAEI3W,EAAM6/E,OAAS7/E,EAAM6/E,MAAM1sF,OAAS,IACpC,iBAAKwjB,UAAU,OAAf,UACI,WAAC,GAAD,YACI,UAAC,IAAD,CACIA,UAAU,mBACV+iH,YAAY,WACZ4tX,aAAa,EACbt4X,WAAW,EACXpzG,KAAM5b,EAAM6/E,MACZopB,YAhGxB,SAAoBhmG,GACQ,WAApBA,EAAMi4D,KAAKhrE,MACXglF,EAAS,CACLhlF,KAAMq9f,GACNj6e,QAASrQ,EAAMi4D,KAAKoY,WAG/B,EA0FuB+jD,cAlFxB,SAA2Bp0H,EAAOi4D,GACX,gBAAfj4D,EAAM/S,OACN+S,EAAMO,iBACN0xE,EAAS,CACLhlF,KAAMq9f,GACNj6e,QAAS,CACLiqC,OAAQ,CAAEgN,KAAMtnD,EAAMq6G,QAAShzD,IAAKrnD,EAAMs6G,SAC1CziH,MAAOogE,EAAKoY,aAI3B,EAwEuBy1a,eAtExB,SAAwB9lf,GACpB,IAAMqmE,EAAOwjb,IAAoB7pf,EAAOjD,EAAM6/E,OAC9C20C,EAASn5H,SAAS65D,KACdjyD,EAAMu8G,MAAQ,IACdv8G,EAAMw8G,MAAQ,IACdx8G,EAAMi4D,KAAK7gC,KACXivC,EAEP,EA+DuB0/a,cA7DxB,SAAuB/lf,GACnBuxH,EAASn5H,SAASkgW,OAClB,IAAMwxJ,EAAgB,IAAI5B,IAAqBlof,GAAOsB,OAChDipf,EAAuBT,EAActB,eAAiByB,IACxDH,EAAcjtZ,OAAQitZ,EAAc3B,YAExC,GACI2B,EAActB,eACuB,UAArCsB,EAAcvB,qBAAmCgC,EAClD,CACC,IAAMC,EDbX,SAAkCxqf,EAAO2Y,GAC5C,IAAMmxe,EAAgB,IAAI5B,IAAqBlof,GAAOsB,OAEtD,GAAIwof,EAActB,cAAe,CAC7B,IAAQ3rZ,EAAuBitZ,EAAvBjtZ,OAAQsrZ,EAAe2B,EAAf3B,WACV9hb,EAAOwjb,IAAoB7pf,EAAO2Y,GAClC4xe,EAAuBN,IACzBptZ,EACAsrZ,GAGEsC,EAAuBrqZ,IACzB+nZ,EACAxve,GAGE+xe,EAAkBvC,EACnB1vf,MAAMkkG,KACNtlG,KAAI,SAACQ,GAAD,OAAWjF,OAAOiF,EAAlB,IACH8yf,EAAcD,EAAgBA,EAAgBx6f,OAAS,GAE7D,GAAIq6f,EAAsB,CACtB,IAAMz3f,EAASk2H,IAAWm/X,EAAYxve,GAChC2iH,EAAUtS,IAAWnsB,EAAQlkF,GACnC,MAAO,CACH7lB,OAAAA,EAAQwoI,QAAAA,EACRivX,sBAAsB,EACtBK,YAAa93f,EAAOmuC,MAAO4pd,aAAcvvX,EAAQr6F,MAExD,CAAM,GAAa,eAATolC,EAAuB,CAC9B,IAAMykb,EAAgBhB,EAAcvB,mBAE9Bz1f,EAASk2H,IAAWm/X,EAAYxve,GAChC2iH,EAAUtS,IAAWnsB,EAAQlkF,GAE7Boye,EACFN,EAAqBE,EAAc,GACjCK,EACFP,EAAqBE,EAAc,GAEnC1pd,EAAQ,IACR2pd,EAAcv8d,SAASv7B,EAAOmuC,OAC9Bgqd,EAAqB58d,SAAQ,OAAC08d,QAAD,IAACA,OAAD,EAACA,EAAqB9pd,OACnDiqd,EAAoB78d,SAAQ,OAAC28d,QAAD,IAACA,OAAD,EAACA,EAAqB/pd,OA8BtD,MA5BsB,WAAlB6pd,EACoB,IAAhBH,GACA1pd,EAAQnuC,EAAOmuC,MACX8pd,EACAH,GAAeA,EAAcK,GAAsB,EAEnDL,GAAe,MAGnBD,IACAF,EAAqBv6f,OAAS,GAE9B+wC,EAAQnuC,EAAOmuC,MACf2pd,GAAe,MAEf3pd,GAAS2pd,EAAcM,GAAqB,EAI5Cjqd,EADA0pd,IAAgBF,EAAqBv6f,OAAS,EACtC06f,EAAc,MAEbK,EAAqBL,GAAe,EAO9C,CACH93f,OAAAA,EAAQwoI,QAAAA,EACRivX,sBAAsB,EACtBK,YANJA,EAAcj4f,OAAOi4f,GAMJC,aALjB5pd,EAAQtuC,OAAOsuC,GAOlB,CACJ,CACJ,CCnE2Bkqd,CAAyBnrf,EAAOjD,EAAM6/E,OACtDvO,GAAWm8a,EAAQ13f,OAAO0jB,IAAK,CAAEyqB,MAAOupd,EAAQI,cAChDv8a,GAAWm8a,EAAQlvX,QAAQ9kH,IAAK,CAAEyqB,MAAOupd,EAAQK,eACjD,IAAMO,EAAgB1C,IAClB1of,EAAM2kf,sBACN5nf,EAAM6/E,MACNkta,EAAcvB,mBACduB,EAAcE,gBAAgBrF,uBAElC1ya,EAAS,CACLhlF,KAAMq9f,GACNj6e,QAAS+6e,GAEhB,CACJ,KAuCmB,UAAC3B,IAAD,CAAkBhqf,IAAK,SAAA4rf,GACnB95X,EAASn5H,SAAWizf,CACvB,WAMxB,ECjKD,SAAS9E,IAAiBxzf,GAgCtB,OACI,mBACI2gB,UAAU,cACVhU,QAAS3M,EAAMiiK,UACf5gC,cARR,SAA2B3oI,GACvBsH,EAAM+3H,kBAAkBr/H,EAAGsH,EAAMklE,KACpC,EAGG,UAKkC,oBAA7BllE,EAAMklE,KAAKsa,eACqB,kBAA7Bx/E,EAAMklE,KAAKsa,eACkB,kBAA7Bx/E,EAAMklE,KAAKsa,eACkB,QAA7Bx/E,EAAMklE,KAAKsa,eACX,kBACI7+D,UAAU,oBACVhU,QAAS,SAACM,GAAD,OACLjN,EAAMu4f,eAAetrf,EAAOjN,EAAMklE,KAD7B,EAFb,UAMI,eAAGvkD,UAAU,eAAkB,QAGnC,qBAlBR,QAqBI,kBAAMA,UAAU,iBAAhB,UACI,eAAGA,UArDG,CACV,gBAAiB,uBACjB,kBAAmB,qBACnB,aAAc,iBACd63e,QAAS,iBACT1xb,KAAM,iBACN2xb,OAAQ,qBACRC,MAAO,2BACP7+O,MAAO,eACPx7G,SAAU,kBACV,cAAe,gBACf,gBAAiB,aACjBs6V,IAAK,aACLC,QAAS,mBACTv5I,QAAS,eACTluN,KAAM,0BACN0nW,KAAM,sBACN,eAAgB,sBAChBC,UAAW,iBACXC,QAAS,iBACTC,WAAY,mBAGHh5f,EAAMklE,KAAKsa,gBAAkB,sBAQ1C,OAyBKx/E,EAAMklE,KAAKnG,QACR,0BAAM/+D,EAAMklE,KAAK7gC,QAEjB,2BAAOrkC,EAAMklE,KAAK7gC,SAIjC,CAyBD,QAvBA,SAA4B0td,GACxB,OACI,UAACQ,IAAD,SACSR,GADT,IAEIT,aAAa,EACbpsb,KAAM,SAACllE,GAAD,OACF,UAAC,IAAD,CACIklE,KAAMllE,EAAMklE,KACZ+8F,UACI8vV,EAAc1wX,cAElBk3X,eACIxG,EAAcwG,eAElBxgY,kBACIg6X,EAAc1wX,eAVpB,IAgBjB,EC8GD,QA5LA,WAGI,QAAyDliD,KAAzD,UAASjD,EAAT,EAASA,WAAYsB,EAArB,EAAqBA,qBAAwB0B,EAA7C,KACSitP,EAAT,EAAyBl5O,KAAzB,MACMxX,EAAasd,GAAmB,cAGhCkga,GAAwB/zd,EAAAA,EAAAA,QAAO,MAG/BkuD,EAAeF,KAGrB,KAA0ChtE,EAAAA,EAAAA,UAAS,IAAnD,GAAOq4D,EAAP,KAAsB26a,EAAtB,KACA,KAA0Chze,EAAAA,EAAAA,UAAS,IAAnD,GAAOs5D,EAAP,KAAsBwsP,EAAtB,KACA,KAAkD9lT,EAAAA,EAAAA,UAAS,IAA3D,GAAO+lT,EAAP,KAA0BC,EAA1B,KAGA,KAAsEhmT,EAAAA,EAAAA,WAAS,GAA/E,GAAOize,EAAP,KACA,GADA,KACA,GAA0Djze,EAAAA,EAAAA,WAAS,GAAnE,IAAOkze,EAAP,KACA,GADA,KACA,GAAoClze,EAAAA,EAAAA,WAAS,GAA7C,IAAO6/d,EAAP,KACA,GADA,KACA,GAA4C7/d,EAAAA,EAAAA,WAAS,GAArD,IAAOmze,EAAP,KAtB0B,kCAsE1B,WAAkCpsf,GAAlC,2FAEQA,EAAMlN,OAAOuwC,UAAW,EAClB1rB,EAAa,CACf25D,cAAAA,EAAeiB,cAAAA,GAEb1F,EAASsZ,EAAa3vE,KAAO2vE,EAAa1xE,GANxD,SAOgC65D,GACpBzB,EAAQ0D,EAAsB/B,EAAY72D,GARtD,OAOcusC,EAPd,OAUQ+tB,EAAS,CACLhlF,KAAMoiF,GACNh/D,QAAS6zC,IAEb+tB,EAAS,CACLhlF,KAAMuiF,KAEV0vP,EAAa,CACTjyU,KAAM42F,GACNxzE,QAAS,CACLmgE,SAAU2V,EAAa3V,SACvB3D,OAAQsZ,EAAa3vE,IACrB0tC,UAAWA,KAtB3B,6GAtE0B,sBAqH1B,OA/FA,MAEApzC,EAAAA,EAAAA,YAAU,WACN,IAAI8uT,EAAe,GACnB,GAAIrvP,IAAyB4V,EAAa3vE,IAElCopT,EAD6B,kBAA7Bz5O,EAAanZ,YACEmC,GAAsBgX,EAAanZ,aAAap0E,QAAO,SAAA3L,GAAI,MAAa,QAATA,CAAJ,IAE3DkiF,GAAsBgX,EAAanZ,kBAItD,OADwBgC,GAAuBC,EAAY,KAAMsB,GACzCgC,eACpB,IAAK,gBACDqtP,EAAe,CAAC,OAChB,MACJ,IAAK,gBACDA,EAAe,CAAC,mBAChB,MACJ,QAEQA,EAD6B,kBAA7Bz5O,EAAanZ,YACEmC,GAAsBgX,EAAanZ,aAAap0E,QAAO,SAAA3L,GAAI,MAAa,QAATA,CAAJ,IAE3DkiF,GAAsBgX,EAAanZ,aAKlEiyP,EAAqBW,GACrBqsL,EAAiBrsL,EAAa,IAC9Bb,EAAiBa,EAAa,GACjC,GAAE,KAiEC,UAAC,GAAD,CACIp+P,MAAM,uBACNrN,QAAS,kBAAM8d,EAAS,CAAEhlF,KAAMuiF,IAAvB,EAFb,UAII,8BACI,iBAAK97D,UAAU,iCAAiC+sD,UAAQ,EAAxD,kBAGCyrb,IACG,kBAAMx4e,UAAU,cAAhB,qDAIJ,UAACu6F,GAAD,CACIxC,YAAY,wBACZz/G,MAAOumF,EACP7+D,UAAU,sBACViF,KAAMqmT,EACN/nQ,SA7EhB,SAA6Bj3D,GACzB++T,EAAiB/+T,EAAMlN,OAAO9G,OAC9BiggB,EAAiBjsf,EAAMlN,OAAO9G,MACjC,EA2Eeq3C,SAAU8od,KAGd,kBAAKz4e,UAAU,4BAAf,WACI,iBAAKA,UAAU,aAAa+sD,UAAQ,EAApC,oBACCq4a,IACG,kBAAMple,UAAU,cAAhB,oDAIH04e,IACG,mBAAO14e,UAAU,cAAjB,0DAKR,mBACI09F,UAAU,KACV/gH,KAAK,YACLqjB,UAAU,yBACVujD,SAtGhB,SAA6Bj3D,GACzBisf,EAAiBjsf,EAAMlN,OAAO9G,MACjC,EAqGeA,MAAOslF,KAEX,WAAC,GAAD,CAAkBwH,OAAO,MAAzB,WACI,oBACI7rF,KAAM,SACNyS,QAnGpB,WACIuyE,EAAS,CACLhlF,KAAMuiF,IAEb,EAgGmB97D,UAAU,oBAHd,qBAOA,oBACI+0F,WAAW,EACXx7G,KAAK,SACLyS,QA3KM,4CA4KNgU,UAAU,kBACV2vB,SAC6B,KAAzBiuC,EAAcjkE,QACdyre,GACAoT,EAEJzsf,IAAKusf,EAVT,2BAkBnB,ECrED,QApHA,WAEI,QAA0F95a,KAA1F,UAASxB,EAAT,EAASA,gBAAiBC,EAA1B,EAA0BA,kBAAmBC,EAA7C,EAA6CA,qBAAwB+1a,EAArE,KAEMz0b,GAAQj6B,EAAAA,EAAAA,QAAO,MASrB,SAAS0vd,EAAkBl8f,GACD,OAAlBymE,EAAMv1D,SAAqBu1D,EAAMv1D,QAAQqwF,SAASvhG,EAAEqH,SAChD49E,GACAg3a,GAGX,CAqDD,SAASA,IACLf,EAAkB,CACd15f,KAAM0iF,GACNt/D,QAAS,CAAC,GAEjB,CAED,OA1EAS,EAAAA,EAAAA,YAAU,WAGN,OAFAouB,SAASu0B,iBAAiB,QAASk0b,GAE5B,WACHzod,SAASy0B,oBAAoB,QAASg0b,EACzC,CACJ,GAAE,CAACj3a,KAqEA,UAACna,GAAD,CACInE,SAAS,EACTzjC,MAAO,CAAE84B,MAAO,SAChBwK,KAAMye,EACNp2B,OAAQq2B,EAJZ,UAMI,iBAAKj9D,UAAU,QAAQjU,IAAK,SAAAmof,GAAI,OAAI11b,EAAMv1D,QAAUirf,CAApB,EAAhC,UACI,WAACljZ,GAAD,CACI19C,UAAQ,EACRr4B,MAAO,CAAEuhB,QAAS,eAAgBuX,MAAO,QACzCwkC,SAnChB,SAA8BjsF,GAC1B,OAAOA,EAAM68F,QACT,IAAK,IAhBT8pZ,EAAkB,CACd15f,KAAM2iF,GACNv/D,QAASugE,IAgBL,MACJ,IAAK,IAZTh3D,QAAQnL,IAAI,QAcJ,MACJ,IAAK,IAXTmL,QAAQnL,IAAI,SAiBZi5e,GACH,EAiBW,WAOQ,UAAC3pZ,GAAD,CAAU3mE,KAAK,YAIf,UAAC2mE,GAAD,CAAU3mE,KAAK,WAIf,UAAC2mE,GAAD,CAAU3mE,KAAK,SAImC,OAAlDlkB,aAAagB,QAAQ,0BAC6B,KAAlDhB,aAAagB,QAAQ,0BACrB,UAAC6pF,GAAD,CAAU3mE,KAAK,UAAa,WAMnD,EC1ED,QA5CA,WAEI,QAAwE86C,KAAxE,UAASjD,EAAT,EAASA,WAAY6B,EAArB,EAAqBA,sBAAyBu7a,EAA9C,KAGA,GAFA,EAA8Brma,KAA9B,MAEA,GAAkC/sE,EAAAA,EAAAA,UAAS,CAAC,GAA5C,IAAOirC,EAAP,KAAkBooc,EAAlB,KAEMnma,EAAeF,KAWrB,SAAS8xO,IACLs0L,EAAuB,CACnBp/f,KAAM2iF,IAEb,CAtB4B,kCAwB7B,8FACUjB,GAAgBwX,EAAa3vE,IAAK0tC,EAAUzvC,IADtD,OAEI43e,EAAuB,CACnBp/f,KAAM,mBACNojB,QAAS6zC,EAAUmsB,YAEvB0nP,IANJ,4CAxB6B,sBAiC7B,OAxBAjnT,EAAAA,EAAAA,YAAU,WACN,GAAKggE,EAAL,CAIA,IAAM5sB,EAAY8qB,GAAuBC,EAAY,YAAa6B,GAClEw7a,EAAapoc,EAFZ,MAFGooc,EAAa,CAAC,EAKrB,GAAE,CAACx7a,KAkBA,UAAC,GAAD,CACIqkN,MAAM,mBACN4iC,mBAAoBA,EACpB3hU,QAAO,8CAAyC8tD,EAAUotB,cAAnD,eACP0mP,SAtCqB,2CAuCrBpuN,SAAUmuN,EACVE,iBAAiB,UAE5B,ECGD,QA5CA,WAEI,QAAuCjyO,KAAvC,MAASpJ,EAAT,EAASA,MAAOuH,EAAhB,EAAgBA,kBAChB,IAAyEjS,KAAzE,UAASjD,EAAT,EAASA,WAAYmB,EAArB,EAAqBA,uBAA0Bi8a,EAA/C,KAEA,KAAkCpze,EAAAA,EAAAA,UAAS,CAAC,GAA5C,GAAOirC,EAAP,KAAkBooc,EAAlB,KAEM99a,EAAasd,GAAmB,cAChC3F,EAAenB,GAAiBpI,EAAOuH,GACvCm+C,EAAsBl8C,GAAuBD,EAAa3V,SAAU2V,EAAa3vE,KAWvF,SAAS+1e,IACLF,EAAuB,CACnBp/f,KAAM4iF,IAEb,CAxB2B,kCA0B5B,sGAEyCjB,GAAeuX,EAAa3vE,IAAK0tC,EAAUzvC,GAAI+5D,GAFxF,gBAEkBgD,EAFlB,EAEY74D,KACR2pH,EAAoBp+E,EAAUzvC,GAAI+8D,GAClC+6a,IAJJ,4CA1B4B,sBAiC5B,OAtBAz7e,EAAAA,EAAAA,YAAU,WACN,GAAKs/D,EAAL,CAIA,IAAMlsB,EAAY8qB,GAAuBC,EAAY,YAAamB,GAClEk8a,EAAapoc,EAFZ,MAFGooc,EAAa,CAAC,EAKrB,GAAE,CAACl8a,KAgBA,UAAC,GAAD,CACI+kN,MAAM,kBACN4iC,mBAAoBw0L,EACpBn2f,QAAO,6CAAwC8tD,EAAUotB,cAAlD,eACP0mP,SAtCoB,2CAuCpBpuN,SAAU2iZ,EACVt0L,iBAAiB,SAE5B,EC2HD,IC5KWu0L,ID4KX,IA5JA,WAEI,IAAMrma,EAAeF,KACfgB,EAAoB9U,KAE1B,IAA0BD,KAA1B,GAAOn1E,EAAP,KAAck1E,EAAd,KACMs/C,GAAWt5F,EAAAA,EAAAA,QAAO,MACxB,IAMK0xD,KANL,MACIhH,EADJ,EACIA,2BACAC,EAFJ,EAEIA,8BACAC,EAHJ,EAGIA,qBACAC,EAJJ,EAIIA,wBACAC,EALJ,EAKIA,wBAEJ,IAA0DynB,KAA1D,GAAOC,EAAP,KAA+BC,EAA/B,KAEMy3B,EAAgBl4C,KAChBq4C,EAAsBl8C,GAAsB,OAACD,QAAD,IAACA,OAAD,EAACA,EAAc3V,SAAf,OAAyB2V,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAc3vE,KACnFi2e,EtnCFH,WACH,IAASx6a,EAAT,EAAqB+T,KAArB,MAaA,OAXA,SAAoBxV,EAAU3D,EAAQl1D,GAClCs6D,EAAS,CACLhlF,KAAM02F,GACNtzE,QAAS,CACLmgE,SAAAA,EACA3D,OAAAA,EACAl1D,WAAAA,IAGX,CAGJ,CsnCbgC+0e,GAiB7B,SAASC,EAAwB3sf,EAAO+sG,GACpC96B,EAAS,CACLhlF,KAAMuiF,GACNn/D,QAAS,CACLmgE,SAAUu8B,EAAeA,EAAat4F,GAAM0xE,EAAa3vE,KAAO2vE,EAAa1xE,KAGxF,CA1CiB,kCA2FlB,WAA4BzU,GAA5B,0EACQ6qG,GAAiB,IACjBloB,GAA8BC,GAAiCC,GAAwBC,GAA2BC,GAF1H,gCAG+B0nB,EAAuB,CAC1CjpC,MAAO,kBACPg0B,QAAS,qJACT4T,kBAAmB,OACnBD,iBAAkB,aAClBQ,UAAWijZ,IARvB,OAGQ/hZ,EAHR,OAUQH,IAVR,OAYQG,GACA54B,EAAS,CACLhlF,KAAMwiF,GACNp/D,QAASrQ,EAAMi4D,KAAKoY,YAfhC,4CA3FkB,+BA+GHu8a,IA/GG,iEA+GlB,oGACmCzqX,IADnC,OACU53C,EADV,OAEI+3C,EAAoBr7C,EAAkBxyE,GAAI81E,GAF9C,4CA/GkB,sBAoHlB,OAhGAz5E,EAAAA,EAAAA,YAAU,WACFq1E,GAAgBA,EAAalX,YAC7BgD,EAAS,CAAEhlF,KAAMmiF,GAAgB/+D,QAAS81E,EAAalX,aAInDkX,GAAgBc,GAAqBd,EAAa3vE,MAAQywE,EAAkBpa,QAC5EoF,EAAS,CAAEhlF,KAAMwiF,GAAwBp/D,QAAS,OAE9C81E,GAAiBA,EAAalX,aACtCgD,EAAS,CAAEhlF,KAAMmiF,GAAgB/+D,QAAS,KAC1C4hE,EAAS,CAAEhlF,KAAMwiF,GAAwBp/D,QAAS,MAEzD,GAAE,CAAC81E,KAoFA,6BACI,kBAAKzyE,UAAU,4DAAf,WACI,yCACA,qBAAQA,UAAU,iCAAiChU,QAASitf,EAA5D,WACI,eAAGj5e,UAAU,qBADjB,uBAKA3W,EAAMuzE,yBACN,UAAC,IAAD,IAGAvzE,EAAM8zE,4BACN,UAAC,IAAD,IAGA9zE,EAAMq0E,2BACN,UAAC,IAAD,KAEJ,UAAC,IAAD,KACA,UAAC,IAAD,CACIz4D,KAAM5b,EAAMkyE,WACZwnD,YAAY,WACZ5+D,UAAU,gBACVmwO,cAAc,WACdq8M,aAAa,EACbt4X,WAAW,EACX/lB,YAhJM,4CAiJNouB,cA9FZ,SAA2Bp0H,EAAOi4D,GAC9Bj4D,EAAMO,iBACF03D,GACAga,EAAS,CACLhlF,KAAM0iF,GACNt/D,QAAS,CACLiqC,OAAQ,CAAEgN,KAAMtnD,EAAMq6G,QAAShzD,IAAKrnD,EAAMs6G,SAC1CziH,MAAOogE,EAAKoY,YAI3B,EAoFWqjD,eAtGZ,SAA4B1zH,GACxBiyE,EAAS,CACLhlF,KAAMyiF,GACNr/D,QAASrQ,EAAMi4D,KAAKoY,WAE3B,EAkGWi7a,eAAgBqB,EAChB7G,eApFZ,SAAwB9lf,GACE,IAAIkof,IAAqBlof,GAAOsB,OAEtDiwH,EAASn5H,SAAS65D,KACdjyD,EAAMu8G,MAAQ,IACdv8G,EAAMw8G,MAAQ,IACdx8G,EAAMi4D,KAAK7gC,KAElB,EA6EW2ud,cA3EZ,SAAuB/lf,GACnBuxH,EAASn5H,SAASkgW,OAClB,IAAMwxJ,EAAgB,IAAI5B,IAAqBlof,GAAOsB,OACtD,GAAIwof,EAActB,cAAe,CAC7B,IAAM4C,EAAgB1C,IAClB1of,EAAM2kf,sBACN5nf,EAAMkyE,WACN66a,EAAcvB,mBACduB,EAAcE,gBAAgBrF,sBAC9B,KACA,YAEJt2a,GAAW8X,EAAa3vE,IAAK,CAAEy4D,WAAYm8a,IAC3CqB,EAAqBtma,EAAa3V,SAAU2V,EAAa3vE,IAAK,CAAEy4D,WAAYm8a,GAC/E,CACJ,KA8DO,UAAC3B,IAAD,CAAkBhqf,IAAK,SAAA4rf,GAAI,OAAI95X,EAASn5H,SAAWizf,CAAxB,MAGtC,EElKKwB,IAAAA,SAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAAAA,SAAAA,IAAAA,OAAAA,EAAAA,KAAAA,GAAAA,EAAAA,MAAAA,KAAAA,UAAAA,CA0BD,OA1BCA,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,SAAAA,MACF,WACI,OACI,UAAC76a,GAAD,WACI,UAAC+3B,GAAD,WACI,UAAC9mB,GAAD,WACI,WAACovV,IAAD,CACIK,MAAO,CACH,CAAE51X,KAAM,MAAOxL,IAAK,OAAQ8/X,aAAa,GACzC,CAAEt0X,KAAM,MAAOxL,IAAK,OAAQ8/X,aAAa,IAHjD,WAMI,iBAAK19Z,UAAU,QAAQib,MAAO,CAAE6+B,SAAU,UAA1C,UACI,UAAC,IAAD,OAEJ,iBAAK95C,UAAU,qBAAf,UACI,UAAC,IAAD,OAEJ,iBAAKA,UAAU,uBAAf,UACI,UAAC+/T,GAAD,cAO3B,OA1BCo5K,CAA0Br2d,EAAAA,WA6BhC,SDpCA,SAAWg2d,GACPA,EAAWA,EAAU,QAAc,GAAK,UACxCA,EAAWA,EAAU,KAAW,GAAK,OACrCA,EAAWA,EAAU,UAAgB,GAAK,WAH9C,EAIGA,MAAeA,IAAa,CAAC,IAIhC,IAAIM,IAAwB,WACxB,SAASA,EAAO9ggB,EAAO4T,EAAM3S,QACZ,IAATA,IAAmBA,EAAOu/f,IAAWO,WACzCp/f,KAAK3B,MAAQA,EACb2B,KAAKiS,KAAOA,EACZjS,KAAKV,KAAOA,CACf,CAkBD,OAhBA6/f,EAAOthgB,UAAU6L,IAAM,SAAUrF,GAC7B,OAAO,IAAI86f,EAAO96f,EAAGrE,KAAK3B,OAAQ2B,KAAKiS,KAC1C,EAEDktf,EAAOthgB,UAAUwhgB,MAAQ,SAAUh7f,GAC/B,OAAOA,EAAGrE,KAAK3B,MAAO2B,KAAKiS,KAC9B,EACDktf,EAAOthgB,UAAUyhgB,KAAO,SAAU3/f,EAAGuM,GACjC,OAAOvM,EAAEK,KAAK3B,MAAO2B,KAAKiS,KAC7B,EACDktf,EAAOthgB,UAAU2M,OAAS,SAAUxM,GAChC,OAAOgC,KAAK0J,KAAI,SAAU2kE,EAAIniE,GAAK,OAAOlO,EAAEqhgB,OAAM,SAAUl/f,EAAG22D,GAAM,OAAOuX,EAAG7jE,OAAO,CAACrK,GAAM,GAAI,GACpG,EACDg/f,EAAOthgB,UAAUmJ,SAAW,WACxB,MAAO,oBAAoBwD,OAAOxK,KAAK3B,MAAO,aAAamM,OAAOxK,KAAKiS,KAAM,MAChF,EACMktf,CACV,CAzB2B,GETxBI,IAAwB,WACxB,SAASA,EAAO1/e,EAAO2/e,QACL,IAAV3/e,IAAoBA,EAAQ,SAChB,IAAZ2/e,IAAsBA,EAAU,IACpCx/f,KAAK6f,MAAQA,EACb7f,KAAKw/f,QAAUA,EACfx/f,KAAKy/f,YAAc,EACnBz/f,KAAK0/f,cAAgB,CACxB,CA2BD,OA1BAH,EAAO1hgB,UAAUo/Q,IAAM,WACnB,OAAOj9Q,KAAKy/f,aAAez/f,KAAK6f,MAAMtd,MACzC,EAEDg9f,EAAO1hgB,UAAU6D,KAAO,WACpB,MAAO,CACHgvb,KAAM1wb,KAAK6f,MAAM7f,KAAKy/f,eACtBD,QAASx/f,KAAKw/f,QAAQx/f,KAAK0/f,iBAElC,EACDH,EAAO1hgB,UAAU8hgB,KAAO,WACpB,MAAO,CACHjvE,KAAM1wb,KAAK6f,MAAM7f,KAAKy/f,aACtBD,QAASx/f,KAAKw/f,QAAQx/f,KAAK0/f,eAElC,EACDH,EAAO1hgB,UAAU+hgB,UAAY,WACzB5/f,KAAKy/f,aACR,EACDF,EAAO1hgB,UAAUgigB,YAAc,WAC3B7/f,KAAK0/f,eACR,EACDH,EAAO1hgB,UAAU48L,IAAM,WACnBz6L,KAAKy/f,cACLz/f,KAAK0/f,eACR,EACMH,CACV,CApC2B,GCDxBpuP,IAAU,SAAU9yQ,GAAS,OAAQA,GAAS,IAAIyM,MAAM,GAAM,EAK9Dg1f,IAAwB,WACxB,SAASA,EAAO3wf,GACZnP,KAAKmP,MAAQA,CAChB,CAuBD,OAtBA2wf,EAAOjigB,UAAUsqP,IAAM,SAAUtoO,EAAO2/e,GAEpC,YADgB,IAAZA,IAAsBA,EAAU,IAChC3/e,aAAiB0/e,IACVv/f,KAAKmP,MAAM0Q,GAGX7f,KAAKmP,MAAM,IAAIowf,IAAOpuP,IAAQtxP,GAAQsxP,IAAQquP,IAE5D,EAEDM,EAAOjigB,UAAU6L,IAAM,SAAUhK,GAC7B,IAAI8a,EAAQxa,KACZ,OAAO,IAAI8/f,GAAO,SAAUnib,GAAU,OAAOnjE,EAAMrL,MAAMwuE,GAAQj0E,IAAIhK,EAAK,GAC7E,EAEDoggB,EAAOjigB,UAAUwhgB,MAAQ,SAAU3/f,GAC/B,IAAI8a,EAAQxa,KACZ,OAAO,IAAI8/f,GAAO,SAAUnib,GAAU,OAAOnjE,EAAMrL,MAAMwuE,GAAQ0hb,OAAM,SAAUl/f,EAAGR,GAAK,OAAOD,EAAES,GAAGgoP,IAAIxoP,EAAK,GAAI,GACrH,EACDmggB,EAAOjigB,UAAUkigB,UAAY,SAAUvhgB,GACnC,OAAOwB,KAAKmoP,IAAI3pP,GAAGc,OAASu/f,IAAWmB,OAC1C,EACMF,CACV,CA3B2B,GA8GjBx5e,IAAQ,SAAUuV,EAAO47R,GAAW,OAAO,IAAIqoM,KAAO,SAAUnib,GACvE,IAAI+yW,EAAO/yW,EAAOj8E,OAAOgvb,KACrBr0Z,EAAOR,EAAM60Z,GACjB,MArHmB,OAqHfA,GACAA,EAAO/yW,EAAOj8E,OAAOgvb,KACd,IAAIyuE,IAAO1nM,EAAQlyQ,QAAQmrY,GAAO/yW,IAKtC,IAAIwhb,IAHN9ie,EAGao7R,EAAQxwK,KAAK5qH,GAFTo7R,EAAQlyQ,QAAQmrY,GAEA/yW,EACzC,GAAI,EAIMsib,IAAU,SAAU17f,GAAQ,OAAO,IAAIu7f,KAAO,SAAUnib,GAC/D,IAAIqtS,EAASzmX,EAAKymX,OAAQk1I,EAAoB37f,EAAK27f,kBAC/CxvE,EAAO/yW,EAAOj8E,OAAOgvb,KACzB,OACW,IAAIyuE,IADXzuE,IAAS1lE,EACSk1I,EAEJxvE,EAFuB/yW,EAG5C,GAAI,EAIMwib,IAAa,SAAUC,GAAmB,OAAO,IAAIN,KAAO,SAAUnib,GAC7E,IAAI+yW,EAAO/yW,EAAOj8E,OAAOgvb,KACzB,OACW,IAAIyuE,IADXiB,EACkB1vE,EAEJ,GAFU/yW,EAG/B,GAAI,ECxIM0ib,IAAW,SAAUh/d,GAAQ,OAAOA,EAAKn2B,QAAO,SAAU61H,EAAKq/D,GAAU,OAJzDq3E,EAI4Er3E,EAALr/D,EAJvDs+X,OAAM,SAAUhxb,GAAM,OAAOopM,EAAG/tQ,KAAI,SAAUvJ,GAAK,OAAOkuE,EAAG7jE,OAAO,CAACrK,GAAM,GAAI,IAA7G,IAAcs3Q,CAIsF,GARpG,SAAUp5Q,GAAS,OAAO,IAAIyhgB,KAAO,SAAUnib,GAAU,OAAO,IAAIwhb,IAAO9ggB,EAAOs/E,EAAU,GAAI,CAQM6oZ,CAAO,IAAO,EAItH85B,IAAS,SAAUlgU,GAAU,OAAO,IAAI0/T,KAAO,SAAUnib,GAEhE,IADA,IAAIr3E,EAAS,IAAI64f,IAAO,GAAIxhb,IACpBA,EAAOs/L,OACX32Q,EAASA,EAAOkE,OAAO41L,EAAO+nD,IAAIxqK,IAEtC,OAAOr3E,CACV,GAAI,EClBDi6f,IAAgC,WAChC,SAASA,IACLvggB,KAAK67B,MAAQ,CAAC,EACd77B,KAAKgrX,OAAS,IACdhrX,KAAKinJ,KAAO,GACZjnJ,KAAKkggB,kBAAoB,IACzBlggB,KAAKoggB,iBAAkB,EACvBpggB,KAAKwggB,WAAa,GAClBxggB,KAAKyggB,aAAe,GACpBzggB,KAAK0ggB,UAAY,GACjB1ggB,KAAK2ggB,iBAAmB,EAC3B,CA2LD,OA1LAJ,EAAe1igB,UAAUmxJ,OAAS,SAAUrvI,GACxC,IAAIupD,EAAKvpD,EAAGsnI,KAAMA,OAAc,IAAP/9E,EAAgB,GAAKA,EAAIuD,EAAK9sD,EAAGqrW,OAAQA,OAAgB,IAAPv+S,EAAgB,GAAKA,EAAIkJ,EAAKh2D,EAAGugf,kBAAmBA,OAA2B,IAAPvqb,EAAgB,IAAMA,EAAIpuE,EAAKoY,EAAGkc,MAAOA,OAAe,IAAPt0B,EAAgB,CAAC,EAAIA,EAAIwxE,EAAKp5D,EAAGygf,gBAAiBA,OAAyB,IAAPrnb,GAAwBA,EAChS/4E,KAAKinJ,KAAOA,EACZjnJ,KAAKgrX,OAASA,EACdhrX,KAAKkggB,kBAAoBA,EACzBlggB,KAAK67B,MAAQA,EACb77B,KAAKoggB,gBAAkBA,EACvBpggB,KAAK4ggB,UACR,EACDL,EAAe1igB,UAAUgjgB,gBAAkB,SAAUC,QAC7B,IAAhBA,IAA0BA,EAAc,IAC5C,IAAIzigB,EAAQyigB,EAMZ,OALAT,IAASrggB,KAAK2ggB,kBACTx4Q,IAAI24Q,GACJxB,MAAK,SAAUyB,GAChB1igB,EAAQ0igB,EAASzzf,KAAK,GACzB,IACMjP,CACV,EACDkigB,EAAe1igB,UAAUmjgB,SAAW,SAAUF,QACtB,IAAhBA,IAA0BA,EAAc,IAC5C,IAAIzigB,EAAQyigB,EACZ,OAAK9ggB,KAAK0ggB,UAAUn+f,QAGpB89f,IAASrggB,KAAK0ggB,WACTv4Q,IAAI24Q,GACJxB,MAAK,SAAUyB,GAChB1igB,EAAQ0igB,EAASzzf,KAAK,GACzB,IACMjP,GAPIA,CAQd,EAIDkigB,EAAe1igB,UAAUojgB,QAAU,SAAUD,QACxB,IAAbA,IAAuBA,EAAW,IACtC,IAAI3igB,EAAQ2igB,EACZ,OAAKhhgB,KAAKwggB,WAAWj+f,QAGrB89f,IAASrggB,KAAKwggB,YACTr4Q,IAAI64Q,GACJ1B,MAAK,SAAU4B,GAChB7igB,EAAQ6igB,EAAO5zf,KAAK,GACvB,IACMjP,GAPIA,CAQd,EACDkigB,EAAe1igB,UAAUsjgB,UAAY,SAAUthf,EAAO2/e,EAAS4B,GAC3D,OAAIvhf,EAAMtd,OAASi9f,EAAQj9f,OAChBvC,KAAKqhgB,YAAYxhf,EAAO2/e,EAAS4B,GAErCphgB,KAAKshgB,aAAazhf,EAAO2/e,EAAS4B,EAC5C,EACDb,EAAe1igB,UAAU0jgB,YAAc,SAAUC,EAAQ91W,EAAU/oG,EAAOp3C,GACtE,IAAIlN,EAAQ,GACRiuJ,EAAY/gJ,EACZk2f,EAAe/1W,EAAS5gJ,MAAM,IAAIxH,MAAM,EAAGq/C,GAC3C++c,EAAch2W,EAAS5gJ,MAAM,IAAIxH,MAAMiI,GAS3C,OARA80f,IAASrggB,KAAKwggB,WAAWl9f,MAAMq/C,EAAOp3C,IACjC48O,IAAIq5Q,GACJlC,MAAK,SAAU4B,GAChB7igB,EAAQojgB,EACHj3f,OAAO02f,GACP12f,OAAOk3f,GACPp0f,KAAK,GACb,IACM,CACHg/I,UAAWA,EACXjuJ,MAAOA,EAEd,EACDkigB,EAAe1igB,UAAUwjgB,YAAc,SAAUxhf,EAAO2/e,EAAS4B,GAC7D,IAAI5mf,EAAQxa,KACR3B,EAAQ,GACRiuJ,EAAY80W,EACZO,EAAY9hf,EAAM/U,MAAM,IAAIxH,MAAM89f,GAClC3qT,EAAU52L,EAAM/U,MAAM,IAAIxH,MAAM,EAAG89f,GAAY9zf,KAAK,IACpDuhE,EAAO7uE,KAAKwggB,WAAWj+f,QAAUsd,EAAMtd,OAAS6+f,GAOpD,OANAf,IAASrggB,KAAKwggB,WAAWl9f,MAAM,EAAGurE,IAC7Bs5K,IAAI1xC,EAAS+oT,GACbF,MAAK,SAAU4B,GAChB50W,EAAY9xI,EAAMonf,eAAeV,EAAQ50W,GACzCjuJ,EAAQ6igB,EAAO12f,OAAOm3f,GAAWr0f,KAAK,GACzC,IACM,CACHg/I,UAAWA,EACXjuJ,MAAOA,EAEd,EACDkigB,EAAe1igB,UAAU+jgB,eAAiB,SAAU/hf,EAAOysI,GACvD,IAAIu1W,EAAYhif,EAAMysI,GAEtB,OADgBtsJ,KAAKwggB,WAAWl0W,GAAWyzW,UAAU8B,IACnCA,IAAc7hgB,KAAKgrX,OAG9B1+N,EAFIA,EAAY,CAG1B,EACDi0W,EAAe1igB,UAAUyjgB,aAAe,SAAUzhf,EAAO2/e,EAAS4B,GAC9D,IAAI5mf,EAAQxa,KACR3B,EAAQ,GACRiuJ,EAAY80W,EACZ3qT,EAAU52L,EAAMvc,MAAM,EAAG89f,GAY7B,OAXAf,IAASrggB,KAAKyggB,cACTt4Q,IAAI1xC,EAAS+oT,GACbH,OAAM,SAAU0B,GACjBz0W,EAAYy0W,EAASzzf,KAAK,IAAI/K,OAC9B,IAAIo/f,EAAYnC,EAAQl8f,MAAMgpJ,GAC9B,OAAO+zW,IAAS7lf,EAAMgmf,YACjBr4Q,IAAI44Q,EAASzzf,KAAK,IAAMq0f,EAAWnC,EAC3C,IACIF,MAAK,SAAU4B,GAChB7igB,EAAQ6igB,EAAO5zf,KAAK,GACvB,IACM,CACHg/I,UAAWA,EACXjuJ,MAAOA,EAEd,EACDJ,OAAOG,eAAemigB,EAAe1igB,UAAW,mBAAoB,CAChEsnB,IAAK,WACD,IAAe6lW,EAANhrX,KAAkBgrX,OAAQk1I,EAA1BlggB,KAAiDkggB,kBAC1D,MAAO,CACH36c,QAAS,SAAUlpB,GAAQ,OF7EZyle,EE6E2Bzle,EF7EV,IAAIyje,KAAO,SAAUnib,GAGjE,OADWA,EAAOgib,OAAOjvE,OACZoxE,GACTnkb,EAAO88G,MACA,IAAI0kU,IAAO2C,EAAQnkb,EAAQkhb,IAAWmB,UAY1C,IAAIb,IAAO2C,EAAQnkb,EAAQkhb,IAAWmB,QAChD,IAlBoB,IAAU8B,CE6EmC,EAClD76W,KAAM,SAAU5qH,GAAQ,OFtGZ93B,EEsG8B,CAAEymX,OAAQA,EAAQk1I,kBAAmBA,GFtGpD,SAAU7je,GAAQ,OAAO,IAAIyje,KAAO,SAAUnib,GAErF,IADA,IAAIqtS,EAASzmX,EAAKymX,OAAQk1I,EAAoB37f,EAAK27f,mBAC3Cvib,EAAOs/L,OAAO,CAClB,IAAIt9P,EAAKg+D,EAAOgib,OAAQjvE,EAAO/wa,EAAG+wa,KAAM8uE,EAAU7/e,EAAG6/e,QACrD,GAAI9uE,IAAS8uE,GAAWA,IAAYx0I,EAEhC,OADArtS,EAAO88G,MACA,IAAI0kU,IAAOn0I,EAAQrtS,EAAQkhb,IAAWz6W,MAEjD,GAAI/nH,EAAKn1B,KAAKwpb,GAEV,OADA/yW,EAAO88G,MACA,IAAI0kU,IAAOzuE,EAAM/yW,EAAQkhb,IAAWz6W,MAE/C,GAAIssS,IAASwvE,EAET,OADAvib,EAAO88G,MACA,IAAI0kU,IAAOn0I,EAAQrtS,EAAQkhb,IAAWz6W,MAEjDzmE,EAAOiib,WACV,CAED,OADAjib,EAAO88G,MACA,IAAI0kU,IAAOn0I,EAAQrtS,EAAQkhb,IAAWz6W,KAChD,GAAI,GEkF+G/nH,GFtGlG,IAAU93B,CEsGgG,EAEnH,EACD1F,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAemigB,EAAe1igB,UAAW,qBAAsB,CAClEsnB,IAAK,WACD,IAAI3K,EAAQxa,KACZ,MAAO,CACHulD,QAAS,SAAUlpB,GAAQ,OF/CVyle,EE+C2Bzle,EF/CV,IAAIyje,KAAO,SAAUnib,GACnE,OAAIA,EAAOs/L,MACA,IAAIkiP,IAAO,GAAIxhb,IAEfA,EAAOgib,OAAOjvE,OACZoxE,GACTnkb,EAAO88G,MAEJ,IAAI0kU,IAAO2C,EAAQnkb,GAC7B,IATsB,IAAUmkb,CE+CmC,EACpD76W,KAAM,SAAU5qH,GAAQ,OFnEpB,SAAU2uV,GAAU,OAAO,SAAU3uV,GAAQ,OAAO,IAAIyje,KAAO,SAAUnib,GACzF,MAAQA,EAAOs/L,OAAO,CAClB,IAAIt9P,EAAKg+D,EAAOgib,OAAQjvE,EAAO/wa,EAAG+wa,KAAM8uE,EAAU7/e,EAAG6/e,QACrD,GAAI9uE,IAAS1lE,GAAUw0I,IAAYx0I,EAE/B,OADArtS,EAAO88G,MACA,IAAI0kU,IAAOzuE,EAAM/yW,GAE5B,GAAIthD,EAAKn1B,KAAKwpb,GAEV,OADA/yW,EAAO88G,MACA,IAAI0kU,IAAOzuE,EAAM/yW,GAE5BA,EAAOiib,WACV,CAED,OADAjib,EAAO88G,MACA,IAAI0kU,IAAO,GAAIxhb,EACzB,GAAI,CAAG,CEoDuCokb,CAAOvnf,EAAMwwW,OAAb+2I,CAAqB1le,EAAQ,EAEnE,EACDx9B,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAemigB,EAAe1igB,UAAW,kBAAmB,CAC/DsnB,IAAK,WACD,IAAIxF,EAAK3f,KAAMgrX,EAASrrW,EAAGqrW,OAAQk1I,EAAoBvgf,EAAGugf,kBAAmBE,EAAkBzgf,EAAGygf,gBAClG,MAAO,CACH76c,QAAS,SAAUr5C,GAAK,OAAOi0f,IAAWC,EAAmB,EAC7Dn5W,KAAM,SAAU/6I,GAAK,OAAO+zf,IAAQ,CAAEj1I,OAAQA,EAAQk1I,kBAAmBA,GAAuB,EAEvG,EACDrhgB,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAemigB,EAAe1igB,UAAW,yBAA0B,CACtEsnB,IAAK,WACD,IAAI6lW,EAAShrX,KAAKgrX,OAClB,MAAO,CACHzlU,QAAS,SAAUr5C,GAAK,OAAOi0f,KAAW,EAAS,EACnDl5W,KAAM,SAAU/6I,GAAK,OAAO+zf,IAAQ,CAAEj1I,OAAQA,EAAQk1I,kBAAmB,IAAQ,EAExF,EACDrhgB,YAAY,EACZC,cAAc,IAElByhgB,EAAe1igB,UAAU+igB,SAAW,WAChC,IAAIpmf,EAAQxa,KACZsggB,IAAOh6e,IAAMtmB,KAAK67B,MAAO77B,KAAKgigB,mBACzB75Q,IAAInoP,KAAKinJ,MACTq4W,MAAK,SAAUlve,EAAQlkB,GACxBsO,EAAMgmf,WAAapwe,CACtB,IACDkwe,IAAOh6e,IAAMtmB,KAAK67B,MAAO77B,KAAKiigB,qBACzB95Q,IAAInoP,KAAKinJ,MACTq4W,MAAK,SAAUlve,EAAQlkB,GACxBsO,EAAMimf,aAAerwe,CACxB,IACDkwe,IAAOh6e,IAAMtmB,KAAK67B,MAAO77B,KAAKkigB,kBACzB/5Q,IAAInoP,KAAKinJ,MACTq4W,MAAK,SAAUlve,EAAQlkB,GACxBsO,EAAMkmf,UAAYtwe,CACrB,IACDkwe,IAAOh6e,IAAMtmB,KAAK67B,MAAO77B,KAAKmigB,yBACzBh6Q,IAAInoP,KAAKinJ,MACTq4W,MAAK,SAAUlve,EAAQlkB,GACxBsO,EAAMmmf,iBAAmBvwe,CAC5B,GACJ,EACMmwe,CACV,CAvMmC,GCFhC6B,IAAe,CACf,IAAK,aACL,IAAK,OACL,EAAK,OACL,EAAK,SACL,IAAK,aACL,EAAK,cACL,EAAK,IACL,EAAK,WACL,EAAK,iBAKLC,IAAc,WAAc,OAAO,CAAQ,EAc3CC,IAAY,SAAUC,EAAQC,GAC9B,KAAMD,MAAaC,EACf,OAAO,EAEX,GAAID,IAAWC,IAAYD,IAAWC,EAClC,OAAO,EAEX,IAAIvxU,GAAO,EACX,IAAK,IAAI/sL,KAAOq+f,EACZ,GAAIA,EAAOr+f,KAASs+f,EAAOt+f,GAAM,CAC7B+sL,GAAO,EACP,KACH,CAEL,GAAIA,EACA,IAAK,IAAI/sL,KAAOs+f,EACZ,IAAKD,EAAOpkgB,eAAe+F,GAAM,CAC7B+sL,GAAO,EACP,KACH,CAGT,OAAOA,CACV,ECtDGr2K,IAAyC,WACzC,IAAIi8C,EAAgB,SAAU52D,EAAGmJ,GAI7B,OAHAytD,EAAgB54D,OAAO2E,gBAClB,CAAEC,UAAW,cAAgBgE,OAAS,SAAU5G,EAAGmJ,GAAKnJ,EAAE4C,UAAYuG,CAAI,GAC3E,SAAUnJ,EAAGmJ,GAAK,IAAK,IAAIrJ,KAAKqJ,EAAOnL,OAAOJ,UAAUM,eAAeqB,KAAK4J,EAAGrJ,KAAIE,EAAEF,GAAKqJ,EAAErJ,GAAK,EAC9F82D,EAAc52D,EAAGmJ,EAC3B,EACD,OAAO,SAAUnJ,EAAGmJ,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI5H,UAAU,uBAAyBwD,OAAOoE,GAAK,iCAE7D,SAAS0tD,IAAO92D,KAAKpC,YAAcqC,CAAI,CADvC42D,EAAc52D,EAAGmJ,GAEjBnJ,EAAEpC,UAAkB,OAANuL,EAAanL,OAAOiB,OAAOkK,IAAM0tD,EAAGj5D,UAAYuL,EAAEvL,UAAW,IAAIi5D,EAClF,CACJ,CAd4C,GAezC9gB,IAAsC,WAStC,OARAA,IAAW/3C,OAAO8J,QAAU,SAAShK,GACjC,IAAK,IAAI4B,EAAGrB,EAAI,EAAGJ,EAAIsG,UAAUjC,OAAQjE,EAAIJ,EAAGI,IAE5C,IAAK,IAAIyB,KADTJ,EAAI6E,UAAUlG,GACOL,OAAOJ,UAAUM,eAAeqB,KAAKG,EAAGI,KACzDhC,EAAEgC,GAAKJ,EAAEI,IAEjB,OAAOhC,CACV,EACMi4C,IAASvxC,MAAMzE,KAAMwE,UAC/B,EAUGi+f,IAA6C,SAAUxnf,GAEvD,SAASwnf,EAA4Br9f,GACjC,IAAIoV,EAAQS,EAAOzb,KAAKQ,KAAMoF,IAAUpF,KAmFxC,OA/EAwa,EAAMpL,MAAQ,CAAC,EACfoL,EAAM4jG,SAAW,KAAK5zG,OAAOmlE,MAC7Bn1D,EAAMkof,SAAW,IAAInC,IACrB/lf,EAAMmof,WAAY,EAClBnof,EAAMoof,WAAa,CAAC,KAAM,MAC1Bpof,EAAM6iG,OAAS,KAIf7iG,EAAMg5D,MAAQ,WACNh5D,EAAM6iG,QACN7iG,EAAM6iG,OAAO7pC,OAEpB,EACDh5D,EAAMqof,aAAe,SAAUxwf,GAC3B,IAAIsN,EAAKtN,EAAMlN,OAAQi2I,EAAiBz7H,EAAGy7H,eAAgBt8B,EAAen/F,EAAGm/F,aACzEA,IAAiBs8B,IAGrB5gI,EAAMmof,WAAY,EAClBnof,EAAMoof,WAAa,CAACxnX,GAAkB,EAAGt8B,GAAgB,GAC5D,EACDtkG,EAAM4nI,gBAAkB,SAAU/vI,GAC9B,IAAIwN,EAAQxN,EAAM+6F,cACd/uG,EAAQwhB,EAAMxhB,MACdskD,EAAQnoC,EAAMoof,WAAW,IAAM,EAC/Br3f,EAAMiP,EAAMoof,WAAW,IAAM,EACjC,IAAKpof,EAAMpV,MAAM6hJ,KAIb,OAHAzsI,EAAMmof,WAAY,EAClBnof,EAAMoof,WAAa,CAAC,KAAM,WAC1Bpof,EAAMk5D,gBAAgBr1E,EAAOgU,GAGjC,IACI/L,EADAw6f,EAActmf,EAAMnc,MAExB,GAAImc,EAAMmof,UAAW,CACjBnof,EAAMmof,WAAY,EAClB,IAAIG,EAAYhC,EAAYv+f,OAASgJ,EACjC0B,EAAK5O,EAAMkE,OAASuggB,EACxBx8f,EAASkU,EAAMkof,SAASnB,YAAYljgB,EAAMiF,MAAMq/C,EAAO11C,GAAK6zf,EAAan+c,EAAOp3C,EACnF,MAEGjF,EAASkU,EAAMkof,SAASvB,UAAU9igB,EAAOyigB,EAAajhf,EAAMu7H,gBAAkB,GAElF5gI,EAAMoof,WAAa,CAACt8f,EAAOgmJ,UAAWhmJ,EAAOgmJ,WAC7C9xI,EAAMk5D,gBAAgBptE,EAAOjI,MAAOgU,EACvC,EACDmI,EAAMq3c,aAAe,SAAUx/c,GACtBmI,EAAMpL,MAAM4nD,UACbx8C,EAAM7I,SAAS,CAAEqlD,SAAS,IACtBx8C,EAAMpV,MAAM4yD,SACZx9C,EAAMpV,MAAM4yD,QAAQx4D,UAAKmF,EAAW,CAChCQ,OAAQqV,EACRy1D,eAAgB59D,EAChB2/D,YAAa3/D,EAAM2/D,cAIlC,EACDx3D,EAAMw3c,YAAc,SAAU3/c,GACtBmI,EAAMpL,MAAM4nD,UACZx8C,EAAM7I,SAAS,CAAEqlD,SAAS,IACtBx8C,EAAMpV,MAAM6yD,QACZz9C,EAAMpV,MAAM6yD,OAAOz4D,UAAKmF,EAAW,CAC/BQ,OAAQqV,EACRy1D,eAAgB59D,EAChB2/D,YAAa3/D,EAAM2/D,cAIlC,EACDx3D,EAAMi8D,YAAc,WACZj8D,EAAM3K,SACN2K,EAAM3K,QAAQ6mE,kBAAkBl8D,EAAMm8D,SAASC,MACzC,GACAp8D,EAAMpV,MAAMyxE,mBAAqB,GAE9C,EACDljB,GAAgBwB,IACT36C,CACV,CA4RD,OAlXAI,IAAU6nf,EAA6Bxnf,GAuFvChd,OAAOG,eAAeqkgB,EAA4B5kgB,UAAW,UAAW,CAgCpEsnB,IAAK,WACD,OAAOnlB,KAAKq9G,MACf,EACDx+G,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAeqkgB,EAA4B5kgB,UAAW,QAAS,CAIlEsnB,IAAK,WACD,YAAkCxgB,IAA9B3E,KAAKy1E,qBACEz1E,KAAKy1E,0BAEc9wE,IAArB3E,KAAKoF,MAAM/G,MACT2B,KAAKoF,MAAM/G,WAEQsG,IAArB3E,KAAKoP,MAAM/Q,MACT2B,KAAKoP,MAAM/Q,WAEesG,IAA5B3E,KAAKoF,MAAMwwB,aACT51B,KAAKoF,MAAMwwB,aAEf,EACV,EACD/2B,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAeqkgB,EAA4B5kgB,UAAW,WAAY,CAIrEsnB,IAAK,WACD,OAAOnlB,KAAK0igB,SAAS1B,SAAShhgB,KAAK3B,MACtC,EACDQ,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAeqkgB,EAA4B5kgB,UAAW,WAAY,CAIrEsnB,IAAK,WACD,IAAI27e,EAAc9ggB,KAAK3B,MACnBA,EAAQ2B,KAAK0igB,SAAS7B,gBAAgBC,GAK1C,MAAO,CACHhqb,iBAL+CnyE,IAAjC3E,KAAKoF,MAAMyxE,kBAMzBD,WAL8BjyE,IAArB3E,KAAKoF,MAAMwxE,MACpB52E,KAAKoF,MAAMwxE,QAAW52E,KAAK8yE,YAAcz0E,MACvC2B,KAAKoF,MAAM29f,iBAAmB/igB,KAAKoF,MAAM4lX,SAAsD,IAA5C81I,EAAYzhf,QAAQrf,KAAKoF,MAAM4lX,SAIpFh0S,cAAe34E,EAEtB,EACDQ,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAeqkgB,EAA4B5kgB,UAAW,iBAAkB,CAI3EsnB,IAAK,WACD,YAAqCxgB,IAA9B3E,KAAKoF,MAAM2tE,eACZ/yE,KAAKoF,MAAM2tE,eACX0vb,EAA4B/5b,aAAaqK,cAClD,EACDl0E,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAeqkgB,EAA4B5kgB,UAAW,WAAY,CAIrEsnB,IAAK,WACD,YAA+BxgB,IAAxB3E,KAAKoF,MAAM0tE,SACZ9yE,KAAKoF,MAAM0tE,SACX2vb,EAA4B/5b,aAAaoK,QAClD,EACDj0E,YAAY,EACZC,cAAc,IAElBb,OAAOG,eAAeqkgB,EAA4B5kgB,UAAW,OAAQ,CAIjEsnB,IAAK,WACD,OAAOnlB,KAAKoF,MAAM1C,IACrB,EACD7D,YAAY,EACZC,cAAc,IAKlB2jgB,EAA4B5kgB,UAAU4pE,mBAAqB,SAAUC,EAAW/7C,GAC5E,GAAI3rB,KAAK6P,SAAW7P,KAAKoP,MAAM4nD,SAAWrrC,EAAUqrC,QAAS,CACzD,IAAIr3C,EAAK3f,KAAK4igB,WAAYjgd,EAAQhjC,EAAG,GAAIpU,EAAMoU,EAAG,GAC9Cqjf,EAAgBt7b,EAAU4kF,UAC1B22W,EAAgBjjgB,KAAKoF,MAAMknJ,YACzB02W,GAAiBC,GAClBD,GAAiBC,IACbD,EAAcrgd,QAAUsgd,EAActgd,OAASqgd,EAAcz3f,MAAQ03f,EAAc13f,QACxFo3C,EAAQsgd,EAActgd,MACtBp3C,EAAM03f,EAAc13f,KAEV,OAAVo3C,GAA0B,OAARp3C,GAClBvL,KAAK6P,QAAQ8tG,kBAAkBh7D,EAAOp3C,EAE7C,CDnPY,IAAUnI,EAAM1B,EAAN0B,ECoPJskE,EDpPUhmE,ECoPC1B,KAAKoF,MDnPhChC,EAAKg9f,kBAAoB1+f,EAAK0+f,iBACjCh9f,EAAK6jJ,OAASvlJ,EAAKulJ,MACnB7jJ,EAAK4nX,SAAWtpX,EAAKspX,QACrB5nX,EAAK88f,oBAAsBx+f,EAAKw+f,mBAC/BoC,IAAUl/f,EAAKy4B,MAAOn6B,EAAKm6B,QCgPxB77B,KAAKkjgB,gBAETljgB,KAAKy2E,aACR,EAIDgsb,EAA4B5kgB,UAAU8pE,kBAAoB,WACtD3nE,KAAKkjgB,gBACLljgB,KAAKy2E,aACR,EAIDgsb,EAA4B5kgB,UAAUs5D,OAAS,WAC3C,IAAIx3C,EACAnF,EAAQxa,KACRkpE,EAAKlpE,KAAKoF,MAAOqnE,EAAKvD,EAAG/Z,KAAMA,OAAc,IAAPsd,EAAgBg2b,EAA4B/5b,aAAavZ,KAAOsd,EAAIkJ,EAAKzM,EAAGE,SAAUA,OAAkB,IAAPuM,EAAgB8sb,EAA4B/5b,aAAaU,SAAWuM,EAAIpuE,EAAK2hE,EAAGC,QAASA,OAAiB,IAAP5hE,EAAgBk7f,EAA4B/5b,aAAaS,QAAU5hE,EAC7SgyI,EAAUv5I,KAAKoF,MAAM0hB,IAAM9mB,KAAKo+G,SAChCrnC,GAAW/2E,KAAK+yE,gBAAkB/yE,KAAK22E,SAASC,MAChD51C,EAAQhhC,KAAKoF,MAAM47B,OAAS,CAAC,EAC7Bu1B,EAAaruD,EAAAA,cAAoB,OAAQ,CAAEw/B,IAAK1nC,KAAKoF,MAAMsiC,IAAK3hB,UAAWmvB,GAAW,2BAA4Bv1B,EAAK,CAAC,EACpHA,EAAG,WAAWnV,OAAOoqC,GAAeC,QAAQsa,IAASA,IAASA,EAC9DxvC,EAAG,WAAWnV,OAAO4+D,IAAaA,EAClCzpD,EAAG,aAAanV,OAAOoqC,GAAeK,WAAWk0B,IAAYA,IAAYA,EACzExpD,EAAG,cAAgBo3D,EACnBp3D,EAAG,cAAgB3f,KAAK8yE,SACxBnzD,EAAG,cAAgB3f,KAAKoF,MAAMswC,SAC9B/1B,GAAK3f,KAAKoF,MAAM2gB,WAAYib,MAAQhhC,KAAKoF,MAAMgyD,MACEp2B,EAA/CgV,IAAS,CAAE8jB,MAAO95D,KAAKoF,MAAM00D,OAAS94B,IAC5C94B,EAAAA,cAAoB,QAAS,CAAE5I,KAAM,OAAQu+G,aAAc,MAAOilC,YAAa,MAAOqgX,eAAgB,MAAOtgX,YAAY,EAAO98H,UAAW,gBAAiB1nB,MAAO2B,KAAK3B,MAAOyoB,GAAIyyH,EAAS,kBAAmBv5I,KAAKoF,MAAM2yE,eAAgB,mBAAoB/3E,KAAKoF,MAAM4yE,gBAAiBt1E,KAAM1C,KAAKoF,MAAM1C,KAAM+yC,SAAUD,GAAYx1C,KAAKoF,MAAMqwC,SAAUz1C,KAAKoF,MAAMswC,UAAU,GAAO68B,UAAWvyE,KAAKoF,MAAMmtE,UAAWsB,MAAO7zE,KAAKoF,MAAMyuE,MAAOn+B,SAAU11C,KAAKoF,MAAMswC,eAAY/wC,EAAWo5G,SAAU/9G,KAAKoF,MAAMs6W,eAAY/6W,EAAWm5G,YAAa99G,KAAKoF,MAAM04G,YAAahsG,IAAK,SAAU+N,GAAS,OAAOrF,EAAM6iG,OAASx9F,CAAQ,EAAEypD,SAAUtpE,KAAKoiJ,gBAAiBa,QAASjjJ,KAAK6igB,aAAc7qc,QAASh4D,KAAK6xd,aAAc55Z,OAAQj4D,KAAKgyd,YAAar6V,YAAa0qY,IAAa5pY,OAAQ4pY,OAC/vB,OAAOrigB,KAAKoF,MAAMgyD,MACXlvD,EAAAA,cAAoB6uD,GAAe,CAAEK,MAAOp3D,KAAKoF,MAAMgyD,MAAOC,SAAUkiF,EAASjiF,YAAat3D,KAAK3B,MAAOm5D,YAAauf,EAAStf,eAAgBz3D,KAAKoF,MAAMswC,SAAU6hB,kBAAmBv3D,KAAKoF,MAAM04G,YAAarzG,SAAU8rD,EAAWv1B,MAAO,CAAE84B,MAAO95D,KAAKoF,MAAM00D,OAASpyB,IAAK1nC,KAAKoF,MAAMsiC,MAC1R6uB,CACT,EACDksc,EAA4B5kgB,UAAU61E,gBAAkB,SAAUotb,EAAazuf,GAI3E,GAHArS,KAAK2R,SAAS,CACVtT,MAAOyigB,IAEP9ggB,KAAKoF,MAAMkkE,SAAU,CACrBtpE,KAAKy1E,qBAAuBqrb,EAC5B,IAAIx5X,EAAK,CACLr3D,eAAgB59D,EAChB2/D,YAAa3/D,EAAM2/D,YACnBopE,eAAgBp7I,KAAK4igB,WAAW,GAChC9jZ,aAAc9+G,KAAK4igB,WAAW,GAC9Bz9f,OAAQnF,KACR3B,MAAO2B,KAAK3B,OAEhB2B,KAAKoF,MAAMkkE,SAAS9pE,UAAKmF,EAAW2iI,GACpCtnI,KAAKy1E,0BAAuB9wE,CAC/B,CACJ,EACD89f,EAA4B5kgB,UAAUqlgB,cAAgB,SAAU1uU,GAC5D,IAAI/yF,EAASxjG,OAAO8J,OAAO,CACvBq4f,gBAAiBpggB,KAAKoF,MAAMg7f,gBAC5Bn5W,KAAMjnJ,KAAKoF,MAAM6hJ,KACjB+jO,OAAQhrX,KAAKoF,MAAM4lX,OACnBk1I,kBAAmBlggB,KAAKoF,MAAM86f,kBAC9Brke,MAAO77B,KAAK67B,OACb24J,GACHx0L,KAAK0igB,SAAS1zW,OAAOvtD,EACxB,EACDxjG,OAAOG,eAAeqkgB,EAA4B5kgB,UAAW,QAAS,CAClEsnB,IAAK,WACD,OAAOlnB,OAAO8J,OAAO,CAAC,EAAGq6f,IAAcpigB,KAAKoF,MAAMy2B,MACrD,EACDh9B,YAAY,EACZC,cAAc,IAElB2jgB,EAA4BjggB,YAAc,gBAI1CiggB,EAA4Btqc,UAAY,CACpC95D,MAAO+5D,GAAAA,OACPxiC,aAAcwiC,GAAAA,OACd0lD,YAAa1lD,GAAAA,OACbyb,MAAOzb,GAAAA,OACP1wB,IAAK0wB,GAAAA,OACLtxC,GAAIsxC,GAAAA,OACJp3B,MAAOo3B,GAAAA,OACPryC,UAAWqyC,GAAAA,OACX2f,eAAgB3f,GAAAA,OAChB4f,gBAAiB5f,GAAAA,OACjB0B,MAAO1B,GAAAA,UAAoB,CACvBA,GAAAA,OACAA,GAAAA,SAEJ3iB,SAAU2iB,GAAAA,OACVma,UAAWna,GAAAA,OACX1iB,SAAU0iB,GAAAA,KACVsnT,SAAUtnT,GAAAA,KACV4yT,OAAQ5yT,GAAAA,OACR8nc,kBAAmB9nc,GAAAA,OACnBgoc,gBAAiBhoc,GAAAA,KACjB2qc,eAAgB3qc,GAAAA,KAChB6uF,KAAM7uF,GAAAA,OACNv8B,MAAO,SAAUz2B,EAAO0+D,EAAU6f,GAC9B,IAAI9nD,EAAQz2B,EAAMy2B,MAClB,QAAcl3B,IAAVk3B,IACY59B,OAAO0vB,QAAQkO,GACtB7wB,MAAK,SAAUlN,GAAK,MAAoB,kBAANA,KAAoB+9B,EAAM/9B,aAAcuO,OAAU,IAErF,OAAO,IAAItL,MAAM,iBAAmB+iE,EAAnB,kBACN6f,EAAgB,yBAGnC,OAAO,IACV,EACD2oE,UAAWl0F,GAAAA,MAAgB,CACvBzV,MAAOyV,GAAAA,OAAAA,WACP7sD,IAAK6sD,GAAAA,OAAAA,aAET11D,KAAM01D,GAAAA,OACNhB,MAAOgB,GAAAA,OACPye,kBAAmBze,GAAAA,OACnB0a,SAAU1a,GAAAA,KACVwe,MAAOxe,GAAAA,KACP2a,eAAgB3a,GAAAA,KAChBkR,SAAUlR,GAAAA,KACVjJ,KAAMiJ,GAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChD+Q,QAAS/Q,GAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5DgR,SAAUhR,GAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,aAKtDqqc,EAA4B/5b,aAAe,CACvCsiT,OAAQ,IACRk1I,kBAAmB,IACnBE,iBAAiB,EACjB2C,gBAAgB,EAChBlne,MAAOume,IACPtvb,UAAU,EACVC,gBAAgB,EAChB5jB,KAAM,SACNga,QAAS,SACTC,SAAU,SAEPq5b,CACV,CApXgD,CAoX/Cv6f,EAAAA,WAgBSk7f,IAAgBltd,GARYD,KAQgCwsd,KACvEW,IAAc5ggB,YAAc,0BCxa5B,IAAM6ggB,IAAmB,CACrB,eACA,cACA,YACA,WACA,aACA,MACA,iBACA,YACA,mBACA,mBACA,aACA,aACA,iBACA,oBACA,aACA,OACA,aACA,aACA,QACA,cACA,gBACA,UACA,cACA,SACA,gBACA,mBACA,WACA,aACA,QACA,gBACA,iBACA,2BACA,4BACA,SACA,YACA,aACA,eACA,aACA,SACA,eACA,aACA,QACA,kBACA,eACA,YACA,OACA,cACA,WACA,UACA,WACA,eACA,eACA,gBACA,wBACA,kBACA,OACA,oBACA,aACA,YACA,aACA,OACA,cACA,eACA,UACA,gBACA,WACA,UACA,WACA,WACA,YACA,eACA,QACA,QACA,kBACA,gBACA,mBACA,eACA,aACA,SACA,UACA,SACA,mBACA,OACA,cACA,SACA,SACA,QACA,gBACA,iBACA,2BACA,4BACA,UACA,mBACA,aACA,kBACA,cACA,SACA,gBACA,mBACA,SACA,WACA,QACA,YACA,gBACA,aACA,eACA,SACA,kBACA,OACA,MACA,gBACA,cACA,WACA,kBACA,MACA,UACA,UACA,UACA,YAIEC,IAAU,CACZ,CAAEhkgB,KAAM,MAAOjB,MAAO,OACtB,CAAEiB,KAAM,QAASjB,MAAO,SACxB,CAAEiB,KAAM,OAAQjB,MAAO,UACvB,CAAEiB,KAAM,iBAAkBjB,MAAO,aAqBrC,KACIglgB,iBAAAA,IACAC,QAAAA,IACAC,cArBkB,SAAC7ggB,EAAMpD,GACzB,IAAIkkgB,EAA8B9ggB,EAAKuJ,QAAQ,aAAc,IAAI6B,cAC7D21f,EAAa,GACjB,GACa,QAATnkgB,GACS,UAATA,GACS,SAATA,GACS,mBAATA,EACF,CACE,IAAIokgB,EAAcJ,IAAQ5xe,MAAK,SAAApyB,GAAI,OAAIA,EAAKA,KAAOA,CAAhB,IAAsBjB,MAEzDolgB,EADmBJ,IAAiBp4f,QAAO,SAAAmsD,GAAK,OAAIA,IAAUssc,CAAd,IACtBhye,MAAK,SAAA0lC,GAAK,OAAIA,EAAMtpD,gBAAkB01f,CAA5B,KAA4D,UA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AK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,IAAK,GAAG8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KAAK8D,OAAO9D,EAAI,GAAI,KA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ACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,QAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,YACxC,CAAI,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,SACpC,WAAY,SAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,SAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,SAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,UAAY,WAAY,UAAY,WACpC,WAAY,UAAY,SAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,SAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,YAGxCC,EAAe,CACfC,KAAM,GACNC,KAAM,IAGV,SAASr9sB,EAAE6vJ,EAAK/oH,GACZ,IAAI7vC,EAAK6vC,GAAK,GAAM,IAChBhlC,EAAKglC,GAAK,GAAM,IAChB5vC,EAAK4vC,GAAK,EAAK,IACfnuC,EAAQ,IAAJmuC,EAEJxuC,EAAIu3J,EAAIwtjB,KAAK,GAAGpmtB,GAAK44J,EAAIwtjB,KAAK,GAAGv7sB,GAIrC,OAHAxJ,GAAQu3J,EAAIwtjB,KAAK,GAAGnmtB,GACpBoB,GAAQu3J,EAAIwtjB,KAAK,GAAG1ktB,EAGvB,CAED,SAAS2ktB,EAAiBztjB,EAAKx9F,EAAMtW,GAKjC,IAJA,IAEI9jB,EAFAslrB,EAAKlrpB,EACLmrpB,EAAKzhqB,EAGD/kD,EAAI,EAAGA,EAAImwS,IAAKnwS,EAIpBihC,EAHAslrB,GAAU1tjB,EAAIutjB,KAAKpmtB,GAInBumtB,EAHAC,EAAKx9sB,EAAE6vJ,EAAK0tjB,GAAMC,EAIlBA,EAAKvlrB,EAUT,OAPAA,EAAOslrB,EACPA,EAAKC,EACLA,EAAKvlrB,EAELulrB,GAAU3tjB,EAAIutjB,KAAKj2a,GAGZ,CAAC90O,KAFRkrpB,GAAU1tjB,EAAIutjB,KAAKj2a,EAAI,GAELprP,MAAOyhqB,EAC5B,CAED,SAASC,EAAiB5tjB,EAAKx9F,EAAMtW,GAKjC,IAJA,IAEI9jB,EAFAslrB,EAAKlrpB,EACLmrpB,EAAKzhqB,EAGD/kD,EAAImwS,EAAI,EAAGnwS,EAAI,IAAKA,EAIxBihC,EAHAslrB,GAAU1tjB,EAAIutjB,KAAKpmtB,GAInBumtB,EAHAC,EAAKx9sB,EAAE6vJ,EAAK0tjB,GAAMC,EAIlBA,EAAKvlrB,EAUT,OAPAA,EAAOslrB,EACPA,EAAKC,EACLA,EAAKvlrB,EAELulrB,GAAU3tjB,EAAIutjB,KAAK,GAGZ,CAAC/qpB,KAFRkrpB,GAAU1tjB,EAAIutjB,KAAK,GAEDrhqB,MAAOyhqB,EAC5B,CAaD,SAASE,EAAa7tjB,EAAKjzJ,EAAK+gtB,GAE5B,IAAI,IAAIp5kB,EAAM,EAAGA,EAAM,EAAGA,IAC1B,CACIsrB,EAAIwtjB,KAAK94kB,GAAO,GAChB,IAAI,IAAIq5kB,EAAM,EAAGA,EAAM,IAAKA,IAExB/tjB,EAAIwtjB,KAAK94kB,GAAKq5kB,GAAOV,EAAO34kB,GAAKq5kB,EAExC,CAGD,IADA,IAAIC,EAAW,EACPj7sB,EAAQ,EAAGA,EAAQukS,EAAI,EAAGvkS,IAE9BitJ,EAAIutjB,KAAKx6sB,GAASq6sB,EAAOr6sB,GAAShG,EAAIihtB,KACtCA,GACeF,IAEXE,EAAW,GAOnB,IAHA,IAAIC,EAAQ,EACRC,EAAQ,EACRt3rB,EAAM,EACFzvB,EAAI,EAAGA,EAAImwS,EAAI,EAAGnwS,GAAK,EAG3B8mtB,GADAr3rB,EAAM62rB,EAAiBztjB,EAAKiujB,EAAOC,IACvB1rpB,KACZ0rpB,EAAQt3rB,EAAIs1B,MACZ8zG,EAAIutjB,KAAKpmtB,GAAK8mtB,EACdjujB,EAAIutjB,KAAKpmtB,EAAI,GAAK+mtB,EAGtB,IAAI,IAAI/mtB,EAAI,EAAGA,EAAI,EAAGA,IAElB,IAAI,IAAIgyB,EAAI,EAAGA,EAAI,IAAKA,GAAK,EAGzB80rB,GADAr3rB,EAAM62rB,EAAiBztjB,EAAKiujB,EAAOC,IACvB1rpB,KACZ0rpB,EAAQt3rB,EAAIs1B,MACZ8zG,EAAIwtjB,KAAKrmtB,GAAGgyB,GAAK80rB,EACjBjujB,EAAIwtjB,KAAKrmtB,GAAGgyB,EAAI,GAAK+0rB,EAI7B,OAAO,CACV,CAKD,IAAIC,EAAWpD,EAAOoD,SAAWtD,EAAYhjiB,OAAO,CAChDkkiB,SAAU,WAEN,GAAIljtB,KAAKojtB,iBAAmBpjtB,KAAKssB,KAAjC,CAKA,IAAIpoB,EAAMlE,KAAKojtB,eAAiBpjtB,KAAKssB,KACjC+2rB,EAAWn/sB,EAAIo/sB,MACfC,EAAUr/sB,EAAIi7oB,SAAW,EAG7B6lE,EAAaP,EAAcpB,EAAUE,EARpC,CASJ,EAEDQ,aAAc,SAAU3rqB,EAAGuU,GACvB,IAAI5+B,EAAM62rB,EAAiBH,EAAcrsqB,EAAEuU,GAASvU,EAAEuU,EAAS,IAC/DvU,EAAEuU,GAAU5+B,EAAI4rC,KAChBvhB,EAAEuU,EAAS,GAAK5+B,EAAIs1B,KACvB,EAED4gqB,aAAc,SAAU7rqB,EAAGuU,GACvB,IAAI5+B,EAAMg3rB,EAAiBN,EAAcrsqB,EAAEuU,GAASvU,EAAEuU,EAAS,IAC/DvU,EAAEuU,GAAU5+B,EAAI4rC,KAChBvhB,EAAEuU,EAAS,GAAK5+B,EAAIs1B,KACvB,EAEDkiqB,UAAW,EAEXhC,QAAS,EAETiC,OAAQ,IAWZ/lR,EAAE6lR,SAAWtD,EAAYsC,cAAcgB,EAjc1C,IAqcMpmE,EAASomE,QAEhB,CAnd4B1X,CAAQC,EAAQ,OAAWA,EAAQ,OAAiBA,EAAQ,OAAUA,EAAQ,OAAaA,EAAQ,+BCA9H/7qB,EAAOw0qB,QAUD,SAAUpnD,GAKjBA,EAAS+iE,IAAIwD,QAAW,SAAU9gtB,GAE9B,IAAI86b,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACVr6Q,EAAO89Q,EAAM99Q,KACb+9Q,EAAYD,EAAMC,UAClBC,EAAyBF,EAAME,uBAC/BC,EAAQpmR,EAAEvsT,IAEV4ykB,GADOD,EAAME,KACJF,EAAMC,QAEfE,EADSvmR,EAAE0iR,KACK6D,OAUhBP,EAASC,EAAMD,OAASG,EAAuB5miB,OAAO,CAMtDiniB,IAAKr+Q,EAAK5oR,SAgBVkniB,gBAAiB,SAAUhitB,EAAK+htB,GAC5B,OAAOjmtB,KAAKd,OAAOc,KAAKmmtB,gBAAiBjitB,EAAK+htB,EACjD,EAgBDG,gBAAiB,SAAUlitB,EAAK+htB,GAC5B,OAAOjmtB,KAAKd,OAAOc,KAAKqmtB,gBAAiBnitB,EAAK+htB,EACjD,EAaDtysB,KAAM,SAAU2ysB,EAAWpitB,EAAK+htB,GAE5BjmtB,KAAKimtB,IAAMjmtB,KAAKimtB,IAAIjniB,OAAOiniB,GAG3BjmtB,KAAKumtB,WAAaD,EAClBtmtB,KAAKssB,KAAOpoB,EAGZlE,KAAKqC,OACR,EASDA,MAAO,WAEHujtB,EAAuBvjtB,MAAM7C,KAAKQ,MAGlCA,KAAKkjtB,UACR,EAcDj/rB,QAAS,SAAUuisB,GAKf,OAHAxmtB,KAAKymtB,QAAQD,GAGNxmtB,KAAK0mtB,UACf,EAgBDnnG,SAAU,SAAUinG,GAShB,OAPIA,GACAxmtB,KAAKymtB,QAAQD,GAIQxmtB,KAAK2mtB,aAGjC,EAEDpD,QAAS,EAETiC,OAAQ,EAERW,gBAAiB,EAEjBE,gBAAiB,EAejB/B,cAAgB,WACZ,SAASsC,EAAqB1itB,GAC1B,MAAkB,iBAAPA,EACA2itB,EAEAC,CAEd,CAED,OAAO,SAAUC,GACb,MAAO,CACHC,QAAS,SAAUv+sB,EAASvE,EAAK+htB,GAC7B,OAAOW,EAAqB1itB,GAAK8itB,QAAQD,EAAQt+sB,EAASvE,EAAK+htB,EAClE,EAEDgB,QAAS,SAAUnoE,EAAY56oB,EAAK+htB,GAChC,OAAOW,EAAqB1itB,GAAK+itB,QAAQF,EAAQjoE,EAAY56oB,EAAK+htB,EACrE,EAER,CACJ,CApBe,KA0ChBiB,GAdexB,EAAMyB,aAAe1B,EAAOzmiB,OAAO,CAClD2niB,YAAa,WAIT,OAF2B3mtB,KAAK0mtB,UAAS,EAG5C,EAEDnB,UAAW,IAMF9lR,EAAErwZ,KAAO,CAAC,GAKnBg4qB,EAAkB1B,EAAM0B,gBAAkBx/Q,EAAK5oR,OAAO,CAatDkniB,gBAAiB,SAAUa,EAAQM,GAC/B,OAAOrntB,KAAKsntB,UAAUpotB,OAAO6ntB,EAAQM,EACxC,EAcDjB,gBAAiB,SAAUW,EAAQM,GAC/B,OAAOrntB,KAAKuntB,UAAUrotB,OAAO6ntB,EAAQM,EACxC,EAYD1zsB,KAAM,SAAUozsB,EAAQM,GACpBrntB,KAAKwntB,QAAUT,EACf/mtB,KAAKyntB,IAAMJ,CACd,IAMDK,EAAMR,EAAOQ,IAAO,WAIpB,IAAIA,EAAMN,EAAgBpoiB,SA6D1B,SAAS2oiB,EAASrE,EAAO32pB,EAAQ44pB,GAC7B,IAAIxihB,EAGAskhB,EAAKrntB,KAAKyntB,IAGVJ,GACAtkhB,EAAQskhB,EAGRrntB,KAAKyntB,IAAM9itB,GAEXo+L,EAAQ/iM,KAAK4ntB,WAIjB,IAAK,IAAItptB,EAAI,EAAGA,EAAIintB,EAAWjntB,IAC3BgltB,EAAM32pB,EAASruD,IAAMykM,EAAMzkM,EAElC,CAED,OA9EAoptB,EAAIJ,UAAYI,EAAI1oiB,OAAO,CAWvB6oiB,aAAc,SAAUvE,EAAO32pB,GAE3B,IAAIo6pB,EAAS/mtB,KAAKwntB,QACdjC,EAAYwB,EAAOxB,UAGvBoC,EAASnotB,KAAKQ,KAAMsjtB,EAAO32pB,EAAQ44pB,GACnCwB,EAAOhD,aAAaT,EAAO32pB,GAG3B3sD,KAAK4ntB,WAAatE,EAAMhgtB,MAAMqpD,EAAQA,EAAS44pB,EAClD,IAMLmC,EAAIH,UAAYG,EAAI1oiB,OAAO,CAWvB6oiB,aAAc,SAAUvE,EAAO32pB,GAE3B,IAAIo6pB,EAAS/mtB,KAAKwntB,QACdjC,EAAYwB,EAAOxB,UAGnBuC,EAAYxE,EAAMhgtB,MAAMqpD,EAAQA,EAAS44pB,GAG7CwB,EAAO9C,aAAaX,EAAO32pB,GAC3Bg7pB,EAASnotB,KAAKQ,KAAMsjtB,EAAO32pB,EAAQ44pB,GAGnCvltB,KAAK4ntB,WAAaE,CACrB,IAyBEJ,CACV,CAxFuB,GAkGpBK,GALQtoR,EAAEt8Y,IAAM,CAAC,GAKH4kqB,MAAQ,CAatB5kqB,IAAK,SAAUn4B,EAAMu6rB,GAYjB,IAVA,IAAIyC,EAA6B,EAAZzC,EAGjB0C,EAAgBD,EAAiBh9rB,EAAKm0nB,SAAW6oE,EAGjDE,EAAeD,GAAiB,GAAOA,GAAiB,GAAOA,GAAiB,EAAKA,EAGrFE,EAAe,GACV7ptB,EAAI,EAAGA,EAAI2ptB,EAAe3ptB,GAAK,EACpC6ptB,EAAajmtB,KAAKgmtB,GAEtB,IAAIrklB,EAAU8hlB,EAAUzmtB,OAAOiptB,EAAcF,GAG7Cj9rB,EAAKxgB,OAAOq5H,EACf,EAaDuklB,MAAO,SAAUp9rB,GAEb,IAAIi9rB,EAAwD,IAAxCj9rB,EAAKs4rB,MAAOt4rB,EAAKm0nB,SAAW,IAAO,GAGvDn0nB,EAAKm0nB,UAAY8oE,CACpB,GA4FDI,GApFc3C,EAAM1D,YAAcyD,EAAOzmiB,OAAO,CAOhDiniB,IAAKR,EAAOQ,IAAIjniB,OAAO,CACnB5vI,KAAMs4qB,EACN7jlB,QAASkklB,IAGb1ltB,MAAO,WACH,IAAIimtB,EAGJ7C,EAAOpjtB,MAAM7C,KAAKQ,MAGlB,IAAIimtB,EAAMjmtB,KAAKimtB,IACXoB,EAAKpB,EAAIoB,GACTj4qB,EAAO62qB,EAAI72qB,KAGXpvC,KAAKumtB,YAAcvmtB,KAAKmmtB,gBACxBmC,EAAcl5qB,EAAK82qB,iBAEnBoC,EAAcl5qB,EAAKg3qB,gBAEnBpmtB,KAAKuotB,eAAiB,GAGtBvotB,KAAKizR,OAASjzR,KAAKizR,MAAMu1b,WAAaF,EACtCtotB,KAAKizR,MAAMt/Q,KAAK3T,KAAMqntB,GAAMA,EAAG/D,QAE/BtjtB,KAAKizR,MAAQq1b,EAAY9otB,KAAK4vC,EAAMpvC,KAAMqntB,GAAMA,EAAG/D,OACnDtjtB,KAAKizR,MAAMu1b,UAAYF,EAE9B,EAEDG,gBAAiB,SAAUnF,EAAO32pB,GAC9B3sD,KAAKizR,MAAM40b,aAAavE,EAAO32pB,EAClC,EAEDg6pB,YAAa,WACT,IAAI+B,EAGA7klB,EAAU7jI,KAAKimtB,IAAIpilB,QAiBvB,OAdI7jI,KAAKumtB,YAAcvmtB,KAAKmmtB,iBAExBtilB,EAAQ1gF,IAAInjD,KAAKivK,MAAOjvK,KAAKultB,WAG7BmD,EAAuB1otB,KAAK0mtB,UAAS,KAGrCgC,EAAuB1otB,KAAK0mtB,UAAS,GAGrC7ilB,EAAQuklB,MAAMM,IAGXA,CACV,EAEDnD,UAAW,IAgBIG,EAAM2C,aAAezgR,EAAK5oR,OAAO,CAoBhDrrK,KAAM,SAAUg1sB,GACZ3otB,KAAK4otB,MAAMD,EACd,EAiBD3htB,SAAU,SAAU45B,GAChB,OAAQA,GAAa5gC,KAAK4gC,WAAW9xB,UAAU9O,KAClD,KAWD6otB,GALWppR,EAAElia,OAAS,CAAC,GAKKurrB,QAAU,CActCh6sB,UAAW,SAAU65sB,GACjB,IAGI7pE,EAAa6pE,EAAa7pE,WAC1BiqE,EAAOJ,EAAaI,KASxB,OANIA,EACYpD,EAAUzmtB,OAAO,CAAC,WAAY,aAAasL,OAAOu+sB,GAAMv+sB,OAAOs0oB,GAE/DA,GAGC93oB,SAAS8+sB,EAC7B,EAeD32sB,MAAO,SAAU65sB,GACb,IAAID,EAGAjqE,EAAagnE,EAAO32sB,MAAM65sB,GAG1BC,EAAkBnqE,EAAWwkE,MAYjC,OAT0B,YAAtB2F,EAAgB,IAA0C,YAAtBA,EAAgB,KAEpDF,EAAOpD,EAAUzmtB,OAAO+ptB,EAAgB3ltB,MAAM,EAAG,IAGjD2ltB,EAAgBr4rB,OAAO,EAAG,GAC1BkunB,EAAWK,UAAY,IAGpBkpE,EAAanptB,OAAO,CAAE4/oB,WAAYA,EAAYiqE,KAAMA,GAC9D,GAMDjC,EAAqBpB,EAAMoB,mBAAqBl/Q,EAAK5oR,OAAO,CAM5DiniB,IAAKr+Q,EAAK5oR,OAAO,CACbzhJ,OAAQsrrB,IAqBZ7B,QAAS,SAAUD,EAAQt+sB,EAASvE,EAAK+htB,GAErCA,EAAMjmtB,KAAKimtB,IAAIjniB,OAAOiniB,GAGtB,IAAIiD,EAAYnC,EAAOb,gBAAgBhitB,EAAK+htB,GACxCnnE,EAAaoqE,EAAU3pG,SAAS92mB,GAGhC0gtB,EAAYD,EAAUjD,IAG1B,OAAOoC,EAAanptB,OAAO,CACvB4/oB,WAAYA,EACZ56oB,IAAKA,EACLmjtB,GAAI8B,EAAU9B,GACdr+D,UAAW+9D,EACX33qB,KAAM+5qB,EAAU/5qB,KAChBy0F,QAASsllB,EAAUtllB,QACnB0hlB,UAAWwB,EAAOxB,UAClB3krB,UAAWqlrB,EAAI1orB,QAEtB,EAmBD0prB,QAAS,SAAUF,EAAQjoE,EAAY56oB,EAAK+htB,GAUxC,OARAA,EAAMjmtB,KAAKimtB,IAAIjniB,OAAOiniB,GAGtBnnE,EAAa9+oB,KAAKoptB,OAAOtqE,EAAYmnE,EAAI1orB,QAGzBwprB,EAAOX,gBAAgBlitB,EAAK+htB,GAAK1mG,SAASu/B,EAAWA,WAGxE,EAiBDsqE,OAAQ,SAAUtqE,EAAYvhnB,GAC1B,MAAyB,iBAAduhnB,EACAvhnB,EAAOpuB,MAAM2voB,EAAY9+oB,MAEzB8+oB,CAEd,IAWDuqE,GALQ5pR,EAAE6pR,IAAM,CAAC,GAKER,QAAU,CAkB7Bn7O,QAAS,SAAUwvM,EAAUomC,EAASiC,EAAQuD,EAAMQ,GAOhD,GALKR,IACDA,EAAOpD,EAAUv+rB,OAAO,IAIvBmisB,EAGGrltB,EAAM8htB,EAAO9mtB,OAAO,CAAEqktB,QAASA,EAAUiC,EAAQ+D,OAAQA,IAAUC,QAAQrsC,EAAU4rC,QAFzF,IAAI7ktB,EAAM8htB,EAAO9mtB,OAAO,CAAEqktB,QAASA,EAAUiC,IAAUgE,QAAQrsC,EAAU4rC,GAO7E,IAAI1B,EAAK1B,EAAUzmtB,OAAOgF,EAAIo/sB,MAAMhgtB,MAAMigtB,GAAmB,EAATiC,GAIpD,OAHAthtB,EAAIi7oB,SAAqB,EAAVokE,EAGR8E,EAAanptB,OAAO,CAAEgF,IAAKA,EAAKmjtB,GAAIA,EAAI0B,KAAMA,GACxD,GAODlC,EAAsBnB,EAAMmB,oBAAsBC,EAAmB9niB,OAAO,CAM5EiniB,IAAKa,EAAmBb,IAAIjniB,OAAO,CAC/BsqiB,IAAKD,IAoBTrC,QAAS,SAAUD,EAAQt+sB,EAAS00qB,EAAU8oC,GAK1C,IAAIwD,GAHJxD,EAAMjmtB,KAAKimtB,IAAIjniB,OAAOiniB,IAGEqD,IAAI37O,QAAQwvM,EAAU4pC,EAAOxD,QAASwD,EAAOvB,OAAQS,EAAI8C,KAAM9C,EAAIsD,QAG3FtD,EAAIoB,GAAKoC,EAAcpC,GAGvB,IAAIvoE,EAAagoE,EAAmBE,QAAQxntB,KAAKQ,KAAM+mtB,EAAQt+sB,EAASghtB,EAAcvltB,IAAK+htB,GAK3F,OAFAnnE,EAAW8pE,MAAMa,GAEV3qE,CACV,EAmBDmoE,QAAS,SAAUF,EAAQjoE,EAAYq+B,EAAU8oC,GAE7CA,EAAMjmtB,KAAKimtB,IAAIjniB,OAAOiniB,GAGtBnnE,EAAa9+oB,KAAKoptB,OAAOtqE,EAAYmnE,EAAI1orB,QAGzC,IAAIksrB,EAAgBxD,EAAIqD,IAAI37O,QAAQwvM,EAAU4pC,EAAOxD,QAASwD,EAAOvB,OAAQ1mE,EAAWiqE,KAAM9C,EAAIsD,QAQlG,OALAtD,EAAIoB,GAAKoC,EAAcpC,GAGPP,EAAmBG,QAAQzntB,KAAKQ,KAAM+mtB,EAAQjoE,EAAY2qE,EAAcvltB,IAAK+htB,EAGhG,GAER,CAz2BuB,EA42BxB,CA33B4BrY,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,WAOP,IAAIpnD,EAAWA,GAAa,SAAUh4nB,EAAMviB,GAExC,IAAI6lF,EA4BJ,GAzBsB,qBAAXl5E,QAA0BA,OAAOk5E,SACxCA,EAASl5E,OAAOk5E,QAIA,qBAATlmF,MAAwBA,KAAKkmF,SACpCA,EAASlmF,KAAKkmF,QAIQ,qBAAfk/nB,YAA8BA,WAAWl/nB,SAChDA,EAASk/nB,WAAWl/nB,SAInBA,GAA4B,qBAAXl5E,QAA0BA,OAAOm5E,WACnDD,EAASl5E,OAAOm5E,WAIfD,GAA4B,qBAAXv9C,EAAAA,GAA0BA,EAAAA,EAAOu9C,SACnDA,EAASv9C,EAAAA,EAAOu9C,SAIfA,EACD,IACIA,EAASqjnB,EAAQ,MACL,CAAd,MAAOnpsB,GAAO,CAQpB,IAAIiltB,EAAwB,WACxB,GAAIn/nB,EAAQ,CAER,GAAsC,oBAA3BA,EAAOhD,gBACd,IACI,OAAOgD,EAAOhD,gBAAgB,IAAIoioB,YAAY,IAAI,EACtC,CAAd,MAAOlltB,GAAO,CAIpB,GAAkC,oBAAvB8lF,EAAOq/nB,YACd,IACI,OAAOr/nB,EAAOq/nB,YAAY,GAAGxL,aACjB,CAAd,MAAO35sB,GAAO,CAEvB,CAED,MAAM,IAAI3D,MAAM,sEACnB,EAMG7B,EAASjB,OAAOiB,QAAW,WAC3B,SAASoI,IAAM,CAEf,OAAO,SAAUuM,GACb,IAAIi2sB,EAQJ,OANAxitB,EAAEzJ,UAAYgW,EAEdi2sB,EAAU,IAAIxitB,EAEdA,EAAEzJ,UAAY,KAEPistB,CACV,CACJ,CAd8B,GAmB3BrqR,EAAI,CAAC,EAKLimR,EAAQjmR,EAAEwiR,IAAM,CAAC,EAKjBr6Q,EAAO89Q,EAAM99Q,KAGN,CAmBH5oR,OAAQ,SAAU+qiB,GAEd,IAAID,EAAU5qtB,EAAOc,MAoBrB,OAjBI+ptB,GACAD,EAAQlB,MAAMmB,GAIbD,EAAQ3rtB,eAAe,SAAW6B,KAAK2T,OAASm2sB,EAAQn2sB,OACzDm2sB,EAAQn2sB,KAAO,WACXm2sB,EAAQE,OAAOr2sB,KAAKlP,MAAMzE,KAAMwE,UACnC,GAILsltB,EAAQn2sB,KAAK9V,UAAYistB,EAGzBA,EAAQE,OAAShqtB,KAEV8ptB,CACV,EAcD5qtB,OAAQ,WACJ,IAAI0F,EAAW5E,KAAKg/K,SAGpB,OAFAp6K,EAAS+O,KAAKlP,MAAMG,EAAUJ,WAEvBI,CACV,EAcD+O,KAAM,WACL,EAaDi1sB,MAAO,SAAU5+rB,GACb,IAAK,IAAI8oI,KAAgB9oI,EACjBA,EAAW7rB,eAAe20J,KAC1B9yJ,KAAK8yJ,GAAgB9oI,EAAW8oI,IAKpC9oI,EAAW7rB,eAAe,cAC1B6B,KAAKgH,SAAWgjB,EAAWhjB,SAElC,EAWDqc,MAAO,WACH,OAAOrjB,KAAK2T,KAAK9V,UAAUmhL,OAAOh/K,KACrC,GAUL2ltB,EAAYD,EAAMC,UAAY/9Q,EAAK5oR,OAAO,CAa1CrrK,KAAM,SAAU2vsB,EAAOnkE,GACnBmkE,EAAQtjtB,KAAKsjtB,MAAQA,GAAS,GAG1BtjtB,KAAKm/oB,SADLA,GAAYx6oB,EACIw6oB,EAEe,EAAfmkE,EAAM/gtB,MAE7B,EAeDyE,SAAU,SAAUkusB,GAChB,OAAQA,GAAW+U,GAAKn7sB,UAAU9O,KACrC,EAaDwK,OAAQ,SAAUy0oB,GAEd,IAAIirE,EAAYlqtB,KAAKsjtB,MACjB6G,EAAYlrE,EAAUqkE,MACtB8G,EAAepqtB,KAAKm/oB,SACpBkrE,EAAeprE,EAAUE,SAM7B,GAHAn/oB,KAAK2hK,QAGDyojB,EAAe,EAEf,IAAK,IAAI9rtB,EAAI,EAAGA,EAAI+rtB,EAAc/rtB,IAAK,CACnC,IAAIgstB,EAAYH,EAAU7rtB,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,IAC7D4rtB,EAAWE,EAAe9rtB,IAAO,IAAMgstB,GAAa,IAAOF,EAAe9rtB,GAAK,EAAK,CACvF,MAGD,IAAK,IAAIgyB,EAAI,EAAGA,EAAI+5rB,EAAc/5rB,GAAK,EACnC45rB,EAAWE,EAAe95rB,IAAO,GAAK65rB,EAAU75rB,IAAM,GAM9D,OAHAtwB,KAAKm/oB,UAAYkrE,EAGVrqtB,IACV,EASD2hK,MAAO,WAEH,IAAI2hjB,EAAQtjtB,KAAKsjtB,MACbnkE,EAAWn/oB,KAAKm/oB,SAGpBmkE,EAAMnkE,IAAa,IAAM,YAAe,GAAMA,EAAW,EAAK,EAC9DmkE,EAAM/gtB,OAAS2kB,EAAKwxH,KAAKymgB,EAAW,EACvC,EAWD97nB,MAAO,WACH,IAAIA,EAAQukb,EAAKvkb,MAAM7jB,KAAKQ,MAG5B,OAFAqjB,EAAMigsB,MAAQtjtB,KAAKsjtB,MAAMhgtB,MAAM,GAExB+f,CACV,EAeD+D,OAAQ,SAAUmjsB,GAGd,IAFA,IAAIjH,EAAQ,GAEHhltB,EAAI,EAAGA,EAAIistB,EAAQjstB,GAAK,EAC7BgltB,EAAMphtB,KAAKyntB,KAGf,OAAO,IAAIhE,EAAUhysB,KAAK2vsB,EAAOiH,EACpC,IAMD1E,EAAQpmR,EAAEvsT,IAAM,CAAC,EAKjB+2kB,EAAMpE,EAAMoE,IAAM,CAclBn7sB,UAAW,SAAUmwoB,GAOjB,IALA,IAAIqkE,EAAQrkE,EAAUqkE,MAClBnkE,EAAWF,EAAUE,SAGrBqrE,EAAW,GACNlstB,EAAI,EAAGA,EAAI6gpB,EAAU7gpB,IAAK,CAC/B,IAAImstB,EAAQnH,EAAMhltB,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,IACrDkstB,EAAStotB,MAAMuotB,IAAS,GAAGzjtB,SAAS,KACpCwjtB,EAAStotB,MAAa,GAAPuotB,GAAazjtB,SAAS,IACxC,CAED,OAAOwjtB,EAASl9sB,KAAK,GACxB,EAeD6B,MAAO,SAAUu7sB,GAMb,IAJA,IAAIC,EAAeD,EAAOnotB,OAGtB+gtB,EAAQ,GACHhltB,EAAI,EAAGA,EAAIqstB,EAAcrstB,GAAK,EACnCgltB,EAAMhltB,IAAM,IAAMoiC,SAASgqrB,EAAO7/pB,OAAOvsD,EAAG,GAAI,KAAQ,GAAMA,EAAI,EAAK,EAG3E,OAAO,IAAIqntB,EAAUhysB,KAAK2vsB,EAAOqH,EAAe,EACnD,GAMDC,EAAS/E,EAAM+E,OAAS,CAcxB97sB,UAAW,SAAUmwoB,GAOjB,IALA,IAAIqkE,EAAQrkE,EAAUqkE,MAClBnkE,EAAWF,EAAUE,SAGrB0rE,EAAc,GACTvstB,EAAI,EAAGA,EAAI6gpB,EAAU7gpB,IAAK,CAC/B,IAAImstB,EAAQnH,EAAMhltB,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,IACrDustB,EAAY3otB,KAAK8C,OAAOsxE,aAAam0oB,GACxC,CAED,OAAOI,EAAYv9sB,KAAK,GAC3B,EAeD6B,MAAO,SAAU27sB,GAMb,IAJA,IAAIC,EAAkBD,EAAUvotB,OAG5B+gtB,EAAQ,GACHhltB,EAAI,EAAGA,EAAIystB,EAAiBzstB,IACjCgltB,EAAMhltB,IAAM,KAAiC,IAA1BwstB,EAAUrthB,WAAWn/L,KAAe,GAAMA,EAAI,EAAK,EAG1E,OAAO,IAAIqntB,EAAUhysB,KAAK2vsB,EAAOyH,EACpC,GAMDhF,EAAOF,EAAME,KAAO,CAcpBj3sB,UAAW,SAAUmwoB,GACjB,IACI,OAAOtyoB,mBAAmB8iB,OAAOm7rB,EAAO97sB,UAAUmwoB,IAGrD,CAFC,MAAOnhpB,GACL,MAAM,IAAIiD,MAAM,uBACnB,CACJ,EAeDoO,MAAO,SAAU67sB,GACb,OAAOJ,EAAOz7sB,MAAMq6B,SAAS8D,mBAAmB09qB,IACnD,GAUDpF,EAAyBF,EAAME,uBAAyBh+Q,EAAK5oR,OAAO,CAQpE38K,MAAO,WAEHrC,KAAKivK,MAAQ,IAAI02iB,EAAUhysB,KAC3B3T,KAAKirtB,YAAc,CACtB,EAYDxE,QAAS,SAAUz7rB,GAEI,iBAARA,IACPA,EAAO+6rB,EAAK52sB,MAAM6b,IAItBhrB,KAAKivK,MAAMzkK,OAAOwgB,GAClBhrB,KAAKirtB,aAAejgsB,EAAKm0nB,QAC5B,EAgBDunE,SAAU,SAAUwE,GAChB,IAAIC,EAGAngsB,EAAOhrB,KAAKivK,MACZm8iB,EAAYpgsB,EAAKs4rB,MACjB+H,EAAergsB,EAAKm0nB,SACpBomE,EAAYvltB,KAAKultB,UAIjB+F,EAAeD,GAHc,EAAZ9F,GAcjBgG,GARAD,EAFAJ,EAEehksB,EAAKwxH,KAAK4ykB,GAIVpksB,EAAKm9B,KAAoB,EAAfinqB,GAAoBtrtB,KAAKuotB,eAAgB,IAIrChD,EAG7BiG,EAActksB,EAAKy8B,IAAkB,EAAd4nqB,EAAiBF,GAG5C,GAAIE,EAAa,CACb,IAAK,IAAI5+pB,EAAS,EAAGA,EAAS4+pB,EAAa5+pB,GAAU44pB,EAEjDvltB,KAAKyotB,gBAAgB2C,EAAWz+pB,GAIpCw+pB,EAAiBC,EAAUx6rB,OAAO,EAAG26rB,GACrCvgsB,EAAKm0nB,UAAYqsE,CACpB,CAGD,OAAO,IAAI7F,EAAUhysB,KAAKw3sB,EAAgBK,EAC7C,EAWDnosB,MAAO,WACH,IAAIA,EAAQukb,EAAKvkb,MAAM7jB,KAAKQ,MAG5B,OAFAqjB,EAAM4rJ,MAAQjvK,KAAKivK,MAAM5rJ,QAElBA,CACV,EAEDklsB,eAAgB,IA2IhBrG,GAnISwD,EAAM+F,OAAS7F,EAAuB5miB,OAAO,CAItDiniB,IAAKr+Q,EAAK5oR,SAWVrrK,KAAM,SAAUsysB,GAEZjmtB,KAAKimtB,IAAMjmtB,KAAKimtB,IAAIjniB,OAAOiniB,GAG3BjmtB,KAAKqC,OACR,EASDA,MAAO,WAEHujtB,EAAuBvjtB,MAAM7C,KAAKQ,MAGlCA,KAAKkjtB,UACR,EAcDl0jB,OAAQ,SAAU08jB,GAQd,OANA1rtB,KAAKymtB,QAAQiF,GAGb1rtB,KAAK0mtB,WAGE1mtB,IACV,EAgBDu/mB,SAAU,SAAUmsG,GAShB,OAPIA,GACA1rtB,KAAKymtB,QAAQiF,GAIN1rtB,KAAK2mtB,aAGnB,EAEDpB,UAAW,GAeXjB,cAAe,SAAUiF,GACrB,OAAO,SAAU9gtB,EAASw9sB,GACtB,OAAO,IAAIsD,EAAO51sB,KAAKsysB,GAAK1mG,SAAS92mB,EACxC,CACJ,EAeDkjtB,kBAAmB,SAAUpC,GACzB,OAAO,SAAU9gtB,EAASvE,GACtB,OAAO,IAAIg+sB,EAAO0J,KAAKj4sB,KAAK41sB,EAAQrltB,GAAKq7mB,SAAS92mB,EACrD,CACJ,IAMQg3b,EAAE0iR,KAAO,CAAC,GAEvB,OAAO1iR,CACV,CA7wB2B,CA6wB1Bv4a,MAGF,OAAOg4nB,CAEP,CAnyB4B0uD,0BCA3B97qB,EAAOw0qB,QAUD,SAAUpnD,GAwHjB,OAtHC,WAEG,IAAIz/M,EAAIy/M,EAEJymE,EADQlmR,EAAEwiR,IACQ0D,UAiGtB,SAASkG,EAAUC,EAAWC,EAAiBC,GAG7C,IAFA,IAAI1I,EAAQ,GACRiH,EAAS,EACJjstB,EAAI,EAAGA,EAAIyttB,EAAiBzttB,IACjC,GAAIA,EAAI,EAAG,CACP,IAEI2ttB,EAFQD,EAAWF,EAAUruhB,WAAWn/L,EAAI,KAASA,EAAI,EAAK,EACtD0ttB,EAAWF,EAAUruhB,WAAWn/L,MAAS,EAAKA,EAAI,EAAK,EAEnEgltB,EAAMiH,IAAW,IAAM0B,GAAiB,GAAM1B,EAAS,EAAK,EAC5DA,GACH,CAEL,OAAO5E,EAAUzmtB,OAAOoktB,EAAOiH,EAChC,CA7GW9qR,EAAEvsT,IAKK4ykB,OAAS,CAcxBh3sB,UAAW,SAAUmwoB,GAEjB,IAAIqkE,EAAQrkE,EAAUqkE,MAClBnkE,EAAWF,EAAUE,SACrBz1oB,EAAM1J,KAAKqmM,KAGf44c,EAAUt9e,QAIV,IADA,IAAIuqjB,EAAc,GACT5ttB,EAAI,EAAGA,EAAI6gpB,EAAU7gpB,GAAK,EAO/B,IANA,IAII6ttB,GAJS7I,EAAMhltB,IAAM,KAAc,GAAMA,EAAI,EAAK,EAAY,MAI1C,IAHXgltB,EAAOhltB,EAAI,IAAO,KAAQ,IAAOA,EAAI,GAAK,EAAK,EAAM,MAG1B,EAF3BgltB,EAAOhltB,EAAI,IAAO,KAAQ,IAAOA,EAAI,GAAK,EAAK,EAAM,IAIzDgyB,EAAI,EAAIA,EAAI,GAAOhyB,EAAQ,IAAJgyB,EAAW6unB,EAAW7unB,IAClD47rB,EAAYhqtB,KAAKwH,EAAIrG,OAAQ8otB,IAAa,GAAK,EAAI77rB,GAAO,KAKlE,IAAI87rB,EAAc1itB,EAAIrG,OAAO,IAC7B,GAAI+otB,EACA,KAAOF,EAAY3ptB,OAAS,GACxB2ptB,EAAYhqtB,KAAKkqtB,GAIzB,OAAOF,EAAY5+sB,KAAK,GAC3B,EAeD6B,MAAO,SAAU28sB,GAEb,IAAIC,EAAkBD,EAAUvptB,OAC5BmH,EAAM1J,KAAKqmM,KACX2lhB,EAAahstB,KAAKqstB,YAEtB,IAAKL,EAAY,CACTA,EAAahstB,KAAKqstB,YAAc,GAChC,IAAK,IAAI/7rB,EAAI,EAAGA,EAAI5mB,EAAInH,OAAQ+tB,IAC5B07rB,EAAWtitB,EAAI+zL,WAAWntK,IAAMA,CAE3C,CAGD,IAAI87rB,EAAc1itB,EAAIrG,OAAO,IAC7B,GAAI+otB,EAAa,CACb,IAAIE,EAAeR,EAAUzssB,QAAQ+ssB,IACf,IAAlBE,IACAP,EAAkBO,EAEzB,CAGD,OAAOT,EAAUC,EAAWC,EAAiBC,EAEhD,EAED3lhB,KAAM,oEAlGb,IAsHM64c,EAAShsgB,IAAI4ykB,MAEpB,CApI4BlY,CAAQC,EAAQ,8BCA3C/7qB,EAAOw0qB,QAUD,SAAUpnD,GAoIjB,OAlIC,WAEG,IAAIz/M,EAAIy/M,EAEJymE,EADQlmR,EAAEwiR,IACQ0D,UA6GtB,SAASkG,EAAUC,EAAWC,EAAiBC,GAG3C,IAFA,IAAI1I,EAAQ,GACRiH,EAAS,EACJjstB,EAAI,EAAGA,EAAIyttB,EAAiBzttB,IACjC,GAAIA,EAAI,EAAG,CACP,IAEI2ttB,EAFQD,EAAWF,EAAUruhB,WAAWn/L,EAAI,KAASA,EAAI,EAAK,EACtD0ttB,EAAWF,EAAUruhB,WAAWn/L,MAAS,EAAKA,EAAI,EAAK,EAEnEgltB,EAAMiH,IAAW,IAAM0B,GAAiB,GAAM1B,EAAS,EAAK,EAC5DA,GACH,CAEL,OAAO5E,EAAUzmtB,OAAOoktB,EAAOiH,EAClC,CAzHW9qR,EAAEvsT,IAKQq5kB,UAAY,CAgB9Bz9sB,UAAW,SAAUmwoB,EAAWutE,QACZ7ntB,IAAZ6ntB,IACAA,GAAU,GAGd,IAAIlJ,EAAQrkE,EAAUqkE,MAClBnkE,EAAWF,EAAUE,SACrBz1oB,EAAM8itB,EAAUxstB,KAAKystB,UAAYzstB,KAAKqmM,KAG1C44c,EAAUt9e,QAIV,IADA,IAAIuqjB,EAAc,GACT5ttB,EAAI,EAAGA,EAAI6gpB,EAAU7gpB,GAAK,EAO/B,IANA,IAII6ttB,GAJS7I,EAAMhltB,IAAM,KAAc,GAAMA,EAAI,EAAK,EAAY,MAI1C,IAHXgltB,EAAOhltB,EAAI,IAAO,KAAQ,IAAOA,EAAI,GAAK,EAAK,EAAM,MAG1B,EAF3BgltB,EAAOhltB,EAAI,IAAO,KAAQ,IAAOA,EAAI,GAAK,EAAK,EAAM,IAIzDgyB,EAAI,EAAIA,EAAI,GAAOhyB,EAAQ,IAAJgyB,EAAW6unB,EAAW7unB,IAClD47rB,EAAYhqtB,KAAKwH,EAAIrG,OAAQ8otB,IAAa,GAAK,EAAI77rB,GAAO,KAKlE,IAAI87rB,EAAc1itB,EAAIrG,OAAO,IAC7B,GAAI+otB,EACA,KAAOF,EAAY3ptB,OAAS,GACxB2ptB,EAAYhqtB,KAAKkqtB,GAIzB,OAAOF,EAAY5+sB,KAAK,GAC3B,EAiBD6B,MAAO,SAAU28sB,EAAWU,QACR7ntB,IAAZ6ntB,IACAA,GAAU,GAId,IAAIT,EAAkBD,EAAUvptB,OAC5BmH,EAAM8itB,EAAUxstB,KAAKystB,UAAYzstB,KAAKqmM,KACtC2lhB,EAAahstB,KAAKqstB,YAEtB,IAAKL,EAAY,CACbA,EAAahstB,KAAKqstB,YAAc,GAChC,IAAK,IAAI/7rB,EAAI,EAAGA,EAAI5mB,EAAInH,OAAQ+tB,IAC5B07rB,EAAWtitB,EAAI+zL,WAAWntK,IAAMA,CAEvC,CAGD,IAAI87rB,EAAc1itB,EAAIrG,OAAO,IAC7B,GAAI+otB,EAAa,CACb,IAAIE,EAAeR,EAAUzssB,QAAQ+ssB,IACf,IAAlBE,IACAP,EAAkBO,EAEzB,CAGD,OAAOT,EAAUC,EAAWC,EAAiBC,EAEhD,EAED3lhB,KAAM,oEACNomhB,UAAW,mEA9GlB,IAkIMvtE,EAAShsgB,IAAIq5kB,SAEpB,CAhJ4B3e,CAAQC,EAAQ,+BCA3C/7qB,EAAOw0qB,QAUD,SAAUpnD,GAqIjB,OAnIC,WAEG,IAAIz/M,EAAIy/M,EAEJymE,EADQlmR,EAAEwiR,IACQ0D,UAClBE,EAAQpmR,EAAEvsT,IAwHd,SAASw5kB,EAAW/ipB,GAChB,OAASA,GAAQ,EAAK,WAAgBA,IAAS,EAAK,QACvD,CArHak8oB,EAAM8G,MAAQ9G,EAAM+G,QAAU,CAcxC99sB,UAAW,SAAUmwoB,GAOjB,IALA,IAAIqkE,EAAQrkE,EAAUqkE,MAClBnkE,EAAWF,EAAUE,SAGrB0tE,EAAa,GACRvutB,EAAI,EAAGA,EAAI6gpB,EAAU7gpB,GAAK,EAAG,CAClC,IAAIm8sB,EAAa6I,EAAMhltB,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,MAC1DuutB,EAAW3qtB,KAAK8C,OAAOsxE,aAAamkoB,GACvC,CAED,OAAOoS,EAAWv/sB,KAAK,GAC1B,EAeD6B,MAAO,SAAU29sB,GAMb,IAJA,IAAIC,EAAiBD,EAASvqtB,OAG1B+gtB,EAAQ,GACHhltB,EAAI,EAAGA,EAAIyutB,EAAgBzutB,IAChCgltB,EAAMhltB,IAAM,IAAMwutB,EAASrvhB,WAAWn/L,IAAO,GAAMA,EAAI,EAAK,GAGhE,OAAOqntB,EAAUzmtB,OAAOoktB,EAAwB,EAAjByJ,EAClC,GAMLlH,EAAMmH,QAAU,CAcZl+sB,UAAW,SAAUmwoB,GAOjB,IALA,IAAIqkE,EAAQrkE,EAAUqkE,MAClBnkE,EAAWF,EAAUE,SAGrB0tE,EAAa,GACRvutB,EAAI,EAAGA,EAAI6gpB,EAAU7gpB,GAAK,EAAG,CAClC,IAAIm8sB,EAAYiS,EAAYpJ,EAAMhltB,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,OACrEuutB,EAAW3qtB,KAAK8C,OAAOsxE,aAAamkoB,GACvC,CAED,OAAOoS,EAAWv/sB,KAAK,GAC1B,EAeD6B,MAAO,SAAU29sB,GAMb,IAJA,IAAIC,EAAiBD,EAASvqtB,OAG1B+gtB,EAAQ,GACHhltB,EAAI,EAAGA,EAAIyutB,EAAgBzutB,IAChCgltB,EAAMhltB,IAAM,IAAMoutB,EAAWI,EAASrvhB,WAAWn/L,IAAO,GAAMA,EAAI,EAAK,IAG3E,OAAOqntB,EAAUzmtB,OAAOoktB,EAAwB,EAAjByJ,EAClC,EA1HR,IAmIM7tE,EAAShsgB,IAAIy5kB,KAEpB,CAjJ4B/e,CAAQC,EAAQ,+BCA3C/7qB,EAAOw0qB,QAUD,SAAUpnD,GAsHjB,OApHC,WAEG,IAAIz/M,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACVr6Q,EAAO89Q,EAAM99Q,KACb+9Q,EAAYD,EAAMC,UAClBzD,EAASziR,EAAE0iR,KACX8K,EAAM/K,EAAO+K,IAMbjH,EAAS9D,EAAO8D,OAASp+Q,EAAK5oR,OAAO,CAQrCiniB,IAAKr+Q,EAAK5oR,OAAO,CACbukiB,QAAS,EACTgG,OAAQ0D,EACRC,WAAY,IAchBv5sB,KAAM,SAAUsysB,GACZjmtB,KAAKimtB,IAAMjmtB,KAAKimtB,IAAIjniB,OAAOiniB,EAC9B,EAcDuD,QAAS,SAAUrsC,EAAU4rC,GAkBzB,IAjBA,IAAIhmhB,EAGAkjhB,EAAMjmtB,KAAKimtB,IAGXsD,EAAStD,EAAIsD,OAAOrqtB,SAGpBiutB,EAAaxH,EAAUzmtB,SAGvBkutB,EAAkBD,EAAW7J,MAC7BC,EAAU0C,EAAI1C,QACd2J,EAAajH,EAAIiH,WAGdE,EAAgB7qtB,OAASghtB,GAAS,CACjCxghB,GACAwmhB,EAAOv6jB,OAAO+zC,GAElBA,EAAQwmhB,EAAOv6jB,OAAOmuhB,GAAU59D,SAASwpG,GACzCQ,EAAOlntB,QAGP,IAAK,IAAI/D,EAAI,EAAGA,EAAI4utB,EAAY5utB,IAC5BykM,EAAQwmhB,EAAOhqG,SAASx8a,GACxBwmhB,EAAOlntB,QAGX8qtB,EAAW3itB,OAAOu4L,EACrB,CAGD,OAFAoqhB,EAAWhuE,SAAqB,EAAVokE,EAEf4J,CACV,IAoBL1tR,EAAEumR,OAAS,SAAU7oC,EAAU4rC,EAAM9C,GACjC,OAAOD,EAAO9mtB,OAAO+mtB,GAAKuD,QAAQrsC,EAAU4rC,EAC/C,CAhHJ,IAoHM7pE,EAAS8mE,MAEhB,CAlI4BpY,CAAQC,EAAQ,OAAWA,EAAQ,OAAWA,EAAQ,+BCAjF/7qB,EAAOw0qB,QAUD,SAAUpnD,GAkDjB,OAhDC,SAAUv6oB,GAEP,IAAI86b,EAAIy/M,EAEJmpE,EADQ5oR,EAAEwiR,IACWoG,aAErB4B,EADQxqR,EAAEvsT,IACE+2kB,IACDxqR,EAAElia,OAEW0srB,IAAM,CAc9Bn7sB,UAAW,SAAU65sB,GACjB,OAAOA,EAAa7pE,WAAW93oB,SAASijtB,EAC3C,EAeD96sB,MAAO,SAAU0Q,GACb,IAAIi/nB,EAAamrE,EAAI96sB,MAAM0Q,GAC3B,OAAOwosB,EAAanptB,OAAO,CAAE4/oB,WAAYA,GAC5C,EA3CR,IAgDMI,EAAS3hnB,OAAO0srB,GAEvB,CA9D4Brc,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,IAEhB,WAEG,IAAIz/M,EAAIy/M,EAEJt3M,EADQnI,EAAEwiR,IACGr6Q,KAEbm+Q,EADQtmR,EAAEvsT,IACG6ykB,KACJtmR,EAAE0iR,KAKGyJ,KAAOhkR,EAAK5oR,OAAO,CAWjCrrK,KAAM,SAAU41sB,EAAQrltB,GAEpBqltB,EAASvptB,KAAKqttB,QAAU,IAAI9D,EAAO51sB,KAGjB,iBAAPzP,IACPA,EAAM6htB,EAAK52sB,MAAMjL,IAIrB,IAAIoptB,EAAkB/D,EAAOhE,UACzBgI,EAAyC,EAAlBD,EAGvBpptB,EAAIi7oB,SAAWouE,IACfrptB,EAAMqltB,EAAOhqG,SAASr7mB,IAI1BA,EAAIy9J,QAWJ,IARA,IAAI6rjB,EAAOxttB,KAAKyttB,MAAQvptB,EAAImf,QACxB4jb,EAAOjnc,KAAK0ttB,MAAQxptB,EAAImf,QAGxBsqsB,EAAYH,EAAKlK,MACjBsK,EAAY3mR,EAAKq8Q,MAGZhltB,EAAI,EAAGA,EAAIgvtB,EAAiBhvtB,IACjCqvtB,EAAUrvtB,IAAM,WAChBsvtB,EAAUtvtB,IAAM,UAEpBkvtB,EAAKruE,SAAWl4M,EAAKk4M,SAAWouE,EAGhCvttB,KAAKqC,OACR,EASDA,MAAO,WAEH,IAAIkntB,EAASvptB,KAAKqttB,QAGlB9D,EAAOlntB,QACPkntB,EAAOv6jB,OAAOhvJ,KAAK0ttB,MACtB,EAcD1+jB,OAAQ,SAAU08jB,GAId,OAHA1rtB,KAAKqttB,QAAQr+jB,OAAO08jB,GAGb1rtB,IACV,EAgBDu/mB,SAAU,SAAUmsG,GAEhB,IAAInC,EAASvptB,KAAKqttB,QAGdQ,EAAYtE,EAAOhqG,SAASmsG,GAIhC,OAHAnC,EAAOlntB,QACIkntB,EAAOhqG,SAASv/mB,KAAKyttB,MAAMpqsB,QAAQ7Y,OAAOqjtB,GAGxD,GA1HR,GA+HD,CA3I4BjgB,CAAQC,EAAQ,+BCA3C/7qB,EAAOw0qB,QAUD,SAAUpnD,GAEjB,OAAOA,CAEP,CAd4B0uD,CAAQC,EAAQ,OAAWA,EAAQ,OAAeA,EAAQ,OAAsBA,EAAQ,OAAgBA,EAAQ,OAAiBA,EAAQ,MAAoBA,EAAQ,OAAUA,EAAQ,OAAWA,EAAQ,OAAaA,EAAQ,OAAaA,EAAQ,OAAaA,EAAQ,OAAaA,EAAQ,OAAWA,EAAQ,OAAgBA,EAAQ,OAAWA,EAAQ,OAAaA,EAAQ,OAAaA,EAAQ,OAAkBA,EAAQ,OAAeA,EAAQ,MAAeA,EAAQ,OAAuBA,EAAQ,OAAeA,EAAQ,OAAeA,EAAQ,OAAmBA,EAAQ,OAAmBA,EAAQ,OAAmBA,EAAQ,OAAsBA,EAAQ,OAAoBA,EAAQ,OAAiBA,EAAQ,OAAUA,EAAQ,OAAgBA,EAAQ,MAAUA,EAAQ,OAAaA,EAAQ,OAAoBA,EAAQ,+BCAv0B/7qB,EAAOw0qB,QAUD,SAAUpnD,GA4DjB,OA1DC,WAEG,GAA0B,mBAAfxvT,YAAX,CAKA,IAEIi2X,EAFIzmE,EACM+iE,IACQ0D,UAGlBmI,EAAYnI,EAAUhysB,KAGtBo6sB,EAAUpI,EAAUhysB,KAAO,SAAUq6sB,GAqBrC,GAnBIA,aAAsBt+X,cACtBs+X,EAAa,IAAI1joB,WAAW0joB,KAK5BA,aAAsBC,WACQ,qBAAtBC,mBAAqCF,aAAsBE,mBACnEF,aAAsBG,YACtBH,aAAsB3ic,aACtB2ic,aAAsBzic,YACtByic,aAAsBpE,aACtBoE,aAAsBI,cACtBJ,aAAsBK,gBAEtBL,EAAa,IAAI1joB,WAAW0joB,EAAW1xc,OAAQ0xc,EAAW5V,WAAY4V,EAAWp+X,aAIjFo+X,aAAsB1joB,WAAY,CAMlC,IAJA,IAAIgkoB,EAAuBN,EAAWp+X,WAGlC0zX,EAAQ,GACHhltB,EAAI,EAAGA,EAAIgwtB,EAAsBhwtB,IACtCgltB,EAAMhltB,IAAM,IAAM0vtB,EAAW1vtB,IAAO,GAAMA,EAAI,EAAK,EAIvDwvtB,EAAUtutB,KAAKQ,KAAMsjtB,EAAOgL,EAC/B,MAEGR,EAAUrptB,MAAMzE,KAAMwE,UAE7B,EAEDuptB,EAAQlwtB,UAAY8ntB,CAlDnB,CAJJ,IA0DMzmE,EAAS+iE,IAAI0D,SAEpB,CAxE4B/X,CAAQC,EAAQ,+BCA3C/7qB,EAAOw0qB,QAUD,SAAUpnD,GA4PjB,OA1PC,SAAUh4nB,GAEP,IAAIu4a,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACV0D,EAAYD,EAAMC,UAClB8F,EAAS/F,EAAM+F,OACfvJ,EAASziR,EAAE0iR,KAGX5pqB,EAAI,IAGP,WACG,IAAK,IAAIj6C,EAAI,EAAGA,EAAI,GAAIA,IACpBi6C,EAAEj6C,GAAkC,WAA5B4oB,EAAKgW,IAAIhW,EAAK43O,IAAIxgQ,EAAI,IAAqB,CAF1D,IASD,IAAI2utB,EAAM/K,EAAO+K,IAAMxB,EAAOzsiB,OAAO,CACjCkkiB,SAAU,WACNljtB,KAAKuutB,MAAQ,IAAI5I,EAAUhysB,KAAK,CAC5B,WAAY,WACZ,WAAY,WAEnB,EAED80sB,gBAAiB,SAAUrwqB,EAAGuU,GAE1B,IAAK,IAAIruD,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzB,IAAIkwtB,EAAW7hqB,EAASruD,EACpBmwtB,EAAar2qB,EAAEo2qB,GAEnBp2qB,EAAEo2qB,GACgD,UAA3CC,GAAc,EAAOA,IAAe,IACO,YAA3CA,GAAc,GAAOA,IAAe,EAE9C,CAGD,IAAI70qB,EAAI55C,KAAKuutB,MAAMjL,MAEfoL,EAAct2qB,EAAEuU,EAAS,GACzBgiqB,EAAcv2qB,EAAEuU,EAAS,GACzBiiqB,EAAcx2qB,EAAEuU,EAAS,GACzBkiqB,EAAcz2qB,EAAEuU,EAAS,GACzBmiqB,EAAc12qB,EAAEuU,EAAS,GACzBoiqB,EAAc32qB,EAAEuU,EAAS,GACzBqiqB,EAAc52qB,EAAEuU,EAAS,GACzBsiqB,EAAc72qB,EAAEuU,EAAS,GACzBuiqB,EAAc92qB,EAAEuU,EAAS,GACzBwiqB,EAAc/2qB,EAAEuU,EAAS,GACzByiqB,EAAch3qB,EAAEuU,EAAS,IACzB0iqB,EAAcj3qB,EAAEuU,EAAS,IACzB2iqB,EAAcl3qB,EAAEuU,EAAS,IACzB4iqB,EAAcn3qB,EAAEuU,EAAS,IACzB6iqB,EAAcp3qB,EAAEuU,EAAS,IACzB8iqB,EAAcr3qB,EAAEuU,EAAS,IAGzBpuD,EAAIq7C,EAAE,GACNxwC,EAAIwwC,EAAE,GACNp7C,EAAIo7C,EAAE,GACN35C,EAAI25C,EAAE,GAGVr7C,EAAImxtB,EAAGnxtB,EAAG6K,EAAG5K,EAAGyB,EAAGyutB,EAAa,EAAIn2qB,EAAE,IACtCt4C,EAAIyvtB,EAAGzvtB,EAAG1B,EAAG6K,EAAG5K,EAAGmwtB,EAAa,GAAIp2qB,EAAE,IACtC/5C,EAAIkxtB,EAAGlxtB,EAAGyB,EAAG1B,EAAG6K,EAAGwltB,EAAa,GAAIr2qB,EAAE,IACtCnvC,EAAIsmtB,EAAGtmtB,EAAG5K,EAAGyB,EAAG1B,EAAGswtB,EAAa,GAAIt2qB,EAAE,IACtCh6C,EAAImxtB,EAAGnxtB,EAAG6K,EAAG5K,EAAGyB,EAAG6utB,EAAa,EAAIv2qB,EAAE,IACtCt4C,EAAIyvtB,EAAGzvtB,EAAG1B,EAAG6K,EAAG5K,EAAGuwtB,EAAa,GAAIx2qB,EAAE,IACtC/5C,EAAIkxtB,EAAGlxtB,EAAGyB,EAAG1B,EAAG6K,EAAG4ltB,EAAa,GAAIz2qB,EAAE,IACtCnvC,EAAIsmtB,EAAGtmtB,EAAG5K,EAAGyB,EAAG1B,EAAG0wtB,EAAa,GAAI12qB,EAAE,IACtCh6C,EAAImxtB,EAAGnxtB,EAAG6K,EAAG5K,EAAGyB,EAAGivtB,EAAa,EAAI32qB,EAAE,IACtCt4C,EAAIyvtB,EAAGzvtB,EAAG1B,EAAG6K,EAAG5K,EAAG2wtB,EAAa,GAAI52qB,EAAE,IACtC/5C,EAAIkxtB,EAAGlxtB,EAAGyB,EAAG1B,EAAG6K,EAAGgmtB,EAAa,GAAI72qB,EAAE,KACtCnvC,EAAIsmtB,EAAGtmtB,EAAG5K,EAAGyB,EAAG1B,EAAG8wtB,EAAa,GAAI92qB,EAAE,KACtCh6C,EAAImxtB,EAAGnxtB,EAAG6K,EAAG5K,EAAGyB,EAAGqvtB,EAAa,EAAI/2qB,EAAE,KACtCt4C,EAAIyvtB,EAAGzvtB,EAAG1B,EAAG6K,EAAG5K,EAAG+wtB,EAAa,GAAIh3qB,EAAE,KACtC/5C,EAAIkxtB,EAAGlxtB,EAAGyB,EAAG1B,EAAG6K,EAAGomtB,EAAa,GAAIj3qB,EAAE,KAGtCh6C,EAAIoxtB,EAAGpxtB,EAFP6K,EAAIsmtB,EAAGtmtB,EAAG5K,EAAGyB,EAAG1B,EAAGkxtB,EAAa,GAAIl3qB,EAAE,KAEzB/5C,EAAGyB,EAAG0utB,EAAa,EAAIp2qB,EAAE,KACtCt4C,EAAI0vtB,EAAG1vtB,EAAG1B,EAAG6K,EAAG5K,EAAGwwtB,EAAa,EAAIz2qB,EAAE,KACtC/5C,EAAImxtB,EAAGnxtB,EAAGyB,EAAG1B,EAAG6K,EAAGimtB,EAAa,GAAI92qB,EAAE,KACtCnvC,EAAIumtB,EAAGvmtB,EAAG5K,EAAGyB,EAAG1B,EAAGmwtB,EAAa,GAAIn2qB,EAAE,KACtCh6C,EAAIoxtB,EAAGpxtB,EAAG6K,EAAG5K,EAAGyB,EAAG8utB,EAAa,EAAIx2qB,EAAE,KACtCt4C,EAAI0vtB,EAAG1vtB,EAAG1B,EAAG6K,EAAG5K,EAAG4wtB,EAAa,EAAI72qB,EAAE,KACtC/5C,EAAImxtB,EAAGnxtB,EAAGyB,EAAG1B,EAAG6K,EAAGqmtB,EAAa,GAAIl3qB,EAAE,KACtCnvC,EAAIumtB,EAAGvmtB,EAAG5K,EAAGyB,EAAG1B,EAAGuwtB,EAAa,GAAIv2qB,EAAE,KACtCh6C,EAAIoxtB,EAAGpxtB,EAAG6K,EAAG5K,EAAGyB,EAAGkvtB,EAAa,EAAI52qB,EAAE,KACtCt4C,EAAI0vtB,EAAG1vtB,EAAG1B,EAAG6K,EAAG5K,EAAGgxtB,EAAa,EAAIj3qB,EAAE,KACtC/5C,EAAImxtB,EAAGnxtB,EAAGyB,EAAG1B,EAAG6K,EAAGyltB,EAAa,GAAIt2qB,EAAE,KACtCnvC,EAAIumtB,EAAGvmtB,EAAG5K,EAAGyB,EAAG1B,EAAG2wtB,EAAa,GAAI32qB,EAAE,KACtCh6C,EAAIoxtB,EAAGpxtB,EAAG6K,EAAG5K,EAAGyB,EAAGsvtB,EAAa,EAAIh3qB,EAAE,KACtCt4C,EAAI0vtB,EAAG1vtB,EAAG1B,EAAG6K,EAAG5K,EAAGowtB,EAAa,EAAIr2qB,EAAE,KACtC/5C,EAAImxtB,EAAGnxtB,EAAGyB,EAAG1B,EAAG6K,EAAG6ltB,EAAa,GAAI12qB,EAAE,KAGtCh6C,EAAIqxtB,EAAGrxtB,EAFP6K,EAAIumtB,EAAGvmtB,EAAG5K,EAAGyB,EAAG1B,EAAG+wtB,EAAa,GAAI/2qB,EAAE,KAEzB/5C,EAAGyB,EAAG8utB,EAAa,EAAIx2qB,EAAE,KACtCt4C,EAAI2vtB,EAAG3vtB,EAAG1B,EAAG6K,EAAG5K,EAAG0wtB,EAAa,GAAI32qB,EAAE,KACtC/5C,EAAIoxtB,EAAGpxtB,EAAGyB,EAAG1B,EAAG6K,EAAGimtB,EAAa,GAAI92qB,EAAE,KACtCnvC,EAAIwmtB,EAAGxmtB,EAAG5K,EAAGyB,EAAG1B,EAAGixtB,EAAa,GAAIj3qB,EAAE,KACtCh6C,EAAIqxtB,EAAGrxtB,EAAG6K,EAAG5K,EAAGyB,EAAG0utB,EAAa,EAAIp2qB,EAAE,KACtCt4C,EAAI2vtB,EAAG3vtB,EAAG1B,EAAG6K,EAAG5K,EAAGswtB,EAAa,GAAIv2qB,EAAE,KACtC/5C,EAAIoxtB,EAAGpxtB,EAAGyB,EAAG1B,EAAG6K,EAAG6ltB,EAAa,GAAI12qB,EAAE,KACtCnvC,EAAIwmtB,EAAGxmtB,EAAG5K,EAAGyB,EAAG1B,EAAG6wtB,EAAa,GAAI72qB,EAAE,KACtCh6C,EAAIqxtB,EAAGrxtB,EAAG6K,EAAG5K,EAAGyB,EAAGsvtB,EAAa,EAAIh3qB,EAAE,KACtCt4C,EAAI2vtB,EAAG3vtB,EAAG1B,EAAG6K,EAAG5K,EAAGkwtB,EAAa,GAAIn2qB,EAAE,KACtC/5C,EAAIoxtB,EAAGpxtB,EAAGyB,EAAG1B,EAAG6K,EAAGyltB,EAAa,GAAIt2qB,EAAE,KACtCnvC,EAAIwmtB,EAAGxmtB,EAAG5K,EAAGyB,EAAG1B,EAAGywtB,EAAa,GAAIz2qB,EAAE,KACtCh6C,EAAIqxtB,EAAGrxtB,EAAG6K,EAAG5K,EAAGyB,EAAGkvtB,EAAa,EAAI52qB,EAAE,KACtCt4C,EAAI2vtB,EAAG3vtB,EAAG1B,EAAG6K,EAAG5K,EAAG8wtB,EAAa,GAAI/2qB,EAAE,KACtC/5C,EAAIoxtB,EAAGpxtB,EAAGyB,EAAG1B,EAAG6K,EAAGqmtB,EAAa,GAAIl3qB,EAAE,KAGtCh6C,EAAIsxtB,EAAGtxtB,EAFP6K,EAAIwmtB,EAAGxmtB,EAAG5K,EAAGyB,EAAG1B,EAAGqwtB,EAAa,GAAIr2qB,EAAE,KAEzB/5C,EAAGyB,EAAGyutB,EAAa,EAAIn2qB,EAAE,KACtCt4C,EAAI4vtB,EAAG5vtB,EAAG1B,EAAG6K,EAAG5K,EAAGywtB,EAAa,GAAI12qB,EAAE,KACtC/5C,EAAIqxtB,EAAGrxtB,EAAGyB,EAAG1B,EAAG6K,EAAGomtB,EAAa,GAAIj3qB,EAAE,KACtCnvC,EAAIymtB,EAAGzmtB,EAAG5K,EAAGyB,EAAG1B,EAAGwwtB,EAAa,GAAIx2qB,EAAE,KACtCh6C,EAAIsxtB,EAAGtxtB,EAAG6K,EAAG5K,EAAGyB,EAAGqvtB,EAAa,EAAI/2qB,EAAE,KACtCt4C,EAAI4vtB,EAAG5vtB,EAAG1B,EAAG6K,EAAG5K,EAAGqwtB,EAAa,GAAIt2qB,EAAE,KACtC/5C,EAAIqxtB,EAAGrxtB,EAAGyB,EAAG1B,EAAG6K,EAAGgmtB,EAAa,GAAI72qB,EAAE,KACtCnvC,EAAIymtB,EAAGzmtB,EAAG5K,EAAGyB,EAAG1B,EAAGowtB,EAAa,GAAIp2qB,EAAE,KACtCh6C,EAAIsxtB,EAAGtxtB,EAAG6K,EAAG5K,EAAGyB,EAAGivtB,EAAa,EAAI32qB,EAAE,KACtCt4C,EAAI4vtB,EAAG5vtB,EAAG1B,EAAG6K,EAAG5K,EAAGixtB,EAAa,GAAIl3qB,EAAE,KACtC/5C,EAAIqxtB,EAAGrxtB,EAAGyB,EAAG1B,EAAG6K,EAAG4ltB,EAAa,GAAIz2qB,EAAE,KACtCnvC,EAAIymtB,EAAGzmtB,EAAG5K,EAAGyB,EAAG1B,EAAGgxtB,EAAa,GAAIh3qB,EAAE,KACtCh6C,EAAIsxtB,EAAGtxtB,EAAG6K,EAAG5K,EAAGyB,EAAG6utB,EAAa,EAAIv2qB,EAAE,KACtCt4C,EAAI4vtB,EAAG5vtB,EAAG1B,EAAG6K,EAAG5K,EAAG6wtB,EAAa,GAAI92qB,EAAE,KACtC/5C,EAAIqxtB,EAAGrxtB,EAAGyB,EAAG1B,EAAG6K,EAAGwltB,EAAa,GAAIr2qB,EAAE,KACtCnvC,EAAIymtB,EAAGzmtB,EAAG5K,EAAGyB,EAAG1B,EAAG4wtB,EAAa,GAAI52qB,EAAE,KAGtCqB,EAAE,GAAMA,EAAE,GAAKr7C,EAAK,EACpBq7C,EAAE,GAAMA,EAAE,GAAKxwC,EAAK,EACpBwwC,EAAE,GAAMA,EAAE,GAAKp7C,EAAK,EACpBo7C,EAAE,GAAMA,EAAE,GAAK35C,EAAK,CACvB,EAED0mtB,YAAa,WAET,IAAI37rB,EAAOhrB,KAAKivK,MACZm8iB,EAAYpgsB,EAAKs4rB,MAEjBwM,EAAgC,EAAnB9vtB,KAAKirtB,YAClB8E,EAA4B,EAAhB/ksB,EAAKm0nB,SAGrBisE,EAAU2E,IAAc,IAAM,KAAS,GAAKA,EAAY,GAExD,IAAIC,EAAc9osB,EAAKC,MAAM2osB,EAAa,YACtCG,EAAcH,EAClB1E,EAA4C,IAA/B2E,EAAY,KAAQ,GAAM,IACa,UAA7CC,GAAe,EAAOA,IAAgB,IACO,YAA7CA,GAAe,GAAOA,IAAgB,GAE7C5E,EAA4C,IAA/B2E,EAAY,KAAQ,GAAM,IACa,UAA7CE,GAAe,EAAOA,IAAgB,IACO,YAA7CA,GAAe,GAAOA,IAAgB,GAG7CjlsB,EAAKm0nB,SAAoC,GAAxBisE,EAAU7otB,OAAS,GAGpCvC,KAAK0mtB,WAOL,IAJA,IAAIj5sB,EAAOzN,KAAKuutB,MACZ30qB,EAAInsC,EAAK61sB,MAGJhltB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IAAI4xtB,EAAMt2qB,EAAEt7C,GAEZs7C,EAAEt7C,GAAqC,UAA7B4xtB,GAAO,EAAOA,IAAQ,IACO,YAA7BA,GAAO,GAAOA,IAAQ,EACnC,CAGD,OAAOzitB,CACV,EAED4V,MAAO,WACH,IAAIA,EAAQoosB,EAAOposB,MAAM7jB,KAAKQ,MAG9B,OAFAqjB,EAAMkrsB,MAAQvutB,KAAKuutB,MAAMlrsB,QAElBA,CACV,IAGL,SAASqssB,EAAGnxtB,EAAG6K,EAAG5K,EAAGyB,EAAGmuC,EAAGzuC,EAAG5B,GAC1B,IAAIG,EAAIK,GAAM6K,EAAI5K,GAAO4K,EAAInJ,GAAMmuC,EAAIrwC,EACvC,OAASG,GAAKyB,EAAMzB,IAAO,GAAKyB,GAAOyJ,CAC1C,CAED,SAASumtB,EAAGpxtB,EAAG6K,EAAG5K,EAAGyB,EAAGmuC,EAAGzuC,EAAG5B,GAC1B,IAAIG,EAAIK,GAAM6K,EAAInJ,EAAMzB,GAAKyB,GAAMmuC,EAAIrwC,EACvC,OAASG,GAAKyB,EAAMzB,IAAO,GAAKyB,GAAOyJ,CAC1C,CAED,SAASwmtB,EAAGrxtB,EAAG6K,EAAG5K,EAAGyB,EAAGmuC,EAAGzuC,EAAG5B,GAC1B,IAAIG,EAAIK,GAAK6K,EAAI5K,EAAIyB,GAAKmuC,EAAIrwC,EAC9B,OAASG,GAAKyB,EAAMzB,IAAO,GAAKyB,GAAOyJ,CAC1C,CAED,SAASymtB,EAAGtxtB,EAAG6K,EAAG5K,EAAGyB,EAAGmuC,EAAGzuC,EAAG5B,GAC1B,IAAIG,EAAIK,GAAKC,GAAK4K,GAAKnJ,IAAMmuC,EAAIrwC,EACjC,OAASG,GAAKyB,EAAMzB,IAAO,GAAKyB,GAAOyJ,CAC1C,CAgBDq2b,EAAEwtR,IAAMxB,EAAOnH,cAAc2I,GAgB7BxtR,EAAE0wR,QAAU1E,EAAOE,kBAAkBsB,EAtPxC,EAuPC/lsB,MAGKg4nB,EAAS+tE,GAEhB,CAxQ4Brf,CAAQC,EAAQ,+BCA3C/7qB,EAAOw0qB,QAUD,SAAUpnD,GAgEjB,OA3DAA,EAAS9vmB,KAAKghrB,IAAO,WACjB,IAAIA,EAAMlxE,EAAS+iE,IAAImF,gBAAgBpoiB,SA+BvC,SAASqxiB,EAA4B/M,EAAO32pB,EAAQ44pB,EAAWwB,GAC3D,IAAIuJ,EAGAjJ,EAAKrntB,KAAKyntB,IAGVJ,GACAiJ,EAAYjJ,EAAG/jtB,MAAM,GAGrBtD,KAAKyntB,SAAM9itB,GAEX2rtB,EAAYtwtB,KAAK4ntB,WAErBb,EAAOhD,aAAauM,EAAW,GAG/B,IAAK,IAAIhytB,EAAI,EAAGA,EAAIintB,EAAWjntB,IAC3BgltB,EAAM32pB,EAASruD,IAAMgytB,EAAUhytB,EAEtC,CAED,OApDA8xtB,EAAI9I,UAAY8I,EAAIpxiB,OAAO,CACvB6oiB,aAAc,SAAUvE,EAAO32pB,GAE3B,IAAIo6pB,EAAS/mtB,KAAKwntB,QACdjC,EAAYwB,EAAOxB,UAEvB8K,EAA4B7wtB,KAAKQ,KAAMsjtB,EAAO32pB,EAAQ44pB,EAAWwB,GAGjE/mtB,KAAK4ntB,WAAatE,EAAMhgtB,MAAMqpD,EAAQA,EAAS44pB,EAClD,IAGL6K,EAAI7I,UAAY6I,EAAIpxiB,OAAO,CACvB6oiB,aAAc,SAAUvE,EAAO32pB,GAE3B,IAAIo6pB,EAAS/mtB,KAAKwntB,QACdjC,EAAYwB,EAAOxB,UAGnBuC,EAAYxE,EAAMhgtB,MAAMqpD,EAAQA,EAAS44pB,GAE7C8K,EAA4B7wtB,KAAKQ,KAAMsjtB,EAAO32pB,EAAQ44pB,EAAWwB,GAGjE/mtB,KAAK4ntB,WAAaE,CACrB,IA0BEsI,CACV,CAxDoB,GA2DdlxE,EAAS9vmB,KAAKghrB,GAErB,CA5E4BxiB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GAoGjB,OA7FAA,EAAS9vmB,KAAKmhrB,WAAc,WACxB,IAAIA,EAAarxE,EAAS+iE,IAAImF,gBAAgBpoiB,SAEjD,SAASwxiB,EAAQ7mpB,GAEhB,GAA8B,OAAxBA,GAAQ,GAAM,KAAgB,CACpC,IAAI0wL,EAAM1wL,GAAQ,GAAI,IAClB8wL,EAAM9wL,GAAQ,EAAG,IACjBq3N,EAAY,IAAPr3N,EAEE,MAAP0wL,GAEJA,EAAK,EACM,MAAPI,GAEHA,EAAK,EACM,MAAPumC,EAEHA,EAAK,IAIHA,KAKDvmC,KAKDJ,EAGF1wL,EAAO,EACPA,GAAS0wL,GAAM,GACf1wL,GAAS8wL,GAAM,EACf9wL,GAAQq3N,CACP,MAGDr3N,GAAS,GAAQ,GAEjB,OAAOA,CACP,CAED,SAAS6hP,EAAWriC,GAOnB,OAL2C,KAAtCA,EAAQ,GAAKqnc,EAAQrnc,EAAQ,OAGjCA,EAAQ,GAAKqnc,EAAQrnc,EAAQ,KAEvBA,CACP,CAEE,IAAIm+b,EAAYiJ,EAAWjJ,UAAYiJ,EAAWvxiB,OAAO,CACrD6oiB,aAAc,SAAUvE,EAAO32pB,GAE3B,IAAIo6pB,EAAS/mtB,KAAKwntB,QACdjC,EAAYwB,EAAOxB,UACnB8B,EAAKrntB,KAAKyntB,IACVt+b,EAAUnpR,KAAKywtB,SAGfpJ,IACAl+b,EAAUnpR,KAAKywtB,SAAWpJ,EAAG/jtB,MAAM,GAGnCtD,KAAKyntB,SAAM9itB,GAGxB6mT,EAAWriC,GAEX,IAAImnc,EAAYnnc,EAAQ7lR,MAAM,GACrByjtB,EAAOhD,aAAauM,EAAW,GAG/B,IAAK,IAAIhytB,EAAI,EAAGA,EAAIintB,EAAWjntB,IAC3BgltB,EAAM32pB,EAASruD,IAAMgytB,EAAUhytB,EAEtC,IAKL,OAFAiytB,EAAWhJ,UAAYD,EAEhBiJ,CACV,CAxF2B,GA6FrBrxE,EAAS9vmB,KAAKmhrB,UAErB,CAhH4B3iB,CAAQC,EAAQ,OAAWA,EAAQ,8BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GA0CjB,OArCAA,EAAS9vmB,KAAKshrB,IAAO,WACjB,IAAIA,EAAMxxE,EAAS+iE,IAAImF,gBAAgBpoiB,SAEnCsoiB,EAAYoJ,EAAIpJ,UAAYoJ,EAAI1xiB,OAAO,CACvC6oiB,aAAc,SAAUvE,EAAO32pB,GAE3B,IAAIo6pB,EAAS/mtB,KAAKwntB,QACdjC,EAAYwB,EAAOxB,UACnB8B,EAAKrntB,KAAKyntB,IACVt+b,EAAUnpR,KAAKywtB,SAGfpJ,IACAl+b,EAAUnpR,KAAKywtB,SAAWpJ,EAAG/jtB,MAAM,GAGnCtD,KAAKyntB,SAAM9itB,GAEf,IAAI2rtB,EAAYnnc,EAAQ7lR,MAAM,GAC9ByjtB,EAAOhD,aAAauM,EAAW,GAG/Bnnc,EAAQo8b,EAAY,GAAMp8b,EAAQo8b,EAAY,GAAK,EAAK,EAGxD,IAAK,IAAIjntB,EAAI,EAAGA,EAAIintB,EAAWjntB,IAC3BgltB,EAAM32pB,EAASruD,IAAMgytB,EAAUhytB,EAEtC,IAKL,OAFAoytB,EAAInJ,UAAYD,EAEToJ,CACV,CAlCoB,GAqCdxxE,EAAS9vmB,KAAKshrB,GAErB,CAtD4B9iB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GAwBjB,OAnBAA,EAAS9vmB,KAAKuhrB,IAAO,WACjB,IAAIA,EAAMzxE,EAAS+iE,IAAImF,gBAAgBpoiB,SAcvC,OAZA2xiB,EAAIrJ,UAAYqJ,EAAI3xiB,OAAO,CACvB6oiB,aAAc,SAAUvE,EAAO32pB,GAC3B3sD,KAAKwntB,QAAQzD,aAAaT,EAAO32pB,EACpC,IAGLgkqB,EAAIpJ,UAAYoJ,EAAI3xiB,OAAO,CACvB6oiB,aAAc,SAAUvE,EAAO32pB,GAC3B3sD,KAAKwntB,QAAQvD,aAAaX,EAAO32pB,EACpC,IAGEgkqB,CACV,CAhBoB,GAmBdzxE,EAAS9vmB,KAAKuhrB,GAErB,CApC4B/iB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GAsCjB,OAjCAA,EAAS9vmB,KAAKwhrB,IAAO,WACjB,IAAIA,EAAM1xE,EAAS+iE,IAAImF,gBAAgBpoiB,SAEnCsoiB,EAAYsJ,EAAItJ,UAAYsJ,EAAI5xiB,OAAO,CACvC6oiB,aAAc,SAAUvE,EAAO32pB,GAE3B,IAAIo6pB,EAAS/mtB,KAAKwntB,QACdjC,EAAYwB,EAAOxB,UACnB8B,EAAKrntB,KAAKyntB,IACV6I,EAAYtwtB,KAAK6wtB,WAGjBxJ,IACAiJ,EAAYtwtB,KAAK6wtB,WAAaxJ,EAAG/jtB,MAAM,GAGvCtD,KAAKyntB,SAAM9itB,GAEfoitB,EAAOhD,aAAauM,EAAW,GAG/B,IAAK,IAAIhytB,EAAI,EAAGA,EAAIintB,EAAWjntB,IAC3BgltB,EAAM32pB,EAASruD,IAAMgytB,EAAUhytB,EAEtC,IAKL,OAFAsytB,EAAIrJ,UAAYD,EAETsJ,CACV,CA9BoB,GAiCd1xE,EAAS9vmB,KAAKwhrB,GAErB,CAlD4BhjB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GAiCjB,OA5BAA,EAAS/7lB,IAAI2tqB,SAAW,CACpB3tqB,IAAK,SAAUn4B,EAAMu6rB,GAEjB,IAAI8F,EAAergsB,EAAKm0nB,SACpB6oE,EAA6B,EAAZzC,EAGjB0C,EAAgBD,EAAiBqD,EAAerD,EAGhD+I,EAAc1F,EAAepD,EAAgB,EAGjDj9rB,EAAK22I,QACL32I,EAAKs4rB,MAAMyN,IAAgB,IAAM9I,GAAkB,GAAM8I,EAAc,EAAK,EAC5E/lsB,EAAKm0nB,UAAY8oE,CACpB,EAEDG,MAAO,SAAUp9rB,GAEb,IAAIi9rB,EAAwD,IAAxCj9rB,EAAKs4rB,MAAOt4rB,EAAKm0nB,SAAW,IAAO,GAGvDn0nB,EAAKm0nB,UAAY8oE,CACpB,GAIE/oE,EAAS/7lB,IAAI6tqB,QAEpB,CA7C4BpjB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GA4BjB,OAvBAA,EAAS/7lB,IAAI8tqB,SAAW,CACpB9tqB,IAAK,SAAUn4B,EAAMu6rB,GAEjB,IAAIyC,EAA6B,EAAZzC,EAGjB0C,EAAgBD,EAAiBh9rB,EAAKm0nB,SAAW6oE,EAGrDh9rB,EAAKxgB,OAAO00oB,EAAS+iE,IAAI0D,UAAUv+rB,OAAO6gsB,EAAgB,IACrDz9sB,OAAO00oB,EAAS+iE,IAAI0D,UAAUzmtB,OAAO,CAAC+otB,GAAiB,IAAK,GACpE,EAEDG,MAAO,SAAUp9rB,GAEb,IAAIi9rB,EAAwD,IAAxCj9rB,EAAKs4rB,MAAOt4rB,EAAKm0nB,SAAW,IAAO,GAGvDn0nB,EAAKm0nB,UAAY8oE,CACpB,GAIE/oE,EAAS/7lB,IAAI8tqB,QAEpB,CAxC4BrjB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GAwBjB,OAnBAA,EAAS/7lB,IAAI+tqB,SAAW,CACpB/tqB,IAAK,SAAUn4B,EAAMu6rB,GAEjBv6rB,EAAKxgB,OAAO00oB,EAAS+iE,IAAI0D,UAAUzmtB,OAAO,CAAC,YAAa,IAGxDggpB,EAAS/7lB,IAAIguqB,YAAYhuqB,IAAIn4B,EAAMu6rB,EACtC,EAED6C,MAAO,SAAUp9rB,GAEbk0nB,EAAS/7lB,IAAIguqB,YAAY/I,MAAMp9rB,GAG/BA,EAAKm0nB,UACR,GAIED,EAAS/7lB,IAAI+tqB,QAEpB,CApC4BtjB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GAcjB,OATAA,EAAS/7lB,IAAIiuqB,UAAY,CACrBjuqB,IAAK,WACJ,EAEDilqB,MAAO,WACN,GAIElpE,EAAS/7lB,IAAIiuqB,SAEpB,CA1B4BxjB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GA+BjB,OA1BAA,EAAS/7lB,IAAIguqB,YAAc,CACvBhuqB,IAAK,SAAUn4B,EAAMu6rB,GAEjB,IAAIyC,EAA6B,EAAZzC,EAGrBv6rB,EAAK22I,QACL32I,EAAKm0nB,UAAY6oE,GAAmBh9rB,EAAKm0nB,SAAW6oE,GAAmBA,EAC1E,EAEDI,MAAO,SAAUp9rB,GAEb,IAAIogsB,EAAYpgsB,EAAKs4rB,MAGjBhltB,EAAI0sB,EAAKm0nB,SAAW,EACxB,IAAS7gpB,EAAI0sB,EAAKm0nB,SAAW,EAAG7gpB,GAAK,EAAGA,IACpC,GAAM8stB,EAAU9stB,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,IAAO,CACtD0sB,EAAKm0nB,SAAW7gpB,EAAI,EACpB,KACH,CAER,GAIE4gpB,EAAS/7lB,IAAIguqB,WAEpB,CA3C4BvjB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GAiIjB,OA/HC,WAEG,IAAIz/M,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACVr6Q,EAAO89Q,EAAM99Q,KACb+9Q,EAAYD,EAAMC,UAClBzD,EAASziR,EAAE0iR,KACXkP,EAASnP,EAAOmP,OAChBzF,EAAO1J,EAAO0J,KAKd0F,EAASpP,EAAOoP,OAAS1pR,EAAK5oR,OAAO,CAQrCiniB,IAAKr+Q,EAAK5oR,OAAO,CACbukiB,QAAS,EACTgG,OAAQ8H,EACRnE,WAAY,OAchBv5sB,KAAM,SAAUsysB,GACZjmtB,KAAKimtB,IAAMjmtB,KAAKimtB,IAAIjniB,OAAOiniB,EAC9B,EAcDuD,QAAS,SAAUrsC,EAAU4rC,GAkBzB,IAhBA,IAAI9C,EAAMjmtB,KAAKimtB,IAGXsL,EAAO3F,EAAK1stB,OAAO+mtB,EAAIsD,OAAQpsC,GAG/BgwC,EAAaxH,EAAUzmtB,SACvBsytB,EAAa7L,EAAUzmtB,OAAO,CAAC,IAG/BkutB,EAAkBD,EAAW7J,MAC7BmO,EAAkBD,EAAWlO,MAC7BC,EAAU0C,EAAI1C,QACd2J,EAAajH,EAAIiH,WAGdE,EAAgB7qtB,OAASghtB,GAAS,CACrC,IAAIxghB,EAAQwuhB,EAAKvikB,OAAO+5jB,GAAMxpG,SAASiyG,GACvCD,EAAKlvtB,QAQL,IALA,IAAIqvtB,EAAa3uhB,EAAMughB,MACnBqO,EAAmBD,EAAWnvtB,OAG9BqvtB,EAAe7uhB,EACVzkM,EAAI,EAAGA,EAAI4utB,EAAY5utB,IAAK,CACjCsztB,EAAeL,EAAKhyG,SAASqyG,GAC7BL,EAAKlvtB,QAML,IAHA,IAAIwvtB,EAAoBD,EAAatO,MAG5BhzrB,EAAI,EAAGA,EAAIqhsB,EAAkBrhsB,IAClCohsB,EAAWphsB,IAAMuhsB,EAAkBvhsB,EAE1C,CAED68rB,EAAW3itB,OAAOu4L,GAClB0uhB,EAAgB,IACnB,CAGD,OAFAtE,EAAWhuE,SAAqB,EAAVokE,EAEf4J,CACV,IAoBL1tR,EAAE6xR,OAAS,SAAUn0C,EAAU4rC,EAAM9C,GACjC,OAAOqL,EAAOpytB,OAAO+mtB,GAAKuD,QAAQrsC,EAAU4rC,EAC/C,CA3HJ,IA+HM7pE,EAASoyE,MAEhB,CA7I4B1jB,CAAQC,EAAQ,OAAWA,EAAQ,OAAaA,EAAQ,+BCAnF/7qB,EAAOw0qB,QAUD,SAAUpnD,GA8KjB,OA5KC,WAEG,IAAIz/M,EAAIy/M,EAEJioE,EADQ1nR,EAAEwiR,IACWkF,aACrBjF,EAASziR,EAAE0iR,KAGXl0pB,EAAK,GACL6jqB,EAAK,GACLx5qB,EAAK,GASLy5qB,EAAe7P,EAAO6P,aAAe5K,EAAanoiB,OAAO,CACzDkkiB,SAAU,WAEN,IAAIp1pB,EAAI9tD,KAAKssB,KAAKg3rB,MACd+D,EAAKrntB,KAAKimtB,IAAIoB,GAGd/4pB,EAAItuD,KAAK80S,GAAK,CACdhnP,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAI/B2xY,EAAIz/b,KAAKgytB,GAAK,CACblkqB,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,IAI3D9tD,KAAKkpE,GAAK,EAGV,IAAK,IAAI5qE,EAAI,EAAGA,EAAI,EAAGA,IACnBipE,EAAU/nE,KAAKQ,MAInB,IAAS1B,EAAI,EAAGA,EAAI,EAAGA,IACnBmhc,EAAEnhc,IAAMgwD,EAAGhwD,EAAI,EAAK,GAIxB,GAAI+otB,EAAI,CAEJ,IAAI4K,EAAK5K,EAAG/D,MACR4O,EAAOD,EAAG,GACVE,EAAOF,EAAG,GAGVG,EAAsC,UAA9BF,GAAQ,EAAMA,IAAS,IAAsD,YAA9BA,GAAQ,GAAOA,IAAS,GAC/EG,EAAsC,UAA9BF,GAAQ,EAAMA,IAAS,IAAsD,YAA9BA,GAAQ,GAAOA,IAAS,GAC/EG,EAAMF,IAAO,GAAY,WAALC,EACpBE,EAAMF,GAAM,GAAa,MAALD,EAaxB,IAVA3yR,EAAE,IAAM2yR,EACR3yR,EAAE,IAAM6yR,EACR7yR,EAAE,IAAM4yR,EACR5yR,EAAE,IAAM8yR,EACR9yR,EAAE,IAAM2yR,EACR3yR,EAAE,IAAM6yR,EACR7yR,EAAE,IAAM4yR,EACR5yR,EAAE,IAAM8yR,EAGCj0tB,EAAI,EAAGA,EAAI,EAAGA,IACnBipE,EAAU/nE,KAAKQ,KAEtB,CACJ,EAEDyotB,gBAAiB,SAAUrwqB,EAAGuU,GAE1B,IAAI2B,EAAItuD,KAAK80S,GAGbvtO,EAAU/nE,KAAKQ,MAGfiuD,EAAE,GAAKK,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCL,EAAE,GAAKK,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCL,EAAE,GAAKK,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCL,EAAE,GAAKK,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GAEvC,IAAK,IAAIhwD,EAAI,EAAGA,EAAI,EAAGA,IAEnB2vD,EAAE3vD,GAAuC,UAA/B2vD,EAAE3vD,IAAM,EAAO2vD,EAAE3vD,KAAO,IACO,YAA/B2vD,EAAE3vD,IAAM,GAAO2vD,EAAE3vD,KAAO,GAGlC85C,EAAEuU,EAASruD,IAAM2vD,EAAE3vD,EAE1B,EAEDintB,UAAW,EAEXC,OAAQ,IAGZ,SAASj+oB,IAML,IAJA,IAAIjZ,EAAItuD,KAAK80S,GACT2qJ,EAAIz/b,KAAKgytB,GAGJ1ztB,EAAI,EAAGA,EAAI,EAAGA,IACnBwztB,EAAGxztB,GAAKmhc,EAAEnhc,GAed,IAXAmhc,EAAE,GAAMA,EAAE,GAAK,WAAaz/b,KAAKkpE,GAAM,EACvCu2X,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,WAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,WAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtE9xtB,KAAKkpE,GAAMu2X,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,EAGpCxztB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIk0tB,EAAKlkqB,EAAEhwD,GAAKmhc,EAAEnhc,GAGdm0tB,EAAU,MAALD,EACLE,EAAKF,IAAO,GAGZG,IAASF,EAAKA,IAAQ,IAAMA,EAAKC,IAAQ,IAAMA,EAAKA,EACpDE,IAAa,WAALJ,GAAmBA,EAAM,KAAa,MAALA,GAAmBA,EAAM,GAGtEl6qB,EAAEh6C,GAAKq0tB,EAAKC,CACf,CAGDtkqB,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,CAC3D,CAUDmnZ,EAAEsyR,aAAe5K,EAAa7C,cAAcyN,EAxK/C,IA4KM7yE,EAAS6yE,YAEhB,CA1L4BnkB,CAAQC,EAAQ,OAAWA,EAAQ,OAAiBA,EAAQ,OAAUA,EAAQ,OAAaA,EAAQ,+BCA9H/7qB,EAAOw0qB,QAUD,SAAUpnD,GAgLjB,OA9KC,WAEG,IAAIz/M,EAAIy/M,EAEJioE,EADQ1nR,EAAEwiR,IACWkF,aACrBjF,EAASziR,EAAE0iR,KAGXl0pB,EAAK,GACL6jqB,EAAK,GACLx5qB,EAAK,GAKLu6qB,EAAS3Q,EAAO2Q,OAAS1L,EAAanoiB,OAAO,CAC7CkkiB,SAAU,WAMN,IAJA,IAAIp1pB,EAAI9tD,KAAKssB,KAAKg3rB,MACd+D,EAAKrntB,KAAKimtB,IAAIoB,GAGT/otB,EAAI,EAAGA,EAAI,EAAGA,IACnBwvD,EAAExvD,GAAuC,UAA/BwvD,EAAExvD,IAAM,EAAOwvD,EAAExvD,KAAO,IACO,YAA/BwvD,EAAExvD,IAAM,GAAOwvD,EAAExvD,KAAO,GAItC,IAAIgwD,EAAItuD,KAAK80S,GAAK,CACdhnP,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAI/B2xY,EAAIz/b,KAAKgytB,GAAK,CACblkqB,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,IAO3D,IAHA9tD,KAAKkpE,GAAK,EAGD5qE,EAAI,EAAGA,EAAI,EAAGA,IACnBipE,EAAU/nE,KAAKQ,MAInB,IAAS1B,EAAI,EAAGA,EAAI,EAAGA,IACnBmhc,EAAEnhc,IAAMgwD,EAAGhwD,EAAI,EAAK,GAIxB,GAAI+otB,EAAI,CAEJ,IAAI4K,EAAK5K,EAAG/D,MACR4O,EAAOD,EAAG,GACVE,EAAOF,EAAG,GAGVG,EAAsC,UAA9BF,GAAQ,EAAMA,IAAS,IAAsD,YAA9BA,GAAQ,GAAOA,IAAS,GAC/EG,EAAsC,UAA9BF,GAAQ,EAAMA,IAAS,IAAsD,YAA9BA,GAAQ,GAAOA,IAAS,GAC/EG,EAAMF,IAAO,GAAY,WAALC,EACpBE,EAAMF,GAAM,GAAa,MAALD,EAaxB,IAVA3yR,EAAE,IAAM2yR,EACR3yR,EAAE,IAAM6yR,EACR7yR,EAAE,IAAM4yR,EACR5yR,EAAE,IAAM8yR,EACR9yR,EAAE,IAAM2yR,EACR3yR,EAAE,IAAM6yR,EACR7yR,EAAE,IAAM4yR,EACR5yR,EAAE,IAAM8yR,EAGCj0tB,EAAI,EAAGA,EAAI,EAAGA,IACnBipE,EAAU/nE,KAAKQ,KAEtB,CACJ,EAEDyotB,gBAAiB,SAAUrwqB,EAAGuU,GAE1B,IAAI2B,EAAItuD,KAAK80S,GAGbvtO,EAAU/nE,KAAKQ,MAGfiuD,EAAE,GAAKK,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCL,EAAE,GAAKK,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCL,EAAE,GAAKK,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCL,EAAE,GAAKK,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GAEvC,IAAK,IAAIhwD,EAAI,EAAGA,EAAI,EAAGA,IAEnB2vD,EAAE3vD,GAAuC,UAA/B2vD,EAAE3vD,IAAM,EAAO2vD,EAAE3vD,KAAO,IACO,YAA/B2vD,EAAE3vD,IAAM,GAAO2vD,EAAE3vD,KAAO,GAGlC85C,EAAEuU,EAASruD,IAAM2vD,EAAE3vD,EAE1B,EAEDintB,UAAW,EAEXC,OAAQ,IAGZ,SAASj+oB,IAML,IAJA,IAAIjZ,EAAItuD,KAAK80S,GACT2qJ,EAAIz/b,KAAKgytB,GAGJ1ztB,EAAI,EAAGA,EAAI,EAAGA,IACnBwztB,EAAGxztB,GAAKmhc,EAAEnhc,GAed,IAXAmhc,EAAE,GAAMA,EAAE,GAAK,WAAaz/b,KAAKkpE,GAAM,EACvCu2X,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,WAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,WAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEryR,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,GAAM,EACtE9xtB,KAAKkpE,GAAMu2X,EAAE,KAAO,EAAMqyR,EAAG,KAAO,EAAK,EAAI,EAGpCxztB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIk0tB,EAAKlkqB,EAAEhwD,GAAKmhc,EAAEnhc,GAGdm0tB,EAAU,MAALD,EACLE,EAAKF,IAAO,GAGZG,IAASF,EAAKA,IAAQ,IAAMA,EAAKC,IAAQ,IAAMA,EAAKA,EACpDE,IAAa,WAALJ,GAAmBA,EAAM,KAAa,MAALA,GAAmBA,EAAM,GAGtEl6qB,EAAEh6C,GAAKq0tB,EAAKC,CACf,CAGDtkqB,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFgW,EAAE,GAAMhW,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,CAC3D,CAUDmnZ,EAAEozR,OAAS1L,EAAa7C,cAAcuO,EA1KzC,IA8KM3zE,EAAS2zE,MAEhB,CA5L4BjlB,CAAQC,EAAQ,OAAWA,EAAQ,OAAiBA,EAAQ,OAAUA,EAAQ,OAAaA,EAAQ,8BCA9H/7qB,EAAOw0qB,QAUD,SAAUpnD,GA2HjB,OAzHC,WAEG,IAAIz/M,EAAIy/M,EAEJioE,EADQ1nR,EAAEwiR,IACWkF,aACrBjF,EAASziR,EAAE0iR,KAKX2Q,EAAM5Q,EAAO4Q,IAAM3L,EAAanoiB,OAAO,CACvCkkiB,SAAU,WAQN,IANA,IAAIh/sB,EAAMlE,KAAKssB,KACX+2rB,EAAWn/sB,EAAIo/sB,MACfyP,EAAc7utB,EAAIi7oB,SAGlBlxlB,EAAIjuD,KAAKgztB,GAAK,GACT10tB,EAAI,EAAGA,EAAI,IAAKA,IACrB2vD,EAAE3vD,GAAKA,EAIFA,EAAI,EAAb,IAAK,IAAWgyB,EAAI,EAAGhyB,EAAI,IAAKA,IAAK,CACjC,IAAI20tB,EAAe30tB,EAAIy0tB,EACnBG,EAAW7P,EAAS4P,IAAiB,KAAQ,GAAMA,EAAe,EAAK,EAAM,IAEjF3isB,GAAKA,EAAI29B,EAAE3vD,GAAK40tB,GAAW,IAG3B,IAAIn1tB,EAAIkwD,EAAE3vD,GACV2vD,EAAE3vD,GAAK2vD,EAAE39B,GACT29B,EAAE39B,GAAKvyB,CACV,CAGDiC,KAAKm1C,GAAKn1C,KAAKg6H,GAAK,CACvB,EAEDyulB,gBAAiB,SAAUrwqB,EAAGuU,GAC1BvU,EAAEuU,IAAWwmqB,EAAsB3ztB,KAAKQ,KAC3C,EAEDujtB,QAAS,EAETiC,OAAQ,IAGZ,SAAS2N,IAQL,IANA,IAAIllqB,EAAIjuD,KAAKgztB,GACT10tB,EAAI0B,KAAKm1C,GACT7kB,EAAItwB,KAAKg6H,GAGTo5lB,EAAgB,EACXl1tB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExBoyB,GAAKA,EAAI29B,EADT3vD,GAAKA,EAAI,GAAK,MACG,IAGjB,IAAIP,EAAIkwD,EAAE3vD,GACV2vD,EAAE3vD,GAAK2vD,EAAE39B,GACT29B,EAAE39B,GAAKvyB,EAEPq1tB,GAAiBnlqB,GAAGA,EAAE3vD,GAAK2vD,EAAE39B,IAAM,MAAS,GAAS,EAAJpyB,CACpD,CAMD,OAHA8B,KAAKm1C,GAAK72C,EACV0B,KAAKg6H,GAAK1pG,EAEH8isB,CACV,CAUD3zR,EAAEqzR,IAAM3L,EAAa7C,cAAcwO,GAKnC,IAAIO,EAAUnR,EAAOmR,QAAUP,EAAI9ziB,OAAO,CAMtCiniB,IAAK6M,EAAI7M,IAAIjniB,OAAO,CAChBjnD,KAAM,MAGVmrlB,SAAU,WACN4P,EAAI5P,SAAS1jtB,KAAKQ,MAGlB,IAAK,IAAI1B,EAAI0B,KAAKimtB,IAAIlulB,KAAMz5H,EAAI,EAAGA,IAC/B60tB,EAAsB3ztB,KAAKQ,KAElC,IAWLy/b,EAAE4zR,QAAUlM,EAAa7C,cAAc+O,EArH1C,IAyHMn0E,EAAS4zE,GAEhB,CAvI4BllB,CAAQC,EAAQ,OAAWA,EAAQ,OAAiBA,EAAQ,OAAUA,EAAQ,OAAaA,EAAQ,+BCA9H/7qB,EAAOw0qB,QAUD,SAAUpnD,GA2PjB,OA9OC,SAAUh4nB,GAEP,IAAIu4a,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACV0D,EAAYD,EAAMC,UAClB8F,EAAS/F,EAAM+F,OACfvJ,EAASziR,EAAE0iR,KAGXmR,EAAM3N,EAAUzmtB,OAAO,CACvB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAC5D,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAG,GAC3D,EAAI,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,KAC3Dq0tB,EAAM5N,EAAUzmtB,OAAO,CACvB,EAAG,GAAK,EAAI,EAAI,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAC3D,EAAG,GAAK,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAI,EAAI,EAC5D,GAAK,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAC5D,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAC3D,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,KAC5Ds0tB,EAAM7N,EAAUzmtB,OAAO,CACtB,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAC9D,EAAG,EAAK,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAI,GAAK,EAAG,GAAK,EAAG,GAAI,GAC3D,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAG,GAC9D,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAAK,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,IAC5Du0tB,EAAM9N,EAAUzmtB,OAAO,CACvB,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAC5D,EAAG,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAI,GAAI,GAC3D,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,GAAI,GAAI,GAAK,EAAG,GAAI,GAAI,GAAK,EAAI,EAC5D,GAAK,EAAI,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAC7D,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAI,GAAI,GAAI,KAE3Dw0tB,EAAO/N,EAAUzmtB,OAAO,CAAE,EAAY,WAAY,WAAY,WAAY,aAC1Ey0tB,EAAOhO,EAAUzmtB,OAAO,CAAE,WAAY,WAAY,WAAY,WAAY,IAK1E00tB,EAAY1R,EAAO0R,UAAYnI,EAAOzsiB,OAAO,CAC7CkkiB,SAAU,WACNljtB,KAAKuutB,MAAS5I,EAAUzmtB,OAAO,CAAC,WAAY,WAAY,WAAY,UAAY,YACnF,EAEDuptB,gBAAiB,SAAUrwqB,EAAGuU,GAG1B,IAAK,IAAIruD,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzB,IAAIkwtB,EAAW7hqB,EAASruD,EACpBmwtB,EAAar2qB,EAAEo2qB,GAGnBp2qB,EAAEo2qB,GACgD,UAA3CC,GAAc,EAAOA,IAAe,IACO,YAA3CA,GAAc,GAAOA,IAAe,EAE9C,CAED,IASIoF,EAAIj/c,EAAIk/c,EAAIz1hB,EAAI/oJ,EAChBkvE,EAAImwJ,EAAIo/c,EAAIC,EAAIC,EAQhBl2tB,EAlBA67C,EAAK55C,KAAKuutB,MAAMjL,MAChB4Q,EAAKR,EAAIpQ,MACTrkhB,EAAK00hB,EAAIrQ,MACT6Q,EAAKb,EAAIhQ,MACT8Q,EAAKb,EAAIjQ,MACT+Q,EAAKb,EAAIlQ,MACTgR,EAAKb,EAAInQ,MAab,IAPA9+lB,EAAKqvmB,EAAKj6qB,EAAE,GACZ+6N,EAAKC,EAAKh7N,EAAE,GACZm6qB,EAAKD,EAAKl6qB,EAAE,GACZo6qB,EAAK31hB,EAAKzkJ,EAAE,GACZq6qB,EAAK3+qB,EAAKsE,EAAE,GAGHt7C,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACzBP,EAAK81tB,EAAMz7qB,EAAEuU,EAAOwnqB,EAAG71tB,IAAK,EAE/BP,GADOO,EAAE,GACH43S,EAAGthC,EAAGk/c,EAAGz1hB,GAAM61hB,EAAG,GACV51tB,EAAE,GACV49mB,EAAGtnW,EAAGk/c,EAAGz1hB,GAAM61hB,EAAG,GACV51tB,EAAE,GACVi2tB,EAAG3/c,EAAGk/c,EAAGz1hB,GAAM61hB,EAAG,GACV51tB,EAAE,GACVk2tB,EAAG5/c,EAAGk/c,EAAGz1hB,GAAM61hB,EAAG,GAElBO,EAAG7/c,EAAGk/c,EAAGz1hB,GAAM61hB,EAAG,GAIrBn2tB,GADAA,EAAK22tB,EADL32tB,GAAM,EACMs2tB,EAAG/1tB,KACRg3C,EAAI,EACXu+qB,EAAKv+qB,EACLA,EAAK+oJ,EACLA,EAAKq2hB,EAAKZ,EAAI,IACdA,EAAKl/c,EACLA,EAAK72Q,EAELA,EAAKymH,EAAKpsE,EAAEuU,EAAOynqB,EAAG91tB,IAAK,EAE9BP,GADOO,EAAE,GACHm2tB,EAAG9/c,EAAGo/c,EAAGC,GAAM/0hB,EAAG,GACV3gM,EAAE,GACVk2tB,EAAG7/c,EAAGo/c,EAAGC,GAAM/0hB,EAAG,GACV3gM,EAAE,GACVi2tB,EAAG5/c,EAAGo/c,EAAGC,GAAM/0hB,EAAG,GACV3gM,EAAE,GACV49mB,EAAGvnW,EAAGo/c,EAAGC,GAAM/0hB,EAAG,GAElBi3G,EAAGvhC,EAAGo/c,EAAGC,GAAM/0hB,EAAG,GAIrBlhM,GADAA,EAAK22tB,EADL32tB,GAAM,EACMu2tB,EAAGh2tB,KACR21tB,EAAI,EACXzvmB,EAAKyvmB,EACLA,EAAKD,EACLA,EAAKU,EAAKX,EAAI,IACdA,EAAKp/c,EACLA,EAAK52Q,EAGTA,EAAQ67C,EAAE,GAAKk6qB,EAAKE,EAAI,EACxBp6qB,EAAE,GAAMA,EAAE,GAAKykJ,EAAK41hB,EAAI,EACxBr6qB,EAAE,GAAMA,EAAE,GAAKtE,EAAKkvE,EAAI,EACxB5qE,EAAE,GAAMA,EAAE,GAAKi6qB,EAAKl/c,EAAI,EACxB/6N,EAAE,GAAMA,EAAE,GAAKg7N,EAAKm/c,EAAI,EACxBn6qB,EAAE,GAAM77C,CACX,EAED4otB,YAAa,WAET,IAAI37rB,EAAOhrB,KAAKivK,MACZm8iB,EAAYpgsB,EAAKs4rB,MAEjBwM,EAAgC,EAAnB9vtB,KAAKirtB,YAClB8E,EAA4B,EAAhB/ksB,EAAKm0nB,SAGrBisE,EAAU2E,IAAc,IAAM,KAAS,GAAKA,EAAY,GACxD3E,EAA4C,IAA/B2E,EAAY,KAAQ,GAAM,IACW,UAA3CD,GAAc,EAAOA,IAAe,IACO,YAA3CA,GAAc,GAAOA,IAAe,GAE3C9ksB,EAAKm0nB,SAAoC,GAAxBisE,EAAU7otB,OAAS,GAGpCvC,KAAK0mtB,WAOL,IAJA,IAAIj5sB,EAAOzN,KAAKuutB,MACZ30qB,EAAInsC,EAAK61sB,MAGJhltB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IAAI4xtB,EAAMt2qB,EAAEt7C,GAGZs7C,EAAEt7C,GAAqC,UAA7B4xtB,GAAO,EAAOA,IAAQ,IACO,YAA7BA,GAAO,GAAOA,IAAQ,EACnC,CAGD,OAAOzitB,CACV,EAED4V,MAAO,WACH,IAAIA,EAAQoosB,EAAOposB,MAAM7jB,KAAKQ,MAG9B,OAFAqjB,EAAMkrsB,MAAQvutB,KAAKuutB,MAAMlrsB,QAElBA,CACV,IAIL,SAAS6yR,EAAG9nQ,EAAGxuC,EAAGwuD,GACd,OAAShgB,EAAMxuC,EAAMwuD,CAExB,CAED,SAAS8tjB,EAAG9tkB,EAAGxuC,EAAGwuD,GACd,OAAUhgB,EAAIxuC,GAASwuC,EAAIggB,CAC9B,CAED,SAASmmqB,EAAGnmrB,EAAGxuC,EAAGwuD,GACd,OAAUhgB,GAAQxuC,GAAQwuD,CAC7B,CAED,SAASomqB,EAAGpmrB,EAAGxuC,EAAGwuD,GACd,OAAUhgB,EAAMggB,EAAQxuD,GAAMwuD,CACjC,CAED,SAASqmqB,EAAGrmrB,EAAGxuC,EAAGwuD,GACd,OAAShgB,GAAOxuC,GAAOwuD,EAE1B,CAED,SAASsmqB,EAAKtmrB,EAAElwC,GACZ,OAAQkwC,GAAGlwC,EAAMkwC,IAAK,GAAGlwC,CAC5B,CAiBDuhc,EAAEm0R,UAAYnI,EAAOnH,cAAcsP,GAgBnCn0R,EAAEk1R,cAAgBlJ,EAAOE,kBAAkBiI,EA1O9C,EA2OC1ssB,MAGKg4nB,EAAS00E,SAEhB,CAvQ4BhmB,CAAQC,EAAQ,+BCA3C/7qB,EAAOw0qB,QAUD,SAAUpnD,GAsIjB,OApIC,WAEG,IAAIz/M,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACV0D,EAAYD,EAAMC,UAClB8F,EAAS/F,EAAM+F,OACfvJ,EAASziR,EAAE0iR,KAGXx0a,EAAI,GAKJinb,EAAO1S,EAAO0S,KAAOnJ,EAAOzsiB,OAAO,CACnCkkiB,SAAU,WACNljtB,KAAKuutB,MAAQ,IAAI5I,EAAUhysB,KAAK,CAC5B,WAAY,WACZ,WAAY,UACZ,YAEP,EAED80sB,gBAAiB,SAAUrwqB,EAAGuU,GAY1B,IAVA,IAAI/S,EAAI55C,KAAKuutB,MAAMjL,MAGf/ktB,EAAIq7C,EAAE,GACNxwC,EAAIwwC,EAAE,GACNp7C,EAAIo7C,EAAE,GACN35C,EAAI25C,EAAE,GACN97C,EAAI87C,EAAE,GAGDt7C,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,GAAIA,EAAI,GACJqvS,EAAErvS,GAAqB,EAAhB85C,EAAEuU,EAASruD,OACf,CACH,IAAIJ,EAAIyvS,EAAErvS,EAAI,GAAKqvS,EAAErvS,EAAI,GAAKqvS,EAAErvS,EAAI,IAAMqvS,EAAErvS,EAAI,IAChDqvS,EAAErvS,GAAMJ,GAAK,EAAMA,IAAM,EAC5B,CAED,IAAIH,GAAMQ,GAAK,EAAMA,IAAM,IAAOT,EAAI6vS,EAAErvS,GAEpCP,GADAO,EAAI,GACwB,YAArB8K,EAAI5K,GAAO4K,EAAInJ,GACf3B,EAAI,GACQ,YAAb8K,EAAI5K,EAAIyB,GACP3B,EAAI,IACJ8K,EAAI5K,EAAM4K,EAAInJ,EAAMzB,EAAIyB,GAAM,YAE/BmJ,EAAI5K,EAAIyB,GAAK,UAGvBnC,EAAImC,EACJA,EAAIzB,EACJA,EAAK4K,GAAK,GAAOA,IAAM,EACvBA,EAAI7K,EACJA,EAAIR,CACP,CAGD67C,EAAE,GAAMA,EAAE,GAAKr7C,EAAK,EACpBq7C,EAAE,GAAMA,EAAE,GAAKxwC,EAAK,EACpBwwC,EAAE,GAAMA,EAAE,GAAKp7C,EAAK,EACpBo7C,EAAE,GAAMA,EAAE,GAAK35C,EAAK,EACpB25C,EAAE,GAAMA,EAAE,GAAK97C,EAAK,CACvB,EAED6otB,YAAa,WAET,IAAI37rB,EAAOhrB,KAAKivK,MACZm8iB,EAAYpgsB,EAAKs4rB,MAEjBwM,EAAgC,EAAnB9vtB,KAAKirtB,YAClB8E,EAA4B,EAAhB/ksB,EAAKm0nB,SAYrB,OATAisE,EAAU2E,IAAc,IAAM,KAAS,GAAKA,EAAY,GACxD3E,EAA4C,IAA/B2E,EAAY,KAAQ,GAAM,IAAW7osB,KAAKC,MAAM2osB,EAAa,YAC1E1E,EAA4C,IAA/B2E,EAAY,KAAQ,GAAM,IAAWD,EAClD9ksB,EAAKm0nB,SAA8B,EAAnBisE,EAAU7otB,OAG1BvC,KAAK0mtB,WAGE1mtB,KAAKuutB,KACf,EAEDlrsB,MAAO,WACH,IAAIA,EAAQoosB,EAAOposB,MAAM7jB,KAAKQ,MAG9B,OAFAqjB,EAAMkrsB,MAAQvutB,KAAKuutB,MAAMlrsB,QAElBA,CACV,IAiBLo8a,EAAEm1R,KAAOnJ,EAAOnH,cAAcsQ,GAgB9Bn1R,EAAEo1R,SAAWpJ,EAAOE,kBAAkBiJ,EAhIzC,IAoIM11E,EAAS01E,IAEhB,CAlJ4BhnB,CAAQC,EAAQ,+BCA3C/7qB,EAAOw0qB,QAUD,SAAUpnD,GAgEjB,OA9DC,WAEG,IAAIz/M,EAAIy/M,EAEJymE,EADQlmR,EAAEwiR,IACQ0D,UAClBzD,EAASziR,EAAE0iR,KACXkP,EAASnP,EAAOmP,OAKhByD,EAAS5S,EAAO4S,OAASzD,EAAOryiB,OAAO,CACvCkkiB,SAAU,WACNljtB,KAAKuutB,MAAQ,IAAI5I,EAAUhysB,KAAK,CAC5B,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,YAE3C,EAEDgzsB,YAAa,WACT,IAAIl5sB,EAAO4jtB,EAAO1K,YAAYnntB,KAAKQ,MAInC,OAFAyN,EAAK0xoB,UAAY,EAEV1xoB,CACV,IAiBLgyb,EAAEq1R,OAASzD,EAAO/M,cAAcwQ,GAgBhCr1R,EAAEs1R,WAAa1D,EAAO1F,kBAAkBmJ,EA1D3C,IA8DM51E,EAAS41E,MAEhB,CA5E4BlnB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GAuLjB,OArLC,SAAUh4nB,GAEP,IAAIu4a,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACV0D,EAAYD,EAAMC,UAClB8F,EAAS/F,EAAM+F,OACfvJ,EAASziR,EAAE0iR,KAGXvoqB,EAAI,GACJkU,EAAI,IAGP,WACG,SAASknqB,EAAQ92tB,GAEb,IADA,IAAI+2tB,EAAQ/tsB,EAAKgxO,KAAKh6P,GACbg3tB,EAAS,EAAGA,GAAUD,EAAOC,IAClC,KAAMh3tB,EAAIg3tB,GACN,OAAO,EAIf,OAAO,CACV,CAED,SAASC,EAAkBj3tB,GACvB,OAAwB,YAAfA,GAAS,EAAJA,IAAyB,CAC1C,CAID,IAFA,IAAIA,EAAI,EACJk3tB,EAAS,EACNA,EAAS,IACRJ,EAAQ92tB,KACJk3tB,EAAS,IACTx7qB,EAAEw7qB,GAAUD,EAAkBjusB,EAAKy+K,IAAIznM,EAAG,MAE9C4vD,EAAEsnqB,GAAUD,EAAkBjusB,EAAKy+K,IAAIznM,EAAG,EAAI,IAE9Ck3tB,KAGJl3tB,GA5BP,IAiCD,IAAIyvS,EAAI,GAKJ0jb,EAASnP,EAAOmP,OAAS5F,EAAOzsiB,OAAO,CACvCkkiB,SAAU,WACNljtB,KAAKuutB,MAAQ,IAAI5I,EAAUhysB,KAAKimC,EAAEt2C,MAAM,GAC3C,EAEDmltB,gBAAiB,SAAUrwqB,EAAGuU,GAe1B,IAbA,IAAI/S,EAAI55C,KAAKuutB,MAAMjL,MAGf/ktB,EAAIq7C,EAAE,GACNxwC,EAAIwwC,EAAE,GACNp7C,EAAIo7C,EAAE,GACN35C,EAAI25C,EAAE,GACN97C,EAAI87C,EAAE,GACNl6C,EAAIk6C,EAAE,GACNv5C,EAAIu5C,EAAE,GACNn6C,EAAIm6C,EAAE,GAGDt7C,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,GAAIA,EAAI,GACJqvS,EAAErvS,GAAqB,EAAhB85C,EAAEuU,EAASruD,OACf,CACH,IAAI+2tB,EAAU1nb,EAAErvS,EAAI,IAChBg3tB,GAAYD,GAAW,GAAOA,IAAY,IAC9BA,GAAW,GAAOA,IAAY,IAC9BA,IAAY,EAExBE,EAAU5nb,EAAErvS,EAAI,GAChBk3tB,GAAYD,GAAW,GAAOA,IAAY,KAC9BA,GAAW,GAAOA,IAAY,IAC9BA,IAAY,GAE5B5nb,EAAErvS,GAAKg3tB,EAAS3nb,EAAErvS,EAAI,GAAKk3tB,EAAS7nb,EAAErvS,EAAI,GAC7C,CAED,IACIm3tB,EAAOl3tB,EAAI6K,EAAM7K,EAAIC,EAAM4K,EAAI5K,EAE/Bk3tB,GAAWn3tB,GAAK,GAAOA,IAAM,IAAQA,GAAK,GAAOA,IAAM,KAASA,GAAK,GAAOA,IAAM,IAGlFs9S,EAAKp8S,IAFM3B,GAAK,GAAOA,IAAM,IAAQA,GAAK,GAAOA,IAAM,KAASA,GAAK,EAAOA,IAAM,MAJ3EA,EAAI4B,GAAO5B,EAAIuC,GAMCytD,EAAExvD,GAAKqvS,EAAErvS,GAGpCmB,EAAIY,EACJA,EAAIX,EACJA,EAAI5B,EACJA,EAAKmC,EAAI47S,EAAM,EACf57S,EAAIzB,EACJA,EAAI4K,EACJA,EAAI7K,EACJA,EAAKs9S,GATI65a,EAASD,GASF,CACnB,CAGD77qB,EAAE,GAAMA,EAAE,GAAKr7C,EAAK,EACpBq7C,EAAE,GAAMA,EAAE,GAAKxwC,EAAK,EACpBwwC,EAAE,GAAMA,EAAE,GAAKp7C,EAAK,EACpBo7C,EAAE,GAAMA,EAAE,GAAK35C,EAAK,EACpB25C,EAAE,GAAMA,EAAE,GAAK97C,EAAK,EACpB87C,EAAE,GAAMA,EAAE,GAAKl6C,EAAK,EACpBk6C,EAAE,GAAMA,EAAE,GAAKv5C,EAAK,EACpBu5C,EAAE,GAAMA,EAAE,GAAKn6C,EAAK,CACvB,EAEDkntB,YAAa,WAET,IAAI37rB,EAAOhrB,KAAKivK,MACZm8iB,EAAYpgsB,EAAKs4rB,MAEjBwM,EAAgC,EAAnB9vtB,KAAKirtB,YAClB8E,EAA4B,EAAhB/ksB,EAAKm0nB,SAYrB,OATAisE,EAAU2E,IAAc,IAAM,KAAS,GAAKA,EAAY,GACxD3E,EAA4C,IAA/B2E,EAAY,KAAQ,GAAM,IAAW7osB,EAAKC,MAAM2osB,EAAa,YAC1E1E,EAA4C,IAA/B2E,EAAY,KAAQ,GAAM,IAAWD,EAClD9ksB,EAAKm0nB,SAA8B,EAAnBisE,EAAU7otB,OAG1BvC,KAAK0mtB,WAGE1mtB,KAAKuutB,KACf,EAEDlrsB,MAAO,WACH,IAAIA,EAAQoosB,EAAOposB,MAAM7jB,KAAKQ,MAG9B,OAFAqjB,EAAMkrsB,MAAQvutB,KAAKuutB,MAAMlrsB,QAElBA,CACV,IAiBLo8a,EAAE4xR,OAAS5F,EAAOnH,cAAc+M,GAgBhC5xR,EAAEk2R,WAAalK,EAAOE,kBAAkB0F,EAjL3C,EAkLCnqsB,MAGKg4nB,EAASmyE,MAEhB,CAnM4BzjB,CAAQC,EAAQ,+BCA3C/7qB,EAAOw0qB,QAUD,SAAUpnD,GAsTjB,OApTC,SAAUh4nB,GAEP,IAAIu4a,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACV0D,EAAYD,EAAMC,UAClB8F,EAAS/F,EAAM+F,OAEfmK,EADQn2R,EAAEo2R,IACMC,KAChB5T,EAASziR,EAAE0iR,KAGX4T,EAAc,GACdC,EAAc,GACdC,EAAkB,IAGrB,WAGG,IADA,IAAI7nrB,EAAI,EAAGxuC,EAAI,EACN7B,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzBg4tB,EAAY3nrB,EAAI,EAAIxuC,IAAO7B,EAAI,IAAMA,EAAI,GAAK,EAAK,GAEnD,IACI6md,GAAQ,EAAIx2a,EAAI,EAAIxuC,GAAK,EAC7BwuC,EAFWxuC,EAAI,EAGfA,EAAIgld,CACP,CAGD,IAASx2a,EAAI,EAAGA,EAAI,EAAGA,IACnB,IAASxuC,EAAI,EAAGA,EAAI,EAAGA,IACnBo2tB,EAAW5nrB,EAAI,EAAIxuC,GAAKA,GAAM,EAAIwuC,EAAI,EAAIxuC,GAAK,EAAK,EAM5D,IADA,IAAIs2tB,EAAO,EACF53tB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAIzB,IAHA,IAAI63tB,EAAmB,EACnBC,EAAmB,EAEd9lsB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,GAAW,EAAP4lsB,EAAa,CACb,IAAIG,GAAe,GAAK/lsB,GAAK,EACzB+lsB,EAAc,GACdD,GAAoB,GAAKC,EAEzBF,GAAoB,GAAME,EAAc,EAE/C,CAGU,IAAPH,EAEAA,EAAQA,GAAQ,EAAK,IAErBA,IAAS,CAEhB,CAEDD,EAAgB33tB,GAAKs3tB,EAAQ12tB,OAAOi3tB,EAAkBC,EACzD,CA7CJ,IAiDD,IAAI79qB,EAAI,IACP,WACG,IAAK,IAAIj6C,EAAI,EAAGA,EAAI,GAAIA,IACpBi6C,EAAEj6C,GAAKs3tB,EAAQ12tB,QAFtB,IASD,IAAIo3tB,EAAOpU,EAAOoU,KAAO7K,EAAOzsiB,OAAO,CASnCiniB,IAAKwF,EAAOxF,IAAIjniB,OAAO,CACnBu3iB,aAAc,MAGlBrT,SAAU,WAEN,IADA,IAAI9zsB,EAAQpP,KAAKu2S,OAAS,GACjBj4S,EAAI,EAAGA,EAAI,GAAIA,IACpB8Q,EAAM9Q,GAAK,IAAIs3tB,EAAQjitB,KAG3B3T,KAAKultB,WAAa,KAAO,EAAIvltB,KAAKimtB,IAAIsQ,cAAgB,EACzD,EAED9N,gBAAiB,SAAUrwqB,EAAGuU,GAM1B,IAJA,IAAIv9C,EAAQpP,KAAKu2S,OACbigb,EAAkBx2tB,KAAKultB,UAAY,EAG9BjntB,EAAI,EAAGA,EAAIk4tB,EAAiBl4tB,IAAK,CAEtC,IAAIm4tB,EAAOr+qB,EAAEuU,EAAS,EAAIruD,GACtBo4tB,EAAOt+qB,EAAEuU,EAAS,EAAIruD,EAAI,GAG9Bm4tB,EACoC,UAA7BA,GAAO,EAAOA,IAAQ,IACO,YAA7BA,GAAO,GAAOA,IAAQ,GAE7BC,EACsC,UAA/BA,GAAQ,EAAOA,IAAS,IACO,YAA/BA,GAAQ,GAAOA,IAAS,IAI3BC,EAAOvntB,EAAM9Q,IACZ8/P,MAAQs4d,EACbC,EAAKx4d,KAAQs4d,CAChB,CAGD,IAAK,IAAIlzqB,EAAQ,EAAGA,EAAQ,GAAIA,IAAS,CAErC,IAAK,IAAInV,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAGxB,IADA,IAAIworB,EAAO,EAAGC,EAAO,EACZj3tB,EAAI,EAAGA,EAAI,EAAGA,IAEnBg3tB,IADID,EAAOvntB,EAAMg/B,EAAI,EAAIxuC,IACZw+P,KACby4d,GAAQF,EAAKx4d,IAIjB,IAAI24d,EAAKv+qB,EAAEnK,GACX0orB,EAAG14d,KAAOw4d,EACVE,EAAG34d,IAAO04d,CACb,CACD,IAASzorB,EAAI,EAAGA,EAAI,EAAGA,IAEnB,KAAI2orB,EAAMx+qB,GAAGnK,EAAI,GAAK,GAClB4orB,EAAMz+qB,GAAGnK,EAAI,GAAK,GAClB6orB,EAASD,EAAI54d,KACb84d,EAASF,EAAI74d,IAKjB,IAFIy4d,EAAOG,EAAI34d,MAAS64d,GAAU,EAAMC,IAAW,IAC/CL,EAAOE,EAAI54d,KAAS+4d,GAAU,EAAMD,IAAW,IAC1Cr3tB,EAAI,EAAGA,EAAI,EAAGA,KACf+2tB,EAAOvntB,EAAMg/B,EAAI,EAAIxuC,IACpBw+P,MAAQw4d,EACbD,EAAKx4d,KAAQ04d,CAXjB,CAgBJ,IAAK,IAAIM,EAAY,EAAGA,EAAY,GAAIA,IAAa,CACjD,IAKIC,GADAT,EAAOvntB,EAAM+ntB,IACE/4d,KACfi5d,EAAUV,EAAKx4d,IACfm5d,EAAYvB,EAAYoB,GAGxBG,EAAY,IACZV,EAAQQ,GAAWE,EAAcD,IAAa,GAAKC,EACnDT,EAAQQ,GAAWC,EAAcF,IAAa,GAAKE,IAEnDV,EAAQS,GAAYC,EAAY,GAAQF,IAAa,GAAKE,EAC1DT,EAAQO,GAAYE,EAAY,GAAQD,IAAa,GAAKC,GAI9D,IAAIC,EAAUh/qB,EAAEy9qB,EAAWmB,IAC3BI,EAAQn5d,KAAOw4d,EACfW,EAAQp5d,IAAO04d,CAClB,CAGD,IAAIW,EAAKj/qB,EAAE,GACPk/qB,EAASrotB,EAAM,GAKnB,IAJAootB,EAAGp5d,KAAOq5d,EAAOr5d,KACjBo5d,EAAGr5d,IAAOs5d,EAAOt5d,IAGR/vN,EAAI,EAAGA,EAAI,EAAGA,IACnB,IAASxuC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IACI+2tB,EAAOvntB,EADP+ntB,EAAY/orB,EAAI,EAAIxuC,GAEpB83tB,EAAQn/qB,EAAE4+qB,GACVQ,EAAUp/qB,GAAInK,EAAI,GAAK,EAAK,EAAIxuC,GAChCg4tB,EAAUr/qB,GAAInK,EAAI,GAAK,EAAK,EAAIxuC,GAGpC+2tB,EAAKv4d,KAAOs5d,EAAMt5d,MAASu5d,EAAQv5d,KAAOw5d,EAAQx5d,KAClDu4d,EAAKx4d,IAAOu5d,EAAMv5d,KAASw5d,EAAQx5d,IAAOy5d,EAAQz5d,GACrD,CAIDw4d,EAAOvntB,EAAM,GAAjB,IACIyotB,EAAgB5B,EAAgB1yqB,GACpCozqB,EAAKv4d,MAAQy5d,EAAcz5d,KAC3Bu4d,EAAKx4d,KAAQ05d,EAAc15d,GAC9B,CACJ,EAEDwod,YAAa,WAET,IAAI37rB,EAAOhrB,KAAKivK,MACZm8iB,EAAYpgsB,EAAKs4rB,MAEjByM,GADa/vtB,KAAKirtB,YACU,EAAhBjgsB,EAAKm0nB,UACjB24E,EAAiC,GAAjB93tB,KAAKultB,UAGzB6F,EAAU2E,IAAc,IAAM,GAAQ,GAAKA,EAAY,GACvD3E,GAAYlksB,EAAKwxH,MAAMq3kB,EAAY,GAAK+H,GAAiBA,IAAmB,GAAK,IAAM,IACvF9ssB,EAAKm0nB,SAA8B,EAAnBisE,EAAU7otB,OAG1BvC,KAAK0mtB,WASL,IANA,IAAIt3sB,EAAQpP,KAAKu2S,OACbwhb,EAAoB/3tB,KAAKimtB,IAAIsQ,aAAe,EAC5CyB,EAAoBD,EAAoB,EAGxCE,EAAY,GACP35tB,EAAI,EAAGA,EAAI05tB,EAAmB15tB,IAAK,CAExC,IAAIq4tB,EAAOvntB,EAAM9Q,GACb84tB,EAAUT,EAAKv4d,KACfi5d,EAAUV,EAAKx4d,IAGnBi5d,EAC4C,UAArCA,GAAW,EAAOA,IAAY,IACO,YAArCA,GAAW,GAAOA,IAAY,GAErCC,EAC4C,UAArCA,GAAW,EAAOA,IAAY,IACO,YAArCA,GAAW,GAAOA,IAAY,GAIrCY,EAAU/1tB,KAAKm1tB,GACfY,EAAU/1tB,KAAKk1tB,EAClB,CAGD,OAAO,IAAIzR,EAAUhysB,KAAKsktB,EAAWF,EACxC,EAED10sB,MAAO,WAIH,IAHA,IAAIA,EAAQoosB,EAAOposB,MAAM7jB,KAAKQ,MAE1BoP,EAAQiU,EAAMkzR,OAASv2S,KAAKu2S,OAAOjzS,MAAM,GACpChF,EAAI,EAAGA,EAAI,GAAIA,IACpB8Q,EAAM9Q,GAAK8Q,EAAM9Q,GAAG+kB,QAGxB,OAAOA,CACV,IAiBLo8a,EAAE62R,KAAO7K,EAAOnH,cAAcgS,GAgB9B72R,EAAEy4R,SAAWzM,EAAOE,kBAAkB2K,EAhTzC,EAiTCpvsB,MAGKg4nB,EAASo3E,IAEhB,CAlU4B1oB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GAmEjB,OAjEC,WAEG,IAAIz/M,EAAIy/M,EACJi5E,EAAQ14R,EAAEo2R,IACVD,EAAUuC,EAAMrC,KAChBsC,EAAeD,EAAMxS,UACrBzD,EAASziR,EAAE0iR,KACXkW,EAASnW,EAAOmW,OAKhBC,EAASpW,EAAOoW,OAASD,EAAOr5iB,OAAO,CACvCkkiB,SAAU,WACNljtB,KAAKuutB,MAAQ,IAAI6J,EAAazktB,KAAK,CAC/B,IAAIiitB,EAAQjitB,KAAK,WAAY,YAAa,IAAIiitB,EAAQjitB,KAAK,WAAY,WACvE,IAAIiitB,EAAQjitB,KAAK,WAAY,WAAa,IAAIiitB,EAAQjitB,KAAK,UAAY,YACvE,IAAIiitB,EAAQjitB,KAAK,WAAY,YAAa,IAAIiitB,EAAQjitB,KAAK,WAAY,YACvE,IAAIiitB,EAAQjitB,KAAK,WAAY,YAAa,IAAIiitB,EAAQjitB,KAAK,WAAY,aAE9E,EAEDgzsB,YAAa,WACT,IAAIl5sB,EAAO4qtB,EAAO1R,YAAYnntB,KAAKQ,MAInC,OAFAyN,EAAK0xoB,UAAY,GAEV1xoB,CACV,IAiBLgyb,EAAE64R,OAASD,EAAO/T,cAAcgU,GAgBhC74R,EAAE84R,WAAaF,EAAO1M,kBAAkB2M,EA7D3C,IAiEMp5E,EAASo5E,MAEhB,CA/E4B1qB,CAAQC,EAAQ,OAAWA,EAAQ,OAAeA,EAAQ,+BCArF/7qB,EAAOw0qB,QAUD,SAAUpnD,GAsTjB,OApTC,WAEG,IAAIz/M,EAAIy/M,EAEJusE,EADQhsR,EAAEwiR,IACKwJ,OACf0M,EAAQ14R,EAAEo2R,IACVD,EAAUuC,EAAMrC,KAChBsC,EAAeD,EAAMxS,UACrBzD,EAASziR,EAAE0iR,KAEf,SAASqW,IACL,OAAO5C,EAAQ12tB,OAAOuF,MAAMmxtB,EAASpxtB,UACxC,CAGD,IAAIspD,EAAI,CACJ0qqB,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,WAAaA,EAAe,UAAY,YACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,aAInE7qb,EAAI,IACP,WACG,IAAK,IAAIrvS,EAAI,EAAGA,EAAI,GAAIA,IACpBqvS,EAAErvS,GAAKk6tB,GAFd,IASD,IAAIH,EAASnW,EAAOmW,OAAS5M,EAAOzsiB,OAAO,CACvCkkiB,SAAU,WACNljtB,KAAKuutB,MAAQ,IAAI6J,EAAazktB,KAAK,CAC/B,IAAIiitB,EAAQjitB,KAAK,WAAY,YAAa,IAAIiitB,EAAQjitB,KAAK,WAAY,YACvE,IAAIiitB,EAAQjitB,KAAK,WAAY,YAAa,IAAIiitB,EAAQjitB,KAAK,WAAY,YACvE,IAAIiitB,EAAQjitB,KAAK,WAAY,YAAa,IAAIiitB,EAAQjitB,KAAK,WAAY,WACvE,IAAIiitB,EAAQjitB,KAAK,UAAY,YAAa,IAAIiitB,EAAQjitB,KAAK,WAAY,YAE9E,EAED80sB,gBAAiB,SAAUrwqB,EAAGuU,GAiD1B,IA/CA,IAAI/S,EAAI55C,KAAKuutB,MAAMjL,MAEfmV,EAAK7+qB,EAAE,GACP8+qB,EAAK9+qB,EAAE,GACP++qB,EAAK/+qB,EAAE,GACPg/qB,EAAKh/qB,EAAE,GACPi/qB,EAAKj/qB,EAAE,GACPk/qB,EAAKl/qB,EAAE,GACPm/qB,EAAKn/qB,EAAE,GACPo/qB,EAAKp/qB,EAAE,GAEPq/qB,EAAMR,EAAGr6d,KACT86d,EAAMT,EAAGt6d,IACTg7d,EAAMT,EAAGt6d,KACTg7d,EAAMV,EAAGv6d,IACTk7d,EAAMV,EAAGv6d,KACTk7d,EAAMX,EAAGx6d,IACTo7d,EAAMX,EAAGx6d,KACTo7d,EAAMZ,EAAGz6d,IACTs7d,EAAMZ,EAAGz6d,KACTs7d,EAAMb,EAAG16d,IACTw7d,EAAMb,EAAG16d,KACTw7d,EAAMd,EAAG36d,IACT07d,EAAMd,EAAG36d,KACT07d,EAAMf,EAAG56d,IACT47d,EAAMf,EAAG56d,KACT47d,EAAMhB,EAAG76d,IAGT87d,EAAKhB,EACLpF,EAAKqF,EACLgB,EAAKf,EACLvkd,EAAKwkd,EACLr0qB,EAAKs0qB,EACLvF,EAAKwF,EACLa,EAAKZ,EACLl7hB,EAAKm7hB,EACLY,EAAKX,EACLnkrB,EAAKokrB,EACLW,EAAKV,EACLW,EAAKV,EACLjH,EAAKkH,EACLjH,EAAKkH,EACLS,EAAKR,EACL7F,EAAK8F,EAGA17tB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,IAAIk8tB,EACAC,EAGAC,EAAK/sb,EAAErvS,GAGX,GAAIA,EAAI,GACJm8tB,EAAMC,EAAGt8d,KAA+B,EAAxBhmN,EAAEuU,EAAa,EAAJruD,GAC3Bk8tB,EAAME,EAAGv8d,IAA+B,EAAxB/lN,EAAEuU,EAAa,EAAJruD,EAAQ,OAChC,CAEH,IAAI+2tB,EAAW1nb,EAAErvS,EAAI,IACjBq8tB,EAAWtF,EAAQj3d,KACnBw8d,EAAWvF,EAAQl3d,IACnB08d,GAAaF,IAAa,EAAMC,GAAY,KAASD,IAAa,EAAMC,GAAY,IAAQD,IAAa,EACzGG,GAAaF,IAAa,EAAMD,GAAY,KAASC,IAAa,EAAMD,GAAY,KAASC,IAAa,EAAMD,GAAY,IAG5HpF,GAAW5nb,EAAErvS,EAAI,GACjBy8tB,GAAWxF,GAAQn3d,KACnB48d,GAAWzF,GAAQp3d,IACnB88d,IAAaF,KAAa,GAAOC,IAAY,KAASD,IAAY,EAAMC,KAAa,IAAQD,KAAa,EAC1GG,IAAaF,KAAa,GAAOD,IAAY,KAASC,IAAY,EAAMD,KAAa,KAASC,KAAa,EAAMD,IAAY,IAG7HI,GAAOxtb,EAAErvS,EAAI,GACb88tB,GAAOD,GAAI/8d,KACXi9d,GAAOF,GAAIh9d,IAEXm9d,GAAQ3tb,EAAErvS,EAAI,IACdi9tB,GAAQD,GAAKl9d,KACbo9d,GAAQF,GAAKn9d,IAOjBs8d,GAFAA,GAFAA,EAAMI,EAAUO,KADhBZ,EAAMM,EAAUO,MACiB,EAAMP,IAAY,EAAK,EAAI,IAEhDG,KADZT,GAAYU,MACoB,EAAMA,KAAY,EAAK,EAAI,IAE/CK,KADZf,GAAYgB,MACkB,EAAMA,KAAU,EAAK,EAAI,GAEvDd,EAAGt8d,KAAOq8d,EACVC,EAAGv8d,IAAOq8d,CACb,CAED,IAqBIiB,GArBAC,GAAQtB,EAAKC,GAAQD,EAAKzH,EAC1BgJ,GAAQrmrB,EAAKglrB,GAAQhlrB,EAAKs9qB,EAC1BgJ,GAAQ3B,EAAKC,EAAOD,EAAKl1qB,EAAOm1qB,EAAKn1qB,EACrC82qB,GAAQhI,EAAKj/c,EAAOi/c,EAAKC,EAAOl/c,EAAKk/c,EAErCgI,IAAY7B,IAAO,GAAOpG,GAAM,IAASoG,GAAM,GAAQpG,IAAO,IAAQoG,GAAM,GAAOpG,IAAO,GAC1FkI,IAAYlI,IAAO,GAAOoG,GAAM,IAASpG,GAAM,GAAQoG,IAAO,IAAQpG,GAAM,GAAOoG,IAAO,GAC1F+B,IAAY5B,IAAO,GAAO9krB,GAAM,KAAS8krB,IAAO,GAAO9krB,GAAM,KAAS8krB,GAAM,GAAO9krB,IAAO,GAC1F2mrB,IAAY3mrB,IAAO,GAAO8krB,GAAM,KAAS9krB,IAAO,GAAO8krB,GAAM,KAAS9krB,GAAM,GAAO8krB,IAAO,GAG1F8B,GAAMpuqB,EAAExvD,GACR69tB,GAAMD,GAAG99d,KACTg+d,GAAMF,GAAG/9d,IAGTk+d,GAAM9B,EAAKyB,KADXP,GAAMvH,EAAK+H,MACoB,EAAM/H,IAAO,EAAK,EAAI,GASrDoI,GAAMP,GAAUF,GAIpBtB,EAAK5H,EACLuB,EAAKtB,EACLD,EAAK0H,EACLzH,EAAK0H,EACLD,EAAKD,EACLE,EAAKhlrB,EAEL8krB,EAAMD,GAdFkC,IAFAA,IAFAA,GAAMA,GAAMX,KADZD,IAAYE,MACgB,EAAMA,KAAQ,EAAK,EAAI,IAEvCQ,KADZV,IAAYW,MACgB,EAAMA,KAAQ,EAAK,EAAI,IAEvC3B,IADZgB,IAAYjB,KACgB,EAAMA,IAAQ,EAAK,EAAI,MAavDllrB,EAAM+oJ,EAAKo9hB,GAAO,KACQ,EAAMp9hB,IAAO,EAAK,EAAI,GAAM,EACtD87hB,EAAKp1qB,EACLs5I,EAAKy1hB,EACL/uqB,EAAKm1qB,EACLpG,EAAKl/c,EACLsld,EAAKD,EACLrld,EAAKi/c,EAELoG,EAAMoC,IAlBIP,GAAUF,IAASU,KAAQ,EAAMP,KAAY,EAAK,EAAI,MAiBhElI,EAAM4H,GAAMa,GAAO,KACQ,EAAMb,KAAQ,EAAK,EAAI,GAAM,CAC3D,CAGDvC,EAAMT,EAAGt6d,IAAQ+6d,EAAMrF,EACvB4E,EAAGr6d,KAAQ66d,EAAMgB,GAAOf,IAAQ,EAAMrF,IAAO,EAAK,EAAI,GACtDuF,EAAMV,EAAGv6d,IAAQi7d,EAAMxkd,EACvB8jd,EAAGt6d,KAAQ+6d,EAAMe,GAAOd,IAAQ,EAAMxkd,IAAO,EAAK,EAAI,GACtD0kd,EAAMX,EAAGx6d,IAAQm7d,EAAMxF,EACvB6E,EAAGv6d,KAAQi7d,EAAMt0qB,GAAOu0qB,IAAQ,EAAMxF,IAAO,EAAK,EAAI,GACtD0F,EAAMZ,EAAGz6d,IAAQq7d,EAAMn7hB,EACvBu6hB,EAAGx6d,KAAQm7d,EAAMY,GAAOX,IAAQ,EAAMn7hB,IAAO,EAAK,EAAI,GACtDq7hB,EAAMb,EAAG16d,IAAQu7d,EAAMpkrB,EACvBujrB,EAAGz6d,KAAQq7d,EAAMW,GAAOV,IAAQ,EAAMpkrB,IAAO,EAAK,EAAI,GACtDskrB,EAAMd,EAAG36d,IAAQy7d,EAAMU,EACvBxB,EAAG16d,KAAQu7d,EAAMU,GAAOT,IAAQ,EAAMU,IAAO,EAAK,EAAI,GACtDR,EAAMf,EAAG56d,IAAQ27d,EAAMlH,EACvBmG,EAAG36d,KAAQy7d,EAAMlH,GAAOmH,IAAQ,EAAMlH,IAAO,EAAK,EAAI,GACtDoH,EAAMhB,EAAG76d,IAAQ67d,EAAM9F,EACvB8E,EAAG56d,KAAQ27d,EAAMQ,GAAOP,IAAQ,EAAM9F,IAAO,EAAK,EAAI,EACzD,EAEDvN,YAAa,WAET,IAAI37rB,EAAOhrB,KAAKivK,MACZm8iB,EAAYpgsB,EAAKs4rB,MAEjBwM,EAAgC,EAAnB9vtB,KAAKirtB,YAClB8E,EAA4B,EAAhB/ksB,EAAKm0nB,SAerB,OAZAisE,EAAU2E,IAAc,IAAM,KAAS,GAAKA,EAAY,GACxD3E,EAA8C,IAAjC2E,EAAY,MAAS,IAAO,IAAW7osB,KAAKC,MAAM2osB,EAAa,YAC5E1E,EAA8C,IAAjC2E,EAAY,MAAS,IAAO,IAAWD,EACpD9ksB,EAAKm0nB,SAA8B,EAAnBisE,EAAU7otB,OAG1BvC,KAAK0mtB,WAGM1mtB,KAAKuutB,MAAMgO,OAIzB,EAEDl5sB,MAAO,WACH,IAAIA,EAAQoosB,EAAOposB,MAAM7jB,KAAKQ,MAG9B,OAFAqjB,EAAMkrsB,MAAQvutB,KAAKuutB,MAAMlrsB,QAElBA,CACV,EAEDkisB,UAAW,KAiBf9lR,EAAE44R,OAAS5M,EAAOnH,cAAc+T,GAgBhC54R,EAAE+8R,WAAa/Q,EAAOE,kBAAkB0M,EAhT3C,IAoTMn5E,EAASm5E,MAEhB,CAlU4BzqB,CAAQC,EAAQ,OAAWA,EAAQ,+BCA9D/7qB,EAAOw0qB,QAUD,SAAUpnD,GA2vBjB,OAzvBC,WAEG,IAAIz/M,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACV0D,EAAYD,EAAMC,UAClB3D,EAAc0D,EAAM1D,YACpBE,EAASziR,EAAE0iR,KAGXsa,EAAM,CACN,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAI5BC,EAAM,CACN,GAAI,GAAI,GAAI,GAAI,EAAI,EACpB,EAAI,GAAI,GAAI,EAAI,GAAI,GACpB,GAAI,GAAI,GAAI,EAAI,GAAI,EACpB,GAAI,EAAI,GAAI,GAAI,GAAI,EACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,IAIpBC,EAAa,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAG1EC,EAAS,CACT,CACI,EAAK,QACL,UAAY,MACZ,UAAY,QACZ,UAAY,EACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,UAAW,EACX,UAAY,QACZ,UAAY,MACZ,UAAY,MACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,EACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,EAAK,MACL,UAAY,EACZ,UAAY,QACZ,UAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,WAAY,MACZ,WAAY,EACZ,UAAW,QACX,UAAY,QACZ,UAAY,QACZ,UAAY,IACZ,WAAY,MACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,WAAY,MACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,WAAY,SAEhB,CACI,EAAK,WACL,SAAW,MACX,SAAW,OACX,SAAW,WACX,SAAW,WACX,SAAW,WACX,UAAW,WACX,UAAW,GACX,UAAW,OACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,QAAU,WACV,SAAW,OACX,SAAW,GACX,SAAW,WACX,SAAW,WACX,SAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,MACX,UAAY,EACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,GACZ,UAAY,OACZ,UAAY,MACZ,UAAY,MACZ,UAAY,OACZ,UAAY,OACZ,UAAY,WACZ,UAAY,OACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,OACZ,UAAY,OACZ,UAAY,WACZ,UAAY,MACZ,UAAY,WACZ,UAAY,WACZ,UAAY,GACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,OACZ,UAAY,EACZ,UAAY,MACZ,UAAY,WACZ,UAAY,QAEhB,CACI,EAAK,IACL,QAAU,EACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,OAEf,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,QACV,QAAU,SAEd,CACI,EAAK,IACL,KAAQ,SACR,KAAQ,OACR,MAAQ,UACR,MAAQ,UACR,MAAQ,SACR,MAAQ,UACR,MAAQ,OACR,MAAQ,SACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,EACR,MAAQ,SACR,MAAQ,UACR,KAAO,SACP,KAAQ,UACR,MAAQ,IACR,MAAQ,SACR,MAAQ,OACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,EACR,MAAQ,UACR,MAAQ,SACR,MAAQ,UACR,MAAQ,UACR,MAAQ,SACR,MAAQ,OACR,MAAS,OACT,MAAS,IACT,MAAS,UACT,MAAS,UACT,MAAS,SACT,MAAS,UACT,MAAS,UACT,MAAS,SACT,MAAS,UACT,OAAS,UACT,OAAS,SACT,OAAS,UACT,OAAS,OACT,OAAS,UACT,OAAS,EACT,OAAS,SACT,MAAS,UACT,MAAS,SACT,MAAS,SACT,MAAS,UACT,MAAS,UACT,MAAS,SACT,MAAS,IACT,MAAS,UACT,OAAS,OACT,OAAS,UACT,OAAS,EACT,OAAS,UACT,OAAS,SACT,OAAS,OACT,OAAS,UACT,OAAS,WAEb,CACI,EAAK,UACL,IAAO,KACP,IAAO,UACP,IAAO,UACP,KAAO,UACP,KAAO,QACP,KAAO,QACP,KAAO,UACP,KAAO,EACP,KAAO,UACP,KAAO,QACP,KAAO,EACP,KAAO,UACP,KAAO,QACP,KAAO,KACP,KAAO,UACP,IAAM,UACN,IAAO,UACP,IAAO,EACP,IAAO,QACP,KAAO,QACP,KAAO,UACP,KAAO,UACP,KAAO,KACP,KAAO,QACP,KAAO,KACP,KAAO,UACP,KAAO,UACP,KAAO,EACP,KAAO,UACP,KAAO,QACP,KAAO,UACP,KAAQ,UACR,KAAQ,UACR,KAAQ,UACR,KAAQ,KACR,KAAQ,QACR,KAAQ,UACR,KAAQ,UACR,KAAQ,QACR,KAAQ,QACR,KAAQ,EACR,KAAQ,EACR,KAAQ,UACR,KAAQ,KACR,KAAQ,UACR,KAAQ,UACR,KAAQ,QACR,KAAQ,EACR,KAAQ,QACR,KAAQ,QACR,KAAQ,UACR,KAAQ,UACR,KAAQ,KACR,KAAQ,UACR,KAAQ,UACR,KAAQ,UACR,KAAQ,UACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,EACR,KAAQ,UACR,KAAQ,WAEZ,CACI,EAAK,QACL,GAAM,SACN,GAAM,KACN,GAAM,QACN,GAAM,SACN,GAAM,EACN,GAAM,EACN,IAAM,SACN,IAAM,SACN,IAAM,QACN,IAAM,SACN,IAAM,SACN,IAAM,SACN,IAAM,KACN,IAAM,QACN,IAAM,SACN,EAAK,SACL,GAAM,EACN,GAAM,SACN,GAAM,SACN,GAAM,QACN,GAAM,SACN,IAAM,SACN,IAAM,KACN,IAAM,QACN,IAAM,SACN,IAAM,SACN,IAAM,QACN,IAAM,KACN,IAAM,SACN,IAAM,EACN,IAAM,QACN,IAAO,SACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,QACP,IAAO,KACP,IAAO,SACP,IAAO,QACP,IAAO,EACP,IAAO,EACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,EACP,IAAO,SACP,IAAO,QACP,IAAO,KACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,EACP,IAAO,SACP,IAAO,QACP,IAAO,KACP,IAAO,SACP,IAAO,SAEX,CACI,EAAK,UACL,EAAK,OACL,EAAK,UACL,EAAK,GACL,EAAK,OACL,EAAK,UACL,EAAK,UACL,EAAK,KACL,EAAK,UACL,EAAK,UACL,GAAK,OACL,GAAK,UACL,GAAK,KACL,GAAK,EACL,GAAK,UACL,GAAK,OACL,WAAY,KACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,OACZ,WAAY,OACZ,WAAY,GACZ,WAAY,UACZ,WAAY,KACZ,WAAY,OACZ,WAAY,UACZ,WAAY,EACZ,WAAY,UACZ,WAAY,UACZ,WAAY,OACZ,GAAM,OACN,GAAM,UACN,GAAM,GACN,GAAM,KACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,OACN,GAAM,EACN,GAAM,OACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,OACN,GAAM,KACN,GAAM,UACN,WAAY,OACZ,WAAY,KACZ,WAAY,UACZ,WAAY,OACZ,WAAY,GACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,EACZ,WAAY,OACZ,WAAY,KACZ,WAAY,OACZ,WAAY,YAKhBC,EAAY,CACZ,WAAY,UAAY,SAAY,QACpC,OAAY,KAAY,IAAY,YAMpCC,EAAM5a,EAAO4a,IAAM9a,EAAYhjiB,OAAO,CACtCkkiB,SAAU,WAON,IALA,IACIG,EADMrjtB,KAAKssB,KACIg3rB,MAGfyZ,EAAU,GACLz+tB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,IAAI0+tB,EAAYP,EAAIn+tB,GAAK,EACzBy+tB,EAAQz+tB,GAAM+ktB,EAAS2Z,IAAc,KAAQ,GAAKA,EAAY,GAAO,CACxE,CAID,IADA,IAAIC,EAAUj9tB,KAAKk9tB,SAAW,GACrBC,EAAU,EAAGA,EAAU,GAAIA,IAAW,CAE3C,IAAIC,EAASH,EAAQE,GAAW,GAG5BE,EAAWV,EAAWQ,GAG1B,IAAS7+tB,EAAI,EAAGA,EAAI,GAAIA,IAEpB8+tB,EAAQ9+tB,EAAI,EAAK,IAAMy+tB,GAAUL,EAAIp+tB,GAAK,EAAK++tB,GAAY,KAAQ,GAAK/+tB,EAAI,EAG5E8+tB,EAAO,GAAM9+tB,EAAI,EAAK,KAAOy+tB,EAAQ,IAAQL,EAAIp+tB,EAAI,IAAM,EAAK++tB,GAAY,KAAS,GAAK/+tB,EAAI,EAOlG,IADA8+tB,EAAO,GAAMA,EAAO,IAAM,EAAMA,EAAO,KAAO,GACrC9+tB,EAAI,EAAGA,EAAI,EAAGA,IACnB8+tB,EAAO9+tB,GAAK8+tB,EAAO9+tB,KAAkB,GAATA,EAAI,GAAS,EAE7C8+tB,EAAO,GAAMA,EAAO,IAAM,EAAMA,EAAO,KAAO,EACjD,CAGD,IAAIE,EAAat9tB,KAAKu9tB,YAAc,GACpC,IAASj/tB,EAAI,EAAGA,EAAI,GAAIA,IACpBg/tB,EAAWh/tB,GAAK2+tB,EAAQ,GAAK3+tB,EAEpC,EAEDyltB,aAAc,SAAU3rqB,EAAGuU,GACvB3sD,KAAKgktB,cAAc5rqB,EAAGuU,EAAQ3sD,KAAKk9tB,SACtC,EAEDjZ,aAAc,SAAU7rqB,EAAGuU,GACvB3sD,KAAKgktB,cAAc5rqB,EAAGuU,EAAQ3sD,KAAKu9tB,YACtC,EAEDvZ,cAAe,SAAU5rqB,EAAGuU,EAAQswqB,GAEhCj9tB,KAAKw9tB,QAAUplrB,EAAEuU,GACjB3sD,KAAKy9tB,QAAUrlrB,EAAEuU,EAAS,GAG1B+wqB,EAAWl+tB,KAAKQ,KAAM,EAAI,WAC1B09tB,EAAWl+tB,KAAKQ,KAAM,GAAI,OAC1B29tB,EAAWn+tB,KAAKQ,KAAM,EAAI,WAC1B29tB,EAAWn+tB,KAAKQ,KAAM,EAAI,UAC1B09tB,EAAWl+tB,KAAKQ,KAAM,EAAI,YAG1B,IAAK,IAAIujD,EAAQ,EAAGA,EAAQ,GAAIA,IAAS,CAQrC,IANA,IAAI65qB,EAASH,EAAQ15qB,GACjBq6qB,EAAS59tB,KAAKw9tB,QACdK,EAAS79tB,KAAKy9tB,QAGd/9tB,EAAI,EACCpB,EAAI,EAAGA,EAAI,EAAGA,IACnBoB,GAAKk9tB,EAAOt+tB,KAAKu/tB,EAAST,EAAO9+tB,IAAMu+tB,EAAUv+tB,MAAQ,GAE7D0B,KAAKw9tB,QAAUK,EACf79tB,KAAKy9tB,QAAUG,EAASl+tB,CAC3B,CAGD,IAAI3B,EAAIiC,KAAKw9tB,QACbx9tB,KAAKw9tB,QAAUx9tB,KAAKy9tB,QACpBz9tB,KAAKy9tB,QAAU1/tB,EAGf2/tB,EAAWl+tB,KAAKQ,KAAM,EAAI,YAC1B29tB,EAAWn+tB,KAAKQ,KAAM,EAAI,UAC1B29tB,EAAWn+tB,KAAKQ,KAAM,EAAI,WAC1B09tB,EAAWl+tB,KAAKQ,KAAM,GAAI,OAC1B09tB,EAAWl+tB,KAAKQ,KAAM,EAAI,WAG1Bo4C,EAAEuU,GAAU3sD,KAAKw9tB,QACjBplrB,EAAEuU,EAAS,GAAK3sD,KAAKy9tB,OACxB,EAEDla,QAAS,EAETiC,OAAQ,EAERD,UAAW,IAIf,SAASmY,EAAW/wqB,EAAQs6F,GACxB,IAAIlpJ,GAAMiC,KAAKw9tB,UAAY7wqB,EAAU3sD,KAAKy9tB,SAAWx2kB,EACrDjnJ,KAAKy9tB,SAAW1/tB,EAChBiC,KAAKw9tB,SAAWz/tB,GAAK4uD,CACxB,CAED,SAASgxqB,EAAWhxqB,EAAQs6F,GACxB,IAAIlpJ,GAAMiC,KAAKy9tB,UAAY9wqB,EAAU3sD,KAAKw9tB,SAAWv2kB,EACrDjnJ,KAAKw9tB,SAAWz/tB,EAChBiC,KAAKy9tB,SAAW1/tB,GAAK4uD,CACxB,CAUD8yY,EAAEq9R,IAAM9a,EAAYsC,cAAcwY,GAKlC,IAAIgB,EAAY5b,EAAO4b,UAAY9b,EAAYhjiB,OAAO,CAClDkkiB,SAAU,WAEN,IACIG,EADMrjtB,KAAKssB,KACIg3rB,MAEnB,GAAwB,IAApBD,EAAS9gtB,QAAoC,IAApB8gtB,EAAS9gtB,QAAgB8gtB,EAAS9gtB,OAAS,EACpE,MAAM,IAAIxB,MAAM,iFAIpB,IAAIg9tB,EAAO1a,EAAS//sB,MAAM,EAAG,GACzB06tB,EAAO3a,EAAS9gtB,OAAS,EAAI8gtB,EAAS//sB,MAAM,EAAG,GAAK+/sB,EAAS//sB,MAAM,EAAG,GACtE26tB,EAAO5a,EAAS9gtB,OAAS,EAAI8gtB,EAAS//sB,MAAM,EAAG,GAAK+/sB,EAAS//sB,MAAM,EAAG,GAG1EtD,KAAKk+tB,MAAQpB,EAAI5W,gBAAgBP,EAAUzmtB,OAAO6+tB,IAClD/9tB,KAAKm+tB,MAAQrB,EAAI5W,gBAAgBP,EAAUzmtB,OAAO8+tB,IAClDh+tB,KAAKo+tB,MAAQtB,EAAI5W,gBAAgBP,EAAUzmtB,OAAO++tB,GACrD,EAEDla,aAAc,SAAU3rqB,EAAGuU,GACvB3sD,KAAKk+tB,MAAMna,aAAa3rqB,EAAGuU,GAC3B3sD,KAAKm+tB,MAAMla,aAAa7rqB,EAAGuU,GAC3B3sD,KAAKo+tB,MAAMra,aAAa3rqB,EAAGuU,EAC9B,EAEDs3pB,aAAc,SAAU7rqB,EAAGuU,GACvB3sD,KAAKo+tB,MAAMna,aAAa7rqB,EAAGuU,GAC3B3sD,KAAKm+tB,MAAMpa,aAAa3rqB,EAAGuU,GAC3B3sD,KAAKk+tB,MAAMja,aAAa7rqB,EAAGuU,EAC9B,EAED42pB,QAAS,EAETiC,OAAQ,EAERD,UAAW,IAWf9lR,EAAEq+R,UAAY9b,EAAYsC,cAAcwZ,EArvB3C,IAyvBM5+E,EAAS4+E,SAEhB,CAvwB4BlwB,CAAQC,EAAQ,OAAWA,EAAQ,OAAiBA,EAAQ,OAAUA,EAAQ,OAAaA,EAAQ,+BCA9H/7qB,EAAOw0qB,QAUD,SAAUpnD,GAgSjB,OA9RC,SAAUv6oB,GAEP,IAAI86b,EAAIy/M,EACJwmE,EAAQjmR,EAAEwiR,IACVr6Q,EAAO89Q,EAAM99Q,KACby2R,EAAe3Y,EAAMC,UAKrBwS,EAAQ14R,EAAEo2R,IAAM,CAAC,EAKPsC,EAAMrC,KAAOluR,EAAK5oR,OAAO,CAWnCrrK,KAAM,SAAUyqP,EAAMD,GAClBn+P,KAAKo+P,KAAOA,EACZp+P,KAAKm+P,IAAMA,CACd,IA8Kcg6d,EAAMxS,UAAY/9Q,EAAK5oR,OAAO,CAqB7CrrK,KAAM,SAAU2vsB,EAAOnkE,GACnBmkE,EAAQtjtB,KAAKsjtB,MAAQA,GAAS,GAG1BtjtB,KAAKm/oB,SADLA,GAAYx6oB,EACIw6oB,EAEe,EAAfmkE,EAAM/gtB,MAE7B,EAWDg6tB,MAAO,WAOH,IALA,IAAI+B,EAAWt+tB,KAAKsjtB,MAChBib,EAAiBD,EAAS/7tB,OAG1Bi8tB,EAAW,GACNlguB,EAAI,EAAGA,EAAIiguB,EAAgBjguB,IAAK,CACrC,IAAImguB,EAAUH,EAAShguB,GACvBkguB,EAASt8tB,KAAKu8tB,EAAQrge,MACtBoge,EAASt8tB,KAAKu8tB,EAAQtge,IACzB,CAED,OAAOkge,EAAan/tB,OAAOs/tB,EAAUx+tB,KAAKm/oB,SAC7C,EAWD97nB,MAAO,WAQH,IAPA,IAAIA,EAAQukb,EAAKvkb,MAAM7jB,KAAKQ,MAGxBsjtB,EAAQjgsB,EAAMigsB,MAAQtjtB,KAAKsjtB,MAAMhgtB,MAAM,GAGvCo7tB,EAAcpb,EAAM/gtB,OACfjE,EAAI,EAAGA,EAAIoguB,EAAapguB,IAC7BgltB,EAAMhltB,GAAKgltB,EAAMhltB,GAAG+kB,QAGxB,OAAOA,CACV,GAzRR,IA8RM67nB,CAEP,CA5S4B0uD,CAAQC,EAAQ,wCCD7C,IAAI8wB,EAAoB,SAA2BtguB,GAClD,OAID,SAAyBA,GACxB,QAASA,GAA0B,kBAAVA,CACzB,CANOuguB,CAAgBvguB,KAQxB,SAAmBA,GAClB,IAAIwguB,EAAc5guB,OAAOJ,UAAUmJ,SAASxH,KAAKnB,GAEjD,MAAuB,oBAAhBwguB,GACa,kBAAhBA,GAQL,SAAwBxguB,GACvB,OAAOA,EAAMyguB,WAAaC,CAC1B,CATIC,CAAe3guB,EACnB,CAbK4guB,CAAU5guB,EACf,EAeD,IACI0guB,EADiC,oBAAXrhuB,QAAyBA,OAAOmuU,IAClBnuU,OAAOmuU,IAAI,iBAAmB,MAUtE,SAASqzZ,EAA8B7guB,EAAO6Q,GAC7C,OAA0B,IAAlBA,EAAQmU,OAAmBnU,EAAQyvtB,kBAAkBtguB,GAC1D8guB,GANiBpgsB,EAMK1gC,EALlBwI,MAAMQ,QAAQ03B,GAAO,GAAK,CAAC,GAKD1gC,EAAO6Q,GACrC7Q,EAPJ,IAAqB0gC,CAQpB,CAED,SAASqgsB,EAAkBj6tB,EAAQ6C,EAAQkH,GAC1C,OAAO/J,EAAOqF,OAAOxC,GAAQ0B,KAAI,SAASmG,GACzC,OAAOqvtB,EAA8BrvtB,EAASX,EAC9C,GACD,CAkBD,SAASw8oB,EAAQvmpB,GAChB,OAAOlH,OAAOgF,KAAKkC,GAAQqF,OAT5B,SAAyCrF,GACxC,OAAOlH,OAAO8V,sBACX9V,OAAO8V,sBAAsB5O,GAAQ8F,QAAO,SAAS0sC,GACtD,OAAOxyC,EAAO0mC,qBAAqB8L,EACnC,IACC,EACH,CAGkC0nrB,CAAgCl6tB,GAClE,CAED,SAASm6tB,EAAmBnxsB,EAAQozD,GACnC,IACC,OAAOA,KAAYpzD,CAGnB,CAFC,MAAMjiB,GACP,OAAO,CACP,CACD,CASD,SAASqztB,EAAYp6tB,EAAQ6C,EAAQkH,GACpC,IAAIq7a,EAAc,CAAC,EAiBnB,OAhBIr7a,EAAQyvtB,kBAAkBx5tB,IAC7BumpB,EAAQvmpB,GAAQ5E,SAAQ,SAAS2D,GAChCqmb,EAAYrmb,GAAOg7tB,EAA8B/5tB,EAAOjB,GAAMgL,EAC9D,IAEFw8oB,EAAQ1jpB,GAAQzH,SAAQ,SAAS2D,IAblC,SAA0BiB,EAAQjB,GACjC,OAAOo7tB,EAAmBn6tB,EAAQjB,MAC5BjG,OAAOE,eAAeqB,KAAK2F,EAAQjB,IACpCjG,OAAO4tC,qBAAqBrsC,KAAK2F,EAAQjB,GAC9C,EAUKs7tB,CAAiBr6tB,EAAQjB,KAIzBo7tB,EAAmBn6tB,EAAQjB,IAAQgL,EAAQyvtB,kBAAkB32tB,EAAO9D,IACvEqmb,EAAYrmb,GAhDf,SAA0BA,EAAKgL,GAC9B,IAAKA,EAAQuwtB,YACZ,OAAON,EAER,IAAIM,EAAcvwtB,EAAQuwtB,YAAYv7tB,GACtC,MAA8B,oBAAhBu7tB,EAA6BA,EAAcN,CACzD,CA0CqBO,CAAiBx7tB,EAAKgL,EAAtBwwtB,CAA+Bv6tB,EAAOjB,GAAM8D,EAAO9D,GAAMgL,GAE5Eq7a,EAAYrmb,GAAOg7tB,EAA8Bl3tB,EAAO9D,GAAMgL,GAE/D,IACMq7a,CACP,CAED,SAAS40S,EAAUh6tB,EAAQ6C,EAAQkH,IAClCA,EAAUA,GAAW,CAAC,GACdywtB,WAAazwtB,EAAQywtB,YAAcP,EAC3ClwtB,EAAQyvtB,kBAAoBzvtB,EAAQyvtB,mBAAqBA,EAGzDzvtB,EAAQgwtB,8BAAgCA,EAExC,IAAIU,EAAgB/4tB,MAAMQ,QAAQW,GAIlC,OAFgC43tB,IADZ/4tB,MAAMQ,QAAQlC,GAKvBy6tB,EACH1wtB,EAAQywtB,WAAWx6tB,EAAQ6C,EAAQkH,GAEnCqwtB,EAAYp6tB,EAAQ6C,EAAQkH,GAJ5BgwtB,EAA8Bl3tB,EAAQkH,EAM9C,CAEDiwtB,EAAUhipB,IAAM,SAAsB6hB,EAAO9vF,GAC5C,IAAKrI,MAAMQ,QAAQ23F,GAClB,MAAM,IAAIj+F,MAAM,qCAGjB,OAAOi+F,EAAM9zF,QAAO,SAAS9H,EAAM1B,GAClC,OAAOy9tB,EAAU/7tB,EAAM1B,EAAMwN,EAC7B,GAAE,CAAC,EACJ,EAED,IAAI2wtB,EAAcV,EAElBrtsB,EAAOw0qB,QAAUu5B,yBCpIjB,IAAI1zsB,EAAS0hrB,EAAQ,OACjBiyB,EAAcjyB,EAAQ,OACtBjprB,EAAQ,CAAE,MAAS,YACnBm7sB,EAAelyB,EAAQ,OAE3B,SAAS7sqB,EAAOnxB,EAAS0xE,EAAUljF,GACjC,IAAI2huB,EAAQp7sB,EAAM28D,GAMlB,GALqB,qBAAVy+oB,IACTA,EAqBJ,SAAiB7kL,GACf,IAAI6kL,EAAQF,EAAY3kL,GACpB70iB,EAAS6lB,EAAO6zsB,GAEpB,OADAp7sB,EAAMo7sB,GAASp7sB,EAAMu2hB,GAAWv2hB,EAAMte,GAAUA,EACzCA,CACR,CA1BWmgC,CAAO86C,IAIby+oB,EAAO,CACT,QAAcr7tB,IAAVtG,EACF,OAAOwR,EAAQmxB,MAAMg/rB,GAGvBnwtB,EAAQmxB,MAAMg/rB,GAASD,EAAaC,EAAO3huB,EAC5C,CACF,CAED,SAASmyC,EAAM3gC,EAASma,GACtB,IAAK,IAAI6E,KAAK7E,EACRA,EAAW7rB,eAAe0wB,IAC5BmS,EAAMnxB,EAASgf,EAAG7E,EAAW6E,GAGlC,CASD,SAASrB,IACkB,IAArBhpB,UAAUjC,OACgB,kBAAjBiC,UAAU,GACnBA,UAAU,GAAGw8B,MAAMm8B,QAAU34D,UAAU,GAEvCgsC,EAAKhsC,UAAU,GAAIA,UAAU,IAG/Bw8B,EAAMx8B,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAE/C,CAEDstB,EAAOw0qB,QAAU94qB,EACjBsE,EAAOw0qB,QAAQ94qB,IAAMA,EAErBsE,EAAOw0qB,QAAQnhrB,IAAM,SAAUtV,EAASma,GACtC,OAAInjB,MAAMQ,QAAQ2iB,GACTA,EAAW9e,QAAO,SAAU2I,EAAKyb,GAEtC,OADAzb,EAAIyb,GAAQ0R,EAAMnxB,EAASyf,GAAQ,IAC5Bzb,CACR,GAAE,CAAC,GAEGmtB,EAAMnxB,EAASma,GAAc,GAEvC,kCCrCD,IAOIi2sB,EAPAC,EAAuB,kBAAZj6tB,QAAuBA,QAAU,KAC5Ck6tB,EAAeD,GAAwB,oBAAZA,EAAEz7tB,MAC7By7tB,EAAEz7tB,MACF,SAAsBU,EAAQkqL,EAAU9qL,GACxC,OAAOmrL,SAAS7xL,UAAU4G,MAAMjF,KAAK2F,EAAQkqL,EAAU9qL,EACxD,EAID07tB,EADEC,GAA0B,oBAAdA,EAAEpstB,QACCostB,EAAEpstB,QACV7V,OAAO8V,sBACC,SAAwB5O,GACvC,OAAOlH,OAAOymC,oBAAoBv/B,GAC/BqF,OAAOvM,OAAO8V,sBAAsB5O,GACxC,EAEgB,SAAwBA,GACvC,OAAOlH,OAAOymC,oBAAoBv/B,EACnC,EAOH,IAAIi7tB,EAAcn7tB,OAAO3C,OAAS,SAAqBjE,GACrD,OAAOA,IAAUA,CAClB,EAED,SAAS6uB,IACPA,EAAavZ,KAAKnU,KAAKQ,KACxB,CACD8xB,EAAOw0qB,QAAUp5qB,EACjB4E,EAAOw0qB,QAAQ/kW,KAwYf,SAAc8+X,EAAS39tB,GACrB,OAAO,IAAIM,SAAQ,SAAUrC,EAASoD,GACpC,SAASu8tB,EAAc57tB,GACrB27tB,EAAQE,eAAe79tB,EAAM8gC,GAC7Bz/B,EAAOW,EACR,CAED,SAAS8+B,IAC+B,oBAA3B68rB,EAAQE,gBACjBF,EAAQE,eAAe,QAASD,GAElC3/tB,EAAQ,GAAG2C,MAAM9D,KAAKgF,WACvB,CAEDg8tB,EAA+BH,EAAS39tB,EAAM8gC,EAAU,CAAE+9T,MAAM,IACnD,UAAT7+V,GAMR,SAAuC29tB,EAASnupB,EAASyqK,GAC7B,oBAAf0jf,EAAQj7rB,IACjBo7rB,EAA+BH,EAAS,QAASnupB,EAASyqK,EAE7D,CATK8jf,CAA8BJ,EAASC,EAAe,CAAE/+X,MAAM,GAEjE,GACF,EAxZDr0U,EAAaA,aAAeA,EAE5BA,EAAarvB,UAAU6iuB,aAAU/7tB,EACjCuoB,EAAarvB,UAAU8iuB,aAAe,EACtCzzsB,EAAarvB,UAAU+iuB,mBAAgBj8tB,EAIvC,IAAIk8tB,EAAsB,GAE1B,SAASC,EAAczzsB,GACrB,GAAwB,oBAAbA,EACT,MAAM,IAAI7rB,UAAU,0EAA4E6rB,EAEnG,CAoCD,SAAS0zsB,EAAiBC,GACxB,YAA2Br8tB,IAAvBq8tB,EAAKJ,cACA1zsB,EAAa2zsB,oBACfG,EAAKJ,aACb,CAkDD,SAASK,EAAa97tB,EAAQ7F,EAAM+tB,EAAUuP,GAC5C,IAAIvO,EACAjB,EACA+xU,EA1HsBqD,EAgJ1B,GApBAs+X,EAAczzsB,QAGC1oB,KADfyoB,EAASjoB,EAAOu7tB,UAEdtzsB,EAASjoB,EAAOu7tB,QAAUziuB,OAAOiB,OAAO,MACxCiG,EAAOw7tB,aAAe,SAIKh8tB,IAAvByoB,EAAO8zsB,cACT/7tB,EAAO6rB,KAAK,cAAe1xB,EACf+tB,EAASA,SAAWA,EAASA,SAAWA,GAIpDD,EAASjoB,EAAOu7tB,SAElBvhY,EAAW/xU,EAAO9tB,SAGHqF,IAAbw6V,EAEFA,EAAW/xU,EAAO9tB,GAAQ+tB,IACxBloB,EAAOw7tB,kBAeT,GAbwB,oBAAbxhY,EAETA,EAAW/xU,EAAO9tB,GAChBs9B,EAAU,CAACvP,EAAU8xU,GAAY,CAACA,EAAU9xU,GAErCuP,EACTuiU,EAASr0N,QAAQz9G,GAEjB8xU,EAASj9V,KAAKmrB,IAIhBgB,EAAI0ysB,EAAiB57tB,IACb,GAAKg6V,EAAS58V,OAAS8rB,IAAM8wU,EAASgiY,OAAQ,CACpDhiY,EAASgiY,QAAS,EAGlB,IAAI51oB,EAAI,IAAIxqF,MAAM,+CACEo+V,EAAS58V,OAAS,IAAMyC,OAAO1F,GADjC,qEAIlBisF,EAAE7oF,KAAO,8BACT6oF,EAAE80oB,QAAUl7tB,EACZomF,EAAEjsF,KAAOA,EACTisF,EAAEp2D,MAAQgqU,EAAS58V,OA7KGigW,EA8KHj3Q,EA7KnBt/D,SAAWA,QAAQD,MAAMC,QAAQD,KAAKw2U,EA8KvC,CAGH,OAAOr9V,CACR,CAaD,SAASi8tB,IACP,IAAKphuB,KAAKqhuB,MAGR,OAFArhuB,KAAKmF,OAAOo7tB,eAAevguB,KAAKV,KAAMU,KAAKshuB,QAC3CthuB,KAAKqhuB,OAAQ,EACY,IAArB78tB,UAAUjC,OACLvC,KAAKqtB,SAAS7tB,KAAKQ,KAAKmF,QAC1BnF,KAAKqtB,SAAS5oB,MAAMzE,KAAKmF,OAAQX,UAE3C,CAED,SAAS+8tB,EAAUp8tB,EAAQ7F,EAAM+tB,GAC/B,IAAIje,EAAQ,CAAEiytB,OAAO,EAAOC,YAAQ38tB,EAAWQ,OAAQA,EAAQ7F,KAAMA,EAAM+tB,SAAUA,GACjF4sM,EAAUmngB,EAAY17tB,KAAK0J,GAG/B,OAFA6qN,EAAQ5sM,SAAWA,EACnBje,EAAMkytB,OAASrngB,EACRA,CACR,CAyHD,SAASu3e,EAAWrssB,EAAQ7F,EAAMkiuB,GAChC,IAAIp0sB,EAASjoB,EAAOu7tB,QAEpB,QAAe/7tB,IAAXyoB,EACF,MAAO,GAET,IAAIq0sB,EAAar0sB,EAAO9tB,GACxB,YAAmBqF,IAAf88tB,EACK,GAEiB,oBAAfA,EACFD,EAAS,CAACC,EAAWp0sB,UAAYo0sB,GAAc,CAACA,GAElDD,EAsDT,SAAyB96tB,GAEvB,IADA,IAAI09B,EAAM,IAAIv9B,MAAMH,EAAInE,QACfjE,EAAI,EAAGA,EAAI8lC,EAAI7hC,SAAUjE,EAChC8lC,EAAI9lC,GAAKoI,EAAIpI,GAAG+uB,UAAY3mB,EAAIpI,GAElC,OAAO8lC,CACR,CA3DGs9rB,CAAgBD,GAAcE,EAAWF,EAAYA,EAAWl/tB,OACnE,CAmBD,SAASq/tB,EAActiuB,GACrB,IAAI8tB,EAASptB,KAAK0guB,QAElB,QAAe/7tB,IAAXyoB,EAAsB,CACxB,IAAIq0sB,EAAar0sB,EAAO9tB,GAExB,GAA0B,oBAAfmiuB,EACT,OAAO,EACF,QAAmB98tB,IAAf88tB,EACT,OAAOA,EAAWl/tB,MAErB,CAED,OAAO,CACR,CAMD,SAASo/tB,EAAWj7tB,EAAKxI,GAEvB,IADA,IAAIkwB,EAAO,IAAIvnB,MAAM3I,GACZI,EAAI,EAAGA,EAAIJ,IAAKI,EACvB8vB,EAAK9vB,GAAKoI,EAAIpI,GAChB,OAAO8vB,CACR,CA2CD,SAASoysB,EAA+BH,EAAS39tB,EAAM2qB,EAAUsvN,GAC/D,GAA0B,oBAAf0jf,EAAQj7rB,GACbu3M,EAAM4kH,KACR8+X,EAAQ9+X,KAAK7+V,EAAM2qB,GAEnBgzsB,EAAQj7rB,GAAG1iC,EAAM2qB,OAEd,IAAwC,oBAA7BgzsB,EAAQv6pB,iBAYxB,MAAM,IAAItkE,UAAU,6EAA+E6+tB,GATnGA,EAAQv6pB,iBAAiBpjE,GAAM,SAASm/tB,EAAatiuB,GAG/Co9O,EAAM4kH,MACR8+X,EAAQr6pB,oBAAoBtjE,EAAMm/tB,GAEpCx0sB,EAAS9tB,EACV,GAGF,CACF,CAraDtB,OAAOG,eAAe8uB,EAAc,sBAAuB,CACzDruB,YAAY,EACZsmB,IAAK,WACH,OAAO07sB,CACR,EACDrzsB,IAAK,SAASjuB,GACZ,GAAmB,kBAARA,GAAoBA,EAAM,GAAK6guB,EAAY7guB,GACpD,MAAM,IAAI0yL,WAAW,kGAAoG1yL,EAAM,KAEjIshuB,EAAsBthuB,CACvB,IAGH2tB,EAAavZ,KAAO,gBAEGhP,IAAjB3E,KAAK0guB,SACL1guB,KAAK0guB,UAAYziuB,OAAOiC,eAAeF,MAAM0guB,UAC/C1guB,KAAK0guB,QAAUziuB,OAAOiB,OAAO,MAC7Bc,KAAK2guB,aAAe,GAGtB3guB,KAAK4guB,cAAgB5guB,KAAK4guB,oBAAiBj8tB,CAC5C,EAIDuoB,EAAarvB,UAAUikuB,gBAAkB,SAAyB5juB,GAChE,GAAiB,kBAANA,GAAkBA,EAAI,GAAKkiuB,EAAYliuB,GAChD,MAAM,IAAI+zL,WAAW,gFAAkF/zL,EAAI,KAG7G,OADA8B,KAAK4guB,cAAgB1iuB,EACd8B,IACR,EAQDktB,EAAarvB,UAAUkkuB,gBAAkB,WACvC,OAAOhB,EAAiB/guB,KACzB,EAEDktB,EAAarvB,UAAUmzB,KAAO,SAAc1xB,GAE1C,IADA,IAAIiF,EAAO,GACFjG,EAAI,EAAGA,EAAIkG,UAAUjC,OAAQjE,IAAKiG,EAAKrC,KAAKsC,UAAUlG,IAC/D,IAAI0juB,EAAoB,UAAT1iuB,EAEX8tB,EAASptB,KAAK0guB,QAClB,QAAe/7tB,IAAXyoB,EACF40sB,EAAWA,QAA4Br9tB,IAAjByoB,EAAOhpB,WAC1B,IAAK49tB,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAI/N,EAGJ,GAFI1vtB,EAAKhC,OAAS,IAChB0xtB,EAAK1vtB,EAAK,IACR0vtB,aAAclztB,MAGhB,MAAMkztB,EAGR,IAAIvvtB,EAAM,IAAI3D,MAAM,oBAAsBkztB,EAAK,KAAOA,EAAGxrtB,QAAU,IAAM,KAEzE,MADA/D,EAAIsgB,QAAUivsB,EACRvvtB,CACP,CAED,IAAIwtE,EAAU9kD,EAAO9tB,GAErB,QAAgBqF,IAAZutE,EACF,OAAO,EAET,GAAuB,oBAAZA,EACTiupB,EAAajupB,EAASlyE,KAAMuE,OAE5B,KAAIoC,EAAMurE,EAAQ3vE,OACd85Y,EAAYslV,EAAWzvpB,EAASvrE,GACpC,IAASrI,EAAI,EAAGA,EAAIqI,IAAOrI,EACzB6huB,EAAa9jV,EAAU/9Y,GAAI0B,KAAMuE,EAHnC,CAMF,OAAO,CACR,EAgED2oB,EAAarvB,UAAUokuB,YAAc,SAAqB3iuB,EAAM+tB,GAC9D,OAAO4zsB,EAAajhuB,KAAMV,EAAM+tB,GAAU,EAC3C,EAEDH,EAAarvB,UAAUunC,GAAKlY,EAAarvB,UAAUokuB,YAEnD/0sB,EAAarvB,UAAUqkuB,gBACnB,SAAyB5iuB,EAAM+tB,GAC7B,OAAO4zsB,EAAajhuB,KAAMV,EAAM+tB,GAAU,EAC3C,EAoBLH,EAAarvB,UAAU0jW,KAAO,SAAcjiW,EAAM+tB,GAGhD,OAFAyzsB,EAAczzsB,GACdrtB,KAAKolC,GAAG9lC,EAAMiiuB,EAAUvhuB,KAAMV,EAAM+tB,IAC7BrtB,IACR,EAEDktB,EAAarvB,UAAUskuB,oBACnB,SAA6B7iuB,EAAM+tB,GAGjC,OAFAyzsB,EAAczzsB,GACdrtB,KAAKkiuB,gBAAgB5iuB,EAAMiiuB,EAAUvhuB,KAAMV,EAAM+tB,IAC1CrtB,IACR,EAGLktB,EAAarvB,UAAU0iuB,eACnB,SAAwBjhuB,EAAM+tB,GAC5B,IAAIgU,EAAMjU,EAAQ4sC,EAAU17D,EAAG8juB,EAK/B,GAHAtB,EAAczzsB,QAGC1oB,KADfyoB,EAASptB,KAAK0guB,SAEZ,OAAO1guB,KAGT,QAAa2E,KADb08B,EAAOjU,EAAO9tB,IAEZ,OAAOU,KAET,GAAIqhC,IAAShU,GAAYgU,EAAKhU,WAAaA,EACb,MAAtBrtB,KAAK2guB,aACT3guB,KAAK0guB,QAAUziuB,OAAOiB,OAAO,cAEtBkuB,EAAO9tB,GACV8tB,EAAOmzsB,gBACTvguB,KAAKgxB,KAAK,iBAAkB1xB,EAAM+hC,EAAKhU,UAAYA,SAElD,GAAoB,oBAATgU,EAAqB,CAGrC,IAFA24B,GAAY,EAEP17D,EAAI+iC,EAAK9+B,OAAS,EAAGjE,GAAK,EAAGA,IAChC,GAAI+iC,EAAK/iC,KAAO+uB,GAAYgU,EAAK/iC,GAAG+uB,WAAaA,EAAU,CACzD+0sB,EAAmB/gsB,EAAK/iC,GAAG+uB,SAC3B2sC,EAAW17D,EACX,KACD,CAGH,GAAI07D,EAAW,EACb,OAAOh6D,KAEQ,IAAbg6D,EACF34B,EAAKh0B,QAiIf,SAAmBg0B,EAAMn3B,GACvB,KAAOA,EAAQ,EAAIm3B,EAAK9+B,OAAQ2H,IAC9Bm3B,EAAKn3B,GAASm3B,EAAKn3B,EAAQ,GAC7Bm3B,EAAKl+B,KACN,CAnISk/tB,CAAUhhsB,EAAM24B,GAGE,IAAhB34B,EAAK9+B,SACP6qB,EAAO9tB,GAAQ+hC,EAAK,SAEQ18B,IAA1ByoB,EAAOmzsB,gBACTvguB,KAAKgxB,KAAK,iBAAkB1xB,EAAM8iuB,GAAoB/0sB,EACzD,CAED,OAAOrtB,IACR,EAELktB,EAAarvB,UAAU0qC,IAAMrb,EAAarvB,UAAU0iuB,eAEpDrzsB,EAAarvB,UAAUykuB,mBACnB,SAA4BhjuB,GAC1B,IAAI+8Y,EAAWjvX,EAAQ9uB,EAGvB,QAAeqG,KADfyoB,EAASptB,KAAK0guB,SAEZ,OAAO1guB,KAGT,QAA8B2E,IAA1ByoB,EAAOmzsB,eAUT,OATyB,IAArB/7tB,UAAUjC,QACZvC,KAAK0guB,QAAUziuB,OAAOiB,OAAO,MAC7Bc,KAAK2guB,aAAe,QACMh8tB,IAAjByoB,EAAO9tB,KACY,MAAtBU,KAAK2guB,aACT3guB,KAAK0guB,QAAUziuB,OAAOiB,OAAO,aAEtBkuB,EAAO9tB,IAEXU,KAIT,GAAyB,IAArBwE,UAAUjC,OAAc,CAC1B,IACI2B,EADAjB,EAAOhF,OAAOgF,KAAKmqB,GAEvB,IAAK9uB,EAAI,EAAGA,EAAI2E,EAAKV,SAAUjE,EAEjB,oBADZ4F,EAAMjB,EAAK3E,KAEX0B,KAAKsiuB,mBAAmBp+tB,GAK1B,OAHAlE,KAAKsiuB,mBAAmB,kBACxBtiuB,KAAK0guB,QAAUziuB,OAAOiB,OAAO,MAC7Bc,KAAK2guB,aAAe,EACb3guB,IACR,CAID,GAAyB,oBAFzBq8Y,EAAYjvX,EAAO9tB,IAGjBU,KAAKuguB,eAAejhuB,EAAM+8Y,QACrB,QAAkB13Y,IAAd03Y,EAET,IAAK/9Y,EAAI+9Y,EAAU95Y,OAAS,EAAGjE,GAAK,EAAGA,IACrC0B,KAAKuguB,eAAejhuB,EAAM+8Y,EAAU/9Y,IAIxC,OAAO0B,IACR,EAmBLktB,EAAarvB,UAAUw+Y,UAAY,SAAmB/8Y,GACpD,OAAOkysB,EAAWxxsB,KAAMV,GAAM,EAC/B,EAED4tB,EAAarvB,UAAU0kuB,aAAe,SAAsBjjuB,GAC1D,OAAOkysB,EAAWxxsB,KAAMV,GAAM,EAC/B,EAED4tB,EAAa00sB,cAAgB,SAASvB,EAAS/guB,GAC7C,MAAqC,oBAA1B+guB,EAAQuB,cACVvB,EAAQuB,cAActiuB,GAEtBsiuB,EAAcpiuB,KAAK6guB,EAAS/guB,EAEtC,EAED4tB,EAAarvB,UAAU+juB,cAAgBA,EAiBvC10sB,EAAarvB,UAAU0uc,WAAa,WAClC,OAAOvsc,KAAK2guB,aAAe,EAAIV,EAAejguB,KAAK0guB,SAAW,EAC/D,kCCnaD5usB,EAAOw0qB,QAAU,SAASt/S,EAAMzoZ,EAAG6K,GACjC,GAAI7K,IAAM6K,EAAG,OAAO,EAEpB,GAAI7K,GAAK6K,GAAiB,iBAAL7K,GAA6B,iBAAL6K,EAAe,CAC1D,GAAI7K,EAAEX,cAAgBwL,EAAExL,YAAa,OAAO,EAE5C,IAAI2E,EAAQjE,EAAG2E,EACf,GAAI4D,MAAMQ,QAAQ9I,GAAI,CAEpB,IADAgE,EAAShE,EAAEgE,SACG6G,EAAE7G,OAAQ,OAAO,EAC/B,IAAKjE,EAAIiE,EAAgB,IAARjE,KACf,IAAK0oZ,EAAMzoZ,EAAED,GAAI8K,EAAE9K,IAAK,OAAO,EACjC,OAAO,CACR,CAID,GAAIC,EAAEX,cAAgByO,OAAQ,OAAO9N,EAAEyJ,SAAWoB,EAAEpB,QAAUzJ,EAAEo+O,QAAUvzO,EAAEuzO,MAC5E,GAAIp+O,EAAEyH,UAAY/H,OAAOJ,UAAUmI,QAAS,OAAOzH,EAAEyH,YAAcoD,EAAEpD,UACrE,GAAIzH,EAAEyI,WAAa/I,OAAOJ,UAAUmJ,SAAU,OAAOzI,EAAEyI,aAAeoC,EAAEpC,WAIxE,IADAzE,GADAU,EAAOhF,OAAOgF,KAAK1E,IACLgE,UACCtE,OAAOgF,KAAKmG,GAAG7G,OAAQ,OAAO,EAE7C,IAAKjE,EAAIiE,EAAgB,IAARjE,KACf,IAAKL,OAAOJ,UAAUM,eAAeqB,KAAK4J,EAAGnG,EAAK3E,IAAK,OAAO,EAEhE,IAAKA,EAAIiE,EAAgB,IAARjE,KAAY,CAC3B,IAAI4F,EAAMjB,EAAK3E,GAEf,IAAK0oZ,EAAMzoZ,EAAE2F,GAAMkF,EAAElF,IAAO,OAAO,CACpC,CAED,OAAO,CACR,CAGD,OAAO3F,IAAIA,GAAK6K,IAAIA,CACrB,iDCnCK,SAAUo5tB,EACdC,GAEA,OAAO,SACLlkuB,EACA6K,EACAs5tB,EACAC,EACAC,EACAC,EACAl5tB,GAEA,OAAO84tB,EAAWlkuB,EAAG6K,EAAGO,EACzB,CACF,CAOK,SAAUm5tB,EAEdC,GACA,OAAO,SACLxkuB,EACA6K,EACAw6I,EACAh/H,GAEA,IAAKrmB,IAAM6K,GAAkB,kBAAN7K,GAA+B,kBAAN6K,EAC9C,OAAO25tB,EAAcxkuB,EAAG6K,EAAGw6I,EAASh/H,GAGtC,IAAMo+sB,EAAUp+sB,EAAMO,IAAI5mB,GACpB0kuB,EAAUr+sB,EAAMO,IAAI/b,GAE1B,GAAI45tB,GAAWC,EACb,OAAOD,IAAY55tB,GAAK65tB,IAAY1kuB,EAGtCqmB,EAAM4I,IAAIjvB,EAAG6K,GACbwb,EAAM4I,IAAIpkB,EAAG7K,GAEb,IAAM+H,EAASy8tB,EAAcxkuB,EAAG6K,EAAGw6I,EAASh/H,GAK5C,OAHAA,EAAM6I,OAAOlvB,GACbqmB,EAAM6I,OAAOrkB,GAEN9C,CACS,CACnB,CASe,SAAA++I,EAA0C9mJ,EAAM6K,GAC9D,IAAMq8O,EAA8B,CAAC,EAErC,IAAK,IAAMvhP,KAAO3F,EAChBknP,EAAOvhP,GAAO3F,EAAE2F,GAGlB,IAAK,IAAMA,KAAOkF,EAChBq8O,EAAOvhP,GAAOkF,EAAElF,GAGlB,OAAOuhP,CACR,CAQK,SAAU+1J,EAAcn9Y,GAC5B,OAAOA,EAAMT,cAAgBK,QAA+B,MAArBI,EAAMT,WAC9C,CAKK,SAAUsluB,EAAc7kuB,GAC5B,MAA6B,oBAAfA,EAAMwC,IACrB,CAKe,SAAAsiuB,EAAmB5kuB,EAAQ6K,GACzC,OAAO7K,IAAM6K,GAAM7K,IAAMA,GAAK6K,IAAMA,CACtC,CCnGA,IAAMg6tB,EAAgB,qBAChBC,EAAc,mBACdC,EAAW,gBACXC,EAAc,kBACdC,EAAU,eACVC,EAAa,kBACbC,EAAa,kBACbC,EAAU,eACVC,EAAa,kBAEX58tB,EAAa/I,OAAOJ,UAASmJ,SAE/B,SAAU68tB,EAAuBlktB,GACrC,IAAAulY,EAAc,iBACd4+U,EAAa,gBACbC,EAAY,eACZC,EAAe,kBACfC,EAAe,kBACfC,EAAY,eAGNtglB,GAAUuglB,EAFG,uBAEiB1B,GAKpC,SAASA,EAAWlkuB,EAAQ6K,EAAQO,GAElC,GAAIpL,IAAM6K,EACR,OAAO,EAOT,IAAK7K,IAAM6K,GAAkB,kBAAN7K,GAA+B,kBAAN6K,EAC9C,OAAO7K,IAAMA,GAAK6K,IAAMA,EAe1B,GAAIoyY,EAAcj9Y,IAAMi9Y,EAAcpyY,GACpC,OAAO46tB,EAAgBzluB,EAAG6K,EAAGw6I,EAASj6I,GAMxC,IAAMy6tB,EAASv9tB,MAAMQ,QAAQ9I,GACvB8luB,EAASx9tB,MAAMQ,QAAQ+B,GAE7B,GAAIg7tB,GAAUC,EACZ,OAAOD,IAAWC,GAAUn/U,EAAe3mZ,EAAG6K,EAAGw6I,EAASj6I,GAO5D,IAAM26tB,EAAOt9tB,EAASxH,KAAKjB,GAE3B,OAAI+luB,IAASt9tB,EAASxH,KAAK4J,KAIvBk7tB,IAAShB,EAGJQ,EAAcvluB,EAAG6K,EAAGw6I,EAASj6I,GAGlC26tB,IAASf,EACJU,EAAgB1luB,EAAG6K,EAAGw6I,EAASj6I,GAGpC26tB,IAASd,EACJO,EAAaxluB,EAAG6K,EAAGw6I,EAASj6I,GAGjC26tB,IAASX,EACJO,EAAa3luB,EAAG6K,EAAGw6I,EAASj6I,GAMjC26tB,IAASZ,GAAcY,IAASlB,GAG3BF,EAAc3kuB,KAAM2kuB,EAAc95tB,IAErC46tB,EAAgBzluB,EAAG6K,EAAGw6I,EAASj6I,IAMjC26tB,IAASjB,GAAeiB,IAASb,GAAca,IAASV,IACnDT,EAAmB5kuB,EAAEyH,UAAWoD,EAAEpD,WAe5C,CAED,OAAOy8tB,CACT,CC/HM,SAAUv9U,EACd3mZ,EACA6K,EACAw6I,EACAj6I,GAEA,IAAIO,EAAQ3L,EAAEgE,OAEd,GAAI6G,EAAE7G,SAAW2H,EACf,OAAO,EAOT,KAAOA,KAAU,GACf,IAAK05I,EAAQrlJ,EAAE2L,GAAQd,EAAEc,GAAQA,EAAOA,EAAO3L,EAAG6K,EAAGO,GACnD,OAAO,EAIX,OAAO,CACR,CAKM,IAAM46tB,EAAyBzB,EAAiB59U,GC1BvC,SAAA4+U,EAAcvluB,EAAS6K,GACrC,OAAO+5tB,EAAmB5kuB,EAAEyH,UAAWoD,EAAEpD,UAC3C,CCJM,SAAU+9tB,EACdxluB,EACA6K,EACAw6I,EACAj6I,GAEA,IAAI66tB,EAAejmuB,EAAE4wD,OAAS/lD,EAAE+lD,KAEhC,IAAKq1qB,EACH,OAAO,EAGT,IAAKjmuB,EAAE4wD,KACL,OAAO,EAST,IAAMs1qB,EAAuC,CAAC,EAE1CC,EAAS,EA4Bb,OA1BAnmuB,EAAEgC,SAAQ,SAACokuB,EAAQC,GACjB,GAAKJ,EAAL,CAIA,IAAIK,GAAW,EACXC,EAAc,EAElB17tB,EAAE7I,SAAQ,SAACwkuB,EAAQC,GAEdH,GACAJ,EAAeK,MACfD,EACCjhlB,EAAQghlB,EAAMI,EAAMN,EAAQI,EAAavmuB,EAAG6K,EAAGO,IAC/Ci6I,EAAQ+glB,EAAQI,EAAQH,EAAMI,EAAMzmuB,EAAG6K,EAAGO,MAE5C86tB,EAAeK,IAAe,GAGhCA,GACD,IAEDJ,IACAF,EAAeK,CApBd,CAqBF,IAEML,CACR,CAKM,IAAMS,EAAuBnC,EAAiBiB,GCxD/CmB,EAAQ,SACN/muB,EAAmBF,OAAOJ,UAASM,eAKrC,SAAU6luB,EACdzluB,EACA6K,EACAw6I,EACAj6I,GAEA,IAQIzF,EARE+jZ,EAAQhqZ,OAAOgF,KAAK1E,GAEtB2L,EAAQ+9Y,EAAM1lZ,OAElB,GAAItE,OAAOgF,KAAKmG,GAAG7G,SAAW2H,EAC5B,OAAO,EAST,KAAOA,KAAU,GAAG,CAGlB,IAFAhG,EAAM+jZ,EAAM/9Y,MAEAg7tB,EAAO,CACjB,IAAMC,IAAkB5muB,EAAEuguB,SACpBsG,IAAkBh8tB,EAAE01tB,SAE1B,IAAKqG,GAAiBC,IAAkBD,IAAkBC,EACxD,OAAO,CAEV,CAED,IACGjnuB,EAAeqB,KAAK4J,EAAGlF,KACvB0/I,EAAQrlJ,EAAE2F,GAAMkF,EAAElF,GAAMA,EAAKA,EAAK3F,EAAG6K,EAAGO,GAEzC,OAAO,CAEV,CAED,OAAO,CACR,CAKM,IAAM07tB,EAA0BvC,EAAiBkB,GCrDxC,SAAAC,EAAgB1luB,EAAW6K,GACzC,OAAO7K,EAAEyJ,SAAWoB,EAAEpB,QAAUzJ,EAAEo+O,QAAUvzO,EAAEuzO,KAChD,CCHM,SAAUunf,EACd3luB,EACA6K,EACAw6I,EACAj6I,GAEA,IAAI66tB,EAAejmuB,EAAE4wD,OAAS/lD,EAAE+lD,KAEhC,IAAKq1qB,EACH,OAAO,EAGT,IAAKjmuB,EAAE4wD,KACL,OAAO,EAST,IAAMs1qB,EAAuC,CAAC,EAyB9C,OAvBAlmuB,EAAEgC,SAAQ,SAACokuB,EAAQC,GACjB,GAAKJ,EAAL,CAIA,IAAIK,GAAW,EACXS,EAAa,EAEjBl8tB,EAAE7I,SAAQ,SAACwkuB,EAAQC,GAEdH,GACAJ,EAAea,MACfT,EAAWjhlB,EAAQ+glB,EAAQI,EAAQH,EAAMI,EAAMzmuB,EAAG6K,EAAGO,MAEtD86tB,EAAea,IAAc,GAG/BA,GACD,IAEDd,EAAeK,CAjBd,CAkBF,IAEML,CACR,CAKM,IAAMe,EAAuBzC,EAAiBoB,GC1C/CsB,EAA4DvnuB,OAAOwnuB,OACvE,CACEvgV,eAAc,EACd4+U,cAAa,EACbC,aAAY,EACZC,gBAAe,EACfC,gBAAe,EACfC,aAAY,EACZC,oBAAqB3B,IAGnBkD,EACJznuB,OAAOwnuB,OAAO,CACZvgV,eAAgBq/U,EAChBT,cAAa,EACbC,aAAckB,EACdjB,gBAAiBqB,EACjBpB,gBAAe,EACfC,aAAcqB,EACdpB,oBAAqB3B,IAGnBmD,EAAc9B,EAAiB2B,GAKrB,SAAAI,EAAgBrnuB,EAAM6K,GACpC,OAAOu8tB,EAAYpnuB,EAAG6K,OAAGzE,EAC1B,CAED,IAAMkhuB,EAAiBhC,EACrBx+kB,EAAMmglB,EAAgB,CAAErB,oBAAqB,WAAM,OAAAhB,CAAkB,KAMvD,SAAAtphB,EAAmBt7M,EAAM6K,GACvC,OAAOy8tB,EAAetnuB,EAAG6K,OAAGzE,EAC7B,CAED,IAAMmhuB,EAAsBjC,EAAiB6B,GAK7B,SAAAK,EAAwBxnuB,EAAM6K,GAC5C,OAAO08tB,EAAoBvnuB,EAAG6K,EAAG,IAAI4gO,QACtC,CAED,IAAMg8f,EAAyBnC,EAC7Bx+kB,EAAMqglB,EAAyB,CAC7BvB,oBAAqB,WAAM,OAAAhB,CAAkB,KAOjC,SAAA8C,EAA2B1nuB,EAAM6K,GAC/C,OAAO48tB,EAAuBznuB,EAAG6K,EAAG,IAAI4gO,QACzC,CAUK,SAAUk8f,EACdC,GAEA,OAAOtC,EACLx+kB,EAAMmglB,EAAgBW,EAAqBX,IAE9C,CAYK,SAAUY,EAEdD,GACA,IAAM1D,EAAaoB,EACjBx+kB,EACEqglB,EACAS,EAAqBT,KAIzB,OAAQ,SAACnnuB,EAAQ6K,EAAQO,GACvB,YADuB,IAAAA,IAAAA,EAAgB,IAAAqgO,SACvCy4f,EAAWlkuB,EAAG6K,EAAGO,EAAK,CAC1B,+OCtHAmoB,EAAOw0qB,QAKP,SAAerhlB,EAAUohnB,GACvB,IAIIC,EACAliqB,EACA34D,EANApN,EAAQ4mH,GAAY,GACpBviH,EAAO2juB,GAAkB,MACzBjhuB,EAAQ,CAAC,EACTu9C,EAAQ,EAKZ,KAAOA,EAAQtkD,EAAMkE,QACnBiL,EAAOkxB,UAAYikB,EACnBl3C,EAAQ+B,EAAOsR,KAAKzgB,IACpBiouB,EAAWjouB,EAAMiF,MAAMq/C,EAAOl3C,EAAQA,EAAMvB,MAAQ7L,EAAMkE,WAGnD6hE,EAEmB,MAAbA,EACTh/D,EAAM0hB,GAAKw/sB,EACFlhuB,EAAM2gB,UACf3gB,EAAM2gB,UAAU7jB,KAAKokuB,GAErBlhuB,EAAM2gB,UAAY,CAACugtB,GANnB5juB,EAAO4juB,EAST3jrB,GAAS2jrB,EAAS/juB,QAGhBkJ,IACF24D,EAAW34D,EAAM,GACjBk3C,KAIJ,MAAO,CAACrjD,KAAM,UAAWqqH,QAASjnH,EAAMsnB,WAAY5kB,EAAOqF,SAAU,GACtE,EAtCD,IAAI+C,EAAS,2CCFb,IAAIkkB,EAAOm8qB,EAAQ,OACfp7kB,EAAYo7kB,EAAQ,OACpB04B,EAAgB14B,EAAQ,OACxBvwd,EAASuwd,EAAAA,OAAAA,EACT24B,EAAS34B,EAAAA,OAAAA,EAEb/7qB,EAAOw0qB,QAIP,SAAiB9zgB,EAAQ6ziB,EAAgBh8tB,GACvC,IAAI09S,EAAS19S,EA0Lf,SAAyBjK,GACvB,IAGI/B,EAHAkE,EAASnC,EAAOmC,OAChB2H,GAAS,EACT5D,EAAS,CAAC,EAGd,OAAS4D,EAAQ3H,GAEf+D,GADAjI,EAAQ+B,EAAO8J,IACF4D,eAAiBzP,EAGhC,OAAOiI,CACR,CAtM8BmguB,CAAgBp8tB,GAAiB,KAE9D,OAGA,SAAW46G,EAAUj7F,GACnB,IAGIu3D,EAHAzzC,EAAOy4rB,EAActhnB,EAAUohnB,GAC/B57tB,EAAW5D,MAAMhJ,UAAUyF,MAAM9D,KAAKgF,UAAW,GACjD9B,EAAOorC,EAAK67E,QAAQ77G,cAGxBggC,EAAK67E,QAAUo+L,GAAU2+a,EAAIlnuB,KAAKuoT,EAAQrlT,GAAQqlT,EAAOrlT,GAAQA,EAE7DsnB,GAAc28sB,EAAW38sB,EAAY8jB,KACvCrjC,EAASqgI,QAAQ9gH,GACjBA,EAAa,MAGf,GAAIA,EACF,IAAKu3D,KAAYv3D,EACf48sB,EAAY94rB,EAAK9jB,WAAYu3D,EAAUv3D,EAAWu3D,IAItDslpB,EAAS/4rB,EAAKrjC,SAAUA,GAEH,aAAjBqjC,EAAK67E,UACP77E,EAAK+5D,QAAU,CAACvoG,KAAM,OAAQmL,SAAUqjC,EAAKrjC,UAC7CqjC,EAAKrjC,SAAW,IAGlB,OAAOqjC,CACR,EAED,SAAS84rB,EAAY58sB,EAAY9lB,EAAK7F,GACpC,IAAI8F,EACAo9E,EACAj7E,EAGU,OAAVjI,QAA4BsG,IAAVtG,GAAuBA,IAAUA,IAKvDkjF,GADAp9E,EAAOutB,EAAK8gK,EAAQtuL,IACJq9E,SAIM,kBAHtBj7E,EAASjI,KAIH8F,EAAK2iuB,eACPxguB,EAASg3O,EAAOh3O,GACPnC,EAAK4iuB,eACdzguB,EAASkguB,EAAOlguB,GACPnC,EAAK6iuB,wBACd1guB,EAASg3O,EAAOkpf,EAAOlguB,GAAQgH,KAAK,QAKvB,UAAbi0E,GAAyC,kBAAVljF,IACjCiI,EAkHN,SAAejI,GACb,IACI6F,EADAoC,EAAS,GAGb,IAAKpC,KAAO7F,EACViI,EAAOpE,KAAK,CAACgC,EAAK7F,EAAM6F,IAAMoJ,KAAK,OAGrC,OAAOhH,EAAOgH,KAAK,KACpB,CA3Hc0zB,CAAM16B,IAIA,cAAbi7E,GAA4Bv3D,EAAWjE,YACzCzf,EAAS0jB,EAAWjE,UAAUvb,OAAOlE,IAGvC0jB,EAAWu3D,GAiEf,SAAyBp9E,EAAMzB,EAAMrE,GACnC,IAAI6L,EACA3H,EACA+D,EAEJ,GAAqB,kBAAVjI,KAAwB,WAAYA,GAC7C,OAAO4ouB,EAAe9iuB,EAAMzB,EAAMrE,GAGpCkE,EAASlE,EAAMkE,OACf2H,GAAS,EACT5D,EAAS,GAET,OAAS4D,EAAQ3H,GACf+D,EAAO4D,GAAS+8tB,EAAe9iuB,EAAMzB,EAAMrE,EAAM6L,IAGnD,OAAO5D,CACR,CAnF0B4guB,CAAgB/iuB,EAAMo9E,EAAUj7E,GACxD,CACF,EA1ED,IAAIoguB,EAAM,CAAC,EAAEvouB,eA4Eb,SAASwouB,EAAWtouB,EAAOyvC,GACzB,MACmB,kBAAVzvC,GACP,WAAYA,GAKhB,SAAgBsrH,EAAStrH,GACvB,IAAIiB,EAAOjB,EAAMiB,KAEjB,GAAgB,UAAZqqH,IAAwBrqH,GAAwB,kBAATA,EACzC,OAAO,EAGT,GAA8B,kBAAnBjB,EAAMoM,UAAyB,WAAYpM,EAAMoM,SAC1D,OAAO,EAKT,GAFAnL,EAAOA,EAAKwO,cAEI,WAAZ67G,EACF,MACW,SAATrqH,GACS,WAATA,GACS,UAATA,GACS,WAATA,EAIJ,MAAO,UAAWjB,CACnB,CA3BGqhO,CAAO5xL,EAAK67E,QAAStrH,EAExB,CA2BD,SAASwouB,EAASvhmB,EAAOjnI,GACvB,IAAI6L,EACA3H,EAEJ,GAAqB,kBAAVlE,GAAuC,kBAAVA,EAKxC,GAAqB,kBAAVA,GAAsB,WAAYA,EAI3C,IAHA6L,GAAS,EACT3H,EAASlE,EAAMkE,SAEN2H,EAAQ3H,GACfskuB,EAASvhmB,EAAOjnI,EAAM6L,QAL1B,CAWA,GAAqB,kBAAV7L,KAAwB,SAAUA,GAC3C,MAAM,IAAI0C,MAAM,yCAA2C1C,EAAQ,KAGrEinI,EAAMpjI,KAAK7D,EANV,MAbCinI,EAAMpjI,KAAK,CAAC5C,KAAM,OAAQjB,MAAO2G,OAAO3G,IAoB3C,CAwBD,SAAS4ouB,EAAe9iuB,EAAMzB,EAAMrE,GAClC,IAAIiI,EAASjI,EAgBb,OAdI8F,EAAK04B,QAAU14B,EAAKgjuB,eACjB7kuB,MAAMgE,IAAsB,KAAXA,IACpBA,EAASrB,OAAOqB,KAETnC,EAAKgusB,SAAWhusB,EAAKijuB,qBAGV,kBAAX9guB,GACK,KAAXA,GAAiBmsH,EAAUp0H,KAAWo0H,EAAU/vH,KAEjD4D,GAAS,IAINA,CACR,sCCxLD,IAAIksL,EAASq7gB,EAAQ,OAGjB14f,EAFU04f,EAAQ,KAEXD,CAAQp7gB,EAAQ,OAC3B2iB,EAAK3yM,YAAc,OAEnBsvB,EAAOw0qB,QAAUnxf,sCCNjBrjL,EAAOw0qB,QAAU,EAAjBx0qB,4BCDAw0qB,EAAQ7iqB,KAAO,SAAU64O,EAAQ3vN,EAAQ06qB,EAAMC,EAAM/c,GACnD,IAAIzstB,EAAGuwB,EACHk5sB,EAAiB,EAAThd,EAAc+c,EAAO,EAC7BE,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTppuB,EAAI+ouB,EAAQ9c,EAAS,EAAK,EAC1BtqtB,EAAIonuB,GAAQ,EAAI,EAChB1nuB,EAAI28Q,EAAO3vN,EAASruD,GAOxB,IALAA,GAAK2B,EAELnC,EAAI6B,GAAM,IAAO+nuB,GAAU,EAC3B/nuB,KAAQ+nuB,EACRA,GAASH,EACFG,EAAQ,EAAG5puB,EAAS,IAAJA,EAAWw+Q,EAAO3vN,EAASruD,GAAIA,GAAK2B,EAAGynuB,GAAS,GAKvE,IAHAr5sB,EAAIvwB,GAAM,IAAO4puB,GAAU,EAC3B5puB,KAAQ4puB,EACRA,GAASJ,EACFI,EAAQ,EAAGr5sB,EAAS,IAAJA,EAAWiuP,EAAO3vN,EAASruD,GAAIA,GAAK2B,EAAGynuB,GAAS,GAEvE,GAAU,IAAN5puB,EACFA,EAAI,EAAI2puB,MACH,IAAI3puB,IAAM0puB,EACf,OAAOn5sB,EAAIwnB,IAAsBwM,KAAd1iD,GAAK,EAAI,GAE5B0uB,GAAQnH,KAAKy+K,IAAI,EAAG2hiB,GACpBxpuB,GAAQ2puB,CACT,CACD,OAAQ9nuB,GAAK,EAAI,GAAK0uB,EAAInH,KAAKy+K,IAAI,EAAG7nM,EAAIwpuB,EAC3C,EAEDhhC,EAAQ/pb,MAAQ,SAAUD,EAAQj+Q,EAAOsuD,EAAQ06qB,EAAMC,EAAM/c,GAC3D,IAAIzstB,EAAGuwB,EAAG7vB,EACN+ouB,EAAiB,EAAThd,EAAc+c,EAAO,EAC7BE,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBG,EAAe,KAATL,EAAcpgtB,KAAKy+K,IAAI,GAAI,IAAMz+K,KAAKy+K,IAAI,GAAI,IAAM,EAC1DrnM,EAAI+ouB,EAAO,EAAK9c,EAAS,EACzBtqtB,EAAIonuB,EAAO,GAAK,EAChB1nuB,EAAItB,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQ6oB,KAAKgW,IAAI7+B,GAEbiE,MAAMjE,IAAUA,IAAUgkD,KAC5Bh0B,EAAI/rB,MAAMjE,GAAS,EAAI,EACvBP,EAAI0puB,IAEJ1puB,EAAIopB,KAAKC,MAAMD,KAAKpG,IAAIziB,GAAS6oB,KAAK03P,KAClCvgR,GAASG,EAAI0oB,KAAKy+K,IAAI,GAAI7nM,IAAM,IAClCA,IACAU,GAAK,IAGLH,GADEP,EAAI2puB,GAAS,EACNE,EAAKnpuB,EAELmpuB,EAAKzgtB,KAAKy+K,IAAI,EAAG,EAAI8hiB,IAEpBjpuB,GAAK,IACfV,IACAU,GAAK,GAGHV,EAAI2puB,GAASD,GACfn5sB,EAAI,EACJvwB,EAAI0puB,GACK1puB,EAAI2puB,GAAS,GACtBp5sB,GAAMhwB,EAAQG,EAAK,GAAK0oB,KAAKy+K,IAAI,EAAG2hiB,GACpCxpuB,GAAQ2puB,IAERp5sB,EAAIhwB,EAAQ6oB,KAAKy+K,IAAI,EAAG8hiB,EAAQ,GAAKvgtB,KAAKy+K,IAAI,EAAG2hiB,GACjDxpuB,EAAI,IAIDwpuB,GAAQ,EAAGhrd,EAAO3vN,EAASruD,GAAS,IAAJ+vB,EAAU/vB,GAAK2B,EAAGouB,GAAK,IAAKi5sB,GAAQ,GAI3E,IAFAxpuB,EAAKA,GAAKwpuB,EAAQj5sB,EAClBk5sB,GAAQD,EACDC,EAAO,EAAGjrd,EAAO3vN,EAASruD,GAAS,IAAJR,EAAUQ,GAAK2B,EAAGnC,GAAK,IAAKypuB,GAAQ,GAE1Ejrd,EAAO3vN,EAASruD,EAAI2B,IAAU,IAAJN,CAC3B,oCClFD,SAASiouB,EAAc/ztB,GAGnB,MAAsB,kBAARA,GAAsB,aAAcA,EAE9CA,EADA5V,OAAOJ,UAAUmJ,SAASxH,KAAKqU,GAAKvQ,MAAM,GAAI,EAErD,CAPDrF,OAAOG,eAAekosB,EAAS,aAAc,CAAEjosB,OAAO,IAQtD,IAAIs+Y,EAAkC,kBAAZ14X,UAAwBA,EAClD,SAAS1b,EAAUssX,EAAWpsX,GAC1B,IAAKosX,EAAW,CAEZ,GAAI8nB,EACA,MAAM,IAAI57Y,MAAM,oBAEpB,MAAM,IAAIA,MAAM0H,IACnB,CACJ,CACD69rB,EAAQ/9rB,UAAYA,EACpB,IAAIpK,EAAiBF,OAAOJ,UAAUM,eAClCyyB,EAAS/pB,MAAMhJ,UAAU+yB,OACzB5pB,EAAW/I,OAAOJ,UAAUmJ,SAChC,SAAS1H,EAAKuU,GACV,OAAO7M,EAASxH,KAAKqU,GAAKvQ,MAAM,GAAI,EACvC,CACD,IAAIyE,EAAS9J,OAAO8J,QAAsC,SAAU5C,EAAQ6C,GAMxE,OALA0ipB,EAAW1ipB,GAAQzH,SAAQ,SAAU2D,GAC7B/F,EAAeqB,KAAKwI,EAAQ9D,KAC5BiB,EAAOjB,GAAO8D,EAAO9D,GAE5B,IACMiB,CACV,EACGulpB,EAAqD,oBAAjCzspB,OAAO8V,sBACzB,SAAUF,GAAO,OAAO5V,OAAOgF,KAAK4Q,GAAKrJ,OAAOvM,OAAO8V,sBAAsBF,GAAQ,EAErF,SAAUA,GAAO,OAAO5V,OAAOgF,KAAK4Q,EAAO,EACjD,SAASua,EAAKD,GACV,OAAOtnB,MAAMQ,QAAQ8mB,GACfpmB,EAAOomB,EAAOvwB,YAAYuwB,EAAO5rB,QAAS4rB,GACxB,QAAjB7uB,EAAK6uB,GACF,IAAIb,IAAIa,GACU,QAAjB7uB,EAAK6uB,GACF,IAAIsmC,IAAItmC,GACPA,GAA4B,kBAAXA,EACdpmB,EAAO9J,OAAOiB,OAAOjB,OAAOiC,eAAeiuB,IAAUA,GAErDA,CACrB,CACD,IAAIhvB,EAAyB,WACzB,SAASA,IACLa,KAAKk5J,SAAWnxJ,EAAO,CAAC,EAAG8/tB,GAC3B7nuB,KAAKgvJ,OAAShvJ,KAAKgvJ,OAAOtpJ,KAAK1F,MAE/BA,KAAKgvJ,OAAOgwB,OAASh/K,KAAKg/K,OAASh/K,KAAKg/K,OAAOt5K,KAAK1F,MACpDA,KAAKgvJ,OAAO84kB,SAAW,SAAU15rB,EAAGxuC,GAAK,OAAOwuC,IAAMxuC,CAAI,EAC1DI,KAAKgvJ,OAAO+4kB,WAAa,WAAc,OAAO,IAAI5ouB,GAAU6vJ,MAAS,CACxE,CA0DD,OAzDA/wJ,OAAOG,eAAee,EAAQtB,UAAW,WAAY,CACjDsnB,IAAK,WACD,OAAOnlB,KAAKgvJ,OAAO84kB,QACtB,EACDt6sB,IAAK,SAAUnvB,GACX2B,KAAKgvJ,OAAO84kB,SAAWzpuB,CAC1B,EACDQ,YAAY,EACZC,cAAc,IAElBK,EAAQtB,UAAUmhL,OAAS,SAAUgpjB,EAAW3juB,GAC5CrE,KAAKk5J,SAAS8ukB,GAAa3juB,CAC9B,EACDlF,EAAQtB,UAAUmxJ,OAAS,SAAU7gI,EAAQ85sB,GACzC,IAAIzttB,EAAQxa,KACR0xL,EAAyB,oBAAVu2iB,EAAwB,CAAEC,OAAQD,GAAUA,EACzDphuB,MAAMQ,QAAQ8mB,IAAWtnB,MAAMQ,QAAQqqL,IACzCnpL,GAAW1B,MAAMQ,QAAQqqL,IAAO,WAAc,MAAO,4LAEU,IAEnEnpL,EAA0B,kBAATmpL,GAA8B,OAATA,GAAe,WAAc,MAAO,4JAE5CzzL,OAAOgF,KAAKuX,EAAM0+I,UAAU5rJ,KAAK,MAAQ,GAAO,IAC9E,IAAI66tB,EAAah6sB,EA+BjB,OA9BAu8nB,EAAWh5d,GAAMnxL,SAAQ,SAAU2D,GAC/B,GAAI/F,EAAeqB,KAAKgb,EAAM0+I,SAAUh1J,GAAM,CAC1C,IAAIkkuB,EAAsBj6sB,IAAWg6sB,EACrCA,EAAa3ttB,EAAM0+I,SAASh1J,GAAKwtL,EAAKxtL,GAAMikuB,EAAYz2iB,EAAMvjK,GAC1Di6sB,GAAuB5ttB,EAAMsttB,SAASK,EAAYh6sB,KAClDg6sB,EAAah6sB,EAEpB,KACI,CACD,IAAIk6sB,EAAmC,QAAjB/ouB,EAAK6uB,GACrB3T,EAAMw0I,OAAO7gI,EAAOhJ,IAAIjhB,GAAMwtL,EAAKxtL,IACnCsW,EAAMw0I,OAAO7gI,EAAOjqB,GAAMwtL,EAAKxtL,IACjCokuB,EAAuC,QAArBhpuB,EAAK6ouB,GACrBA,EAAWhjtB,IAAIjhB,GACfikuB,EAAWjkuB,GACZsW,EAAMsttB,SAASO,EAAiBC,KACH,qBAApBD,GACFlquB,EAAeqB,KAAK2uB,EAAQjqB,MAChCikuB,IAAeh6sB,IACfg6sB,EAAa/5sB,EAAKD,IAEG,QAArB7uB,EAAK6ouB,GACLA,EAAW36sB,IAAItpB,EAAKmkuB,GAGpBF,EAAWjkuB,GAAOmkuB,EAG7B,CACJ,IACMF,CACV,EACMhpuB,CACV,CAnE4B,GAoE7BmnsB,EAAQnnsB,QAAUA,EAClB,IAAI0ouB,EAAkB,CAClBU,MAAO,SAAUlquB,EAAO8puB,EAAYz2iB,GAEhC,OADA82iB,EAAwBL,EAAYz2iB,EAAM,SACnCrzL,EAAMkE,OAAS4luB,EAAW39tB,OAAOnM,GAAS8puB,CACpD,EACDM,SAAU,SAAUpquB,EAAO8puB,EAAYz2iB,GAEnC,OADA82iB,EAAwBL,EAAYz2iB,EAAM,YACnCrzL,EAAMkE,OAASlE,EAAMmM,OAAO29tB,GAAcA,CACpD,EACDxxU,QAAS,SAAUt4Z,EAAO8puB,EAAYz2iB,EAAMg3iB,GASxC,OA2FR,SAA0BrquB,EAAOqzL,GAC7BnpL,EAAU1B,MAAMQ,QAAQhJ,IAAQ,WAAc,MAAO,+CAAiDupuB,EAAcvpuB,EAAS,IAC7HsquB,EAAgBj3iB,EAAKilO,QACxB,CAtGOiyU,CAAiBT,EAAYz2iB,GAC7BrzL,EAAMkC,SAAQ,SAAUgE,GACpBokuB,EAAgBpkuB,GACZ4juB,IAAeO,GAAkBnkuB,EAAKhC,SACtC4luB,EAAa/5sB,EAAKs6sB,IAEtB93sB,EAAOnsB,MAAM0juB,EAAY5juB,EAC5B,IACM4juB,CACV,EACDU,KAAM,SAAUxquB,EAAOyquB,EAAap3iB,GAEhC,OAkGR,SAAsBA,GAClBnpL,EAAuC,IAA7BtK,OAAOgF,KAAKyuL,GAAMnvL,QAAc,WAAc,MAAO,sDAAyD,GAC3H,CArGOwmuB,CAAar3iB,GACNrzL,CACV,EACD2quB,QAAS,SAAUC,EAASd,GACxBe,EAAmBD,EAAS,WAC5B,IAAIE,EAAiBF,EAAQ1muB,OAAS6rB,EAAK+5sB,GAAcA,EAIzD,OAHAc,EAAQ1ouB,SAAQ,SAAU4E,GACtBgkuB,EAAehkuB,IAAWgjuB,EAAWhjuB,EACxC,IACMgkuB,CACV,EACDC,OAAQ,SAAU/quB,EAAO8puB,EAAYkB,EAAOX,GAUxC,OATAQ,EAAmB7quB,EAAO,UAC1BA,EAAMkC,SAAQ,SAAU2D,GAChBjG,OAAOE,eAAeqB,KAAK2ouB,EAAYjkuB,KACnCikuB,IAAeO,IACfP,EAAa/5sB,EAAKs6sB,WAEfP,EAAWjkuB,GAEzB,IACMikuB,CACV,EACDmB,KAAM,SAAUlpuB,EAAQ+nuB,EAAYkB,EAAOX,GAoBvC,OAnBAa,EAAkBpB,EAAY,QAC9Be,EAAmB9ouB,EAAQ,QACF,QAArBd,EAAK6ouB,GACL/nuB,EAAOG,SAAQ,SAAUof,GACrB,IAAIzb,EAAMyb,EAAG,GAAIthB,EAAQshB,EAAG,GACxBwotB,IAAeO,GAAkBP,EAAWhjtB,IAAIjhB,KAAS7F,IACzD8puB,EAAa/5sB,EAAKs6sB,IAEtBP,EAAW36sB,IAAItpB,EAAK7F,EACvB,IAGD+B,EAAOG,SAAQ,SAAUlC,GACjB8puB,IAAeO,GAAmBP,EAAW70tB,IAAIjV,KACjD8puB,EAAa/5sB,EAAKs6sB,IAEtBP,EAAW/iqB,IAAI/mE,EAClB,IAEE8puB,CACV,EACDqB,QAAS,SAAUnruB,EAAO8puB,EAAYkB,EAAOX,GASzC,OARAa,EAAkBpB,EAAY,WAC9Be,EAAmB7quB,EAAO,WAC1BA,EAAMkC,SAAQ,SAAU2D,GAChBikuB,IAAeO,GAAkBP,EAAW70tB,IAAIpP,KAChDikuB,EAAa/5sB,EAAKs6sB,IAEtBP,EAAW16sB,OAAOvpB,EACrB,IACMikuB,CACV,EACDsB,OAAQ,SAAUpruB,EAAO8puB,EAAYkB,EAAOX,GA8ChD,IAAwBvjuB,EAAQukuB,EApCxB,OAoCgBvkuB,EA7CDgjuB,EA8CnB5/tB,GAD4BmhuB,EA7CGrruB,IA8Ca,kBAAdqruB,GAAwB,WAAc,MAAO,yDAA2D9B,EAAc8B,EAAa,IACjKnhuB,EAAUpD,GAA4B,kBAAXA,GAAqB,WAAc,MAAO,2DAA6DyiuB,EAAcziuB,EAAU,IA9CtJulpB,EAAWrspB,GAAOkC,SAAQ,SAAU2D,GAC5B7F,EAAM6F,KAASikuB,EAAWjkuB,KACtBikuB,IAAeO,IACfP,EAAa/5sB,EAAKs6sB,IAEtBP,EAAWjkuB,GAAO7F,EAAM6F,GAE/B,IACMikuB,CACV,EACDD,OAAQ,SAAU7puB,EAAOgrG,GA4B7B,IAAwBhlG,EA1BhB,OA2BJkE,EAAwB,oBADJlE,EA3BDhG,IA4BiB,WAAc,MAAO,2DAA6DupuB,EAAcvjuB,GAAM,GAAM,IA3BrIhG,EAAMgrG,EAChB,GAEDsgoB,EAAiB,IAAIxquB,EAOzB,SAASqpuB,EAAwBnquB,EAAOqzL,EAAMykB,GAC1C5tM,EAAU1B,MAAMQ,QAAQhJ,IAAQ,WAAc,MAAO,gCAAkCupuB,EAAczxhB,GAAW,wBAA0ByxhB,EAAcvpuB,GAAS,GAAM,IACvK6quB,EAAmBx3iB,EAAKykB,GAAUA,EACrC,CACD,SAAS+yhB,EAAmBx3iB,EAAMykB,GAC9B5tM,EAAU1B,MAAMQ,QAAQqqL,IAAO,WAAc,MAAO,8BAAgCk2iB,EAAczxhB,GAAW,wBAA0ByxhB,EAAcl2iB,GAAjG,sDACO,GAC9D,CAKD,SAASi3iB,EAAgBtquB,GACrBkK,EAAU1B,MAAMQ,QAAQhJ,IAAQ,WAAc,MAAO,oEAAsEupuB,EAAcvpuB,GAApF,uDACO,GAC/D,CAWD,SAASkruB,EAAkBpkuB,EAAQgxM,GAC/B,IAAIyzhB,EAAetquB,EAAK6F,GACxBoD,EAA2B,QAAjBqhuB,GAA2C,QAAjBA,GAAwB,WAAc,MAAO,aAAehC,EAAczxhB,GAAW,6CAA+CyxhB,EAAcgC,EAAgB,GACzM,CAnCDtjC,EAAQwhC,SAAW6B,EAAe36kB,OAAO84kB,SACzCxhC,EAAQtnhB,OAAS2qjB,EAAe3qjB,OAChCsnhB,EAAAA,QAAkBqjC,EAAe36kB,OAEjCs3iB,EAAAA,QAAAA,QAA0Bx0qB,EAAOw0qB,QAAUv+rB,EAAOu+rB,EAAQ5rqB,QAAS4rqB,mCC1KnEx0qB,EAAOw0qB,QA5BS,SAASzxU,EAAWt3V,EAAQh/B,EAAG6K,EAAG5K,EAAGyB,EAAGnC,EAAG4B,GAOzD,IAAKm1X,EAAW,CACd,IAAIzwX,EACJ,QAAeO,IAAX44B,EACFn5B,EAAQ,IAAIrD,MACV,qIAGG,CACL,IAAIwD,EAAO,CAAChG,EAAG6K,EAAG5K,EAAGyB,EAAGnC,EAAG4B,GACvBk9Y,EAAW,GACfx4Y,EAAQ,IAAIrD,MACVw8B,EAAOtxB,QAAQ,OAAO,WAAa,OAAO1H,EAAKq4Y,IAAc,MAEzDl6Y,KAAO,qBACd,CAGD,MADA0B,EAAMy4Y,YAAc,EACdz4Y,CACP,CACF,kCC5CD0tB,EAAOw0qB,QAIP,SAAsBx8oB,GACpB,IAAI3vC,EAA4B,kBAAd2vC,EAAyBA,EAAU2zI,WAAW,GAAK3zI,EAErE,OACG3vC,GAAQ,IAAMA,GAAQ,KACtBA,GAAQ,IAAMA,GAAQ,EAE1B,qCCXD,IAAI0vtB,EAAeh8B,EAAQ,OACvBn3pB,EAAUm3pB,EAAQ,OAEtB/7qB,EAAOw0qB,QAIP,SAAwBx8oB,GACtB,OAAO+/qB,EAAa//qB,IAAcpT,EAAQoT,EAC3C,kCCTDh4B,EAAOw0qB,QAIP,SAAiBx8oB,GACf,IAAI3vC,EAA4B,kBAAd2vC,EAAyBA,EAAU2zI,WAAW,GAAK3zI,EAErE,OAAO3vC,GAAQ,IAAMA,GAAQ,EAC9B,kCCRD2X,EAAOw0qB,QAIP,SAAqBx8oB,GACnB,IAAI3vC,EAA4B,kBAAd2vC,EAAyBA,EAAU2zI,WAAW,GAAK3zI,EAErE,OACG3vC,GAAQ,IAAcA,GAAQ,KAC9BA,GAAQ,IAAcA,GAAQ,IAC9BA,GAAQ,IAAcA,GAAQ,EAElC,qBC+BD,SAAS2vtB,EAAUlrrB,EAAQvW,GACzBuW,EAAO4kP,OAAS,WACdxjS,KAAK2jS,QAAU3jS,KAAKwjS,OAAS,KAC7Bn7P,EAAG,KAAMuW,EACV,EACDA,EAAO+kP,QAAU,WAGf3jS,KAAK2jS,QAAU3jS,KAAKwjS,OAAS,KAC7Bn7P,EAAG,IAAItnC,MAAM,kBAAoBf,KAAKgmB,KAAM44B,EAC7C,CACF,CAED,SAASmrrB,EAASnrrB,EAAQvW,GACxBuW,EAAOlQ,mBAAqB,WACH,YAAnB1uC,KAAK2uC,YAA+C,UAAnB3uC,KAAK2uC,aAC1C3uC,KAAK0uC,mBAAqB,KAC1BrG,EAAG,KAAMuW,GACV,CACF,CA/DD9sB,EAAOw0qB,QAAU,SAAetgrB,EAAKge,EAAMqE,GACzC,IAAIk3J,EAAOhuJ,SAASguJ,MAAQhuJ,SAASkhb,qBAAqB,QAAQ,GAC9D7za,EAASrN,SAASx+B,cAAc,UAEhB,oBAATixB,IACTqE,EAAKrE,EACLA,EAAO,CAAC,GAGVA,EAAOA,GAAQ,CAAC,EAChBqE,EAAKA,GAAM,WAAa,EAExBuW,EAAOt/C,KAAO0kC,EAAK1kC,MAAQ,kBAC3Bs/C,EAAOorrB,QAAUhmsB,EAAKgmsB,SAAW,OACjCprrB,EAAO77C,QAAQ,UAAWihC,MAASA,EAAKjhC,MACxC67C,EAAO54B,IAAMA,EAETge,EAAK4uJ,OAqBX,SAAuBh0I,EAAQg0I,GAC7B,IAAK,IAAIp3F,KAAQo3F,EACfh0I,EAAO0vB,aAAaktB,EAAMo3F,EAAMp3F,GAEnC,CAxBGZ,CAAch8C,EAAQ5a,EAAK4uJ,OAGzB5uJ,EAAKyF,OACPmV,EAAOnV,KAAO,GAAKzF,EAAKyF,OAGd,WAAYmV,EAASkrrB,EAAWC,GACtCnrrB,EAAQvW,GAKTuW,EAAO4kP,QACVsmc,EAASlrrB,EAAQvW,GAGnBk3J,EAAKljI,YAAYzd,EAClB,yBC3BD,IAiFIqrrB,EA05CAC,aA1+CJ,SAAWA,GACPA,EAAOC,gBAAkB,WACrB,MAA4B,kBAAZlmtB,SAAsD,kBAArBA,QAAQ4pB,UAA4D,kBAA1B5pB,QAAQ4pB,SAASC,IAC/G,EACDo8rB,EAAOE,0BAA4B,WAC/B,OAAOF,EAAOC,mBAAqBt8B,EAAAA,EAAAA,EAAAA,KAAiB/7qB,CACvD,EACDo4sB,EAAOG,kBAAoB,WACvB,MAA+D,kBAAnBv4sB,EAAOw0qB,OACtD,EACD4jC,EAAOI,mBAAqB,WACxB,MAAyB,qBAAXh5tB,QAA0C,kBAAThN,MAAsD,oBAA1BA,KAAKwhE,kBAAyD,oBAAfxhE,KAAKw5E,KAClI,EACDospB,EAAOK,0BAA4B,WAC/B,OAAOL,EAAOC,mBAA6C,oBAAjBlmtB,QAAQyS,IACrD,EACDwzsB,EAAOM,oBAAsB,WACzB,MAAsB,kBAAXl5tB,QAAkD,kBAApBA,OAAO5C,UAA6C,kBAAb6iC,WAE1C,UAA/BA,SAAS7iC,SAASqnsB,UAAuD,WAA/BxkqB,SAAS7iC,SAASqnsB,SACtE,EACDm0B,EAAOO,oBAAsB,WACzB,MAAsB,oBAAXC,SAAyBR,EAAOM,yBAEvCN,EAAOC,qBAEPh8tB,WAAaA,UAAUuqD,WAAavqD,UAAUuqD,UAAUr5C,QAAQ,gBAAkB,GAGzF,EACD6qtB,EAAOpptB,IAAM,SAAUrY,EAASkiuB,QACH,IAArBA,IAA+BA,GAAmB,GAC/B,kBAAZ1+sB,UAEXA,QAAQnL,IAAIrY,GACRkiuB,GAAuC,iBAAZp5rB,WAC3BA,SAAS1pB,KAAKu0C,WAAa3zD,EAAU,SAC5C,EACDyhuB,EAAOU,mBAAqB,SAAU1hJ,EAAWr1gB,GAE7C,QADc,IAAVA,IAAoBA,EAAQ,uBACf,MAAbq1gB,EACA,OAAOr1gB,EAEX,GADAA,GAAS,KACwB,kBAAtBq1gB,EAAUrhf,QAAsB,CACvC,GAAIqioB,EAAOC,kBACP,OAAOt2pB,EAAQq1gB,EAAUrhf,QAAQl5E,MAGjC,IAAIk8sB,EAAgBh8tB,KAAKC,UAAUo6kB,EAAUrhf,SAC7C,MAAsB,OAAlBgjoB,EACOh3pB,EAAQg3pB,EAERh3pB,EAAQq1gB,EAAUrhf,OAEpC,CACI,MAAiC,kBAAtBqhf,EAAUrhf,QACfh0B,EAAQq1gB,EAAUrhf,QAGlBh0B,EAAQq1gB,CAEtB,EACDghJ,EAAOY,qCAAuC,SAAU5hJ,EAAWr1gB,QACjD,IAAVA,IAAoBA,EAAQ,uBAChCq2pB,EAAOpptB,IAAIoptB,EAAOU,mBAAmB1hJ,EAAWr1gB,GACnD,EACDq2pB,EAAOa,gBAAkB,WACrB,MAAsB,kBAAX99rB,EAAAA,EACAA,EAAAA,EACgB,kBAAX37B,OACLA,OACc,kBAAThN,KACLA,KAEA,CAAC,CACf,EACD4luB,EAAOljuB,SAAW/I,OAAOJ,UAAUmJ,SAC/BkjuB,EAAOG,sBACPv4sB,EAAOw0qB,QAAU4jC,EA9EzB,EA+EGA,IAAWA,EAAS,CAAC,IAExB,SAAWD,GACP,GAA0B,oBAAf3/oB,YAA0E,IAA7C,IAAIA,WAAW,GAAGogM,SAAS,GAAGklE,WAAkB,CACpF,IAAIllE,EAAW,SAAU/nO,EAAOp3C,GAC5B,IAAIo2J,EAAQ,SAAUxhK,EAAGwjD,EAAKU,GAAO,OAAOlkD,EAAIwjD,EAAMA,EAAMxjD,EAAIkkD,EAAMA,EAAMlkD,CAAI,EAChFwiD,GAAgB,EAChBp3C,GAAY,EACR/G,UAAUjC,OAAS,IACnBogD,EAAQ,GACRn+C,UAAUjC,OAAS,IACnBgJ,EAAMvL,KAAKuC,QACXogD,EAAQ,IACRA,EAAQ3iD,KAAKuC,OAASogD,GACtBp3C,EAAM,IACNA,EAAMvL,KAAKuC,OAASgJ,GACxBo3C,EAAQg/G,EAAMh/G,EAAO,EAAG3iD,KAAKuC,QAE7B,IAAIoE,GADJ4E,EAAMo2J,EAAMp2J,EAAK,EAAGvL,KAAKuC,SACTogD,EAGhB,OAFIh8C,EAAM,IACNA,EAAM,GACH,IAAI3G,KAAKpC,YAAYoC,KAAKs8Q,OAAQt8Q,KAAKo4sB,WAAaz1pB,EAAQ3iD,KAAKgruB,kBAAmBrkuB,EAC9F,EACGmyL,EAAQ,CAAC,YAAa,aAAc,oBAAqB,aAAc,cAAe,aAAc,cAAe,eAAgB,gBACnIo1Y,OAAe,EAKnB,GAJsB,kBAAX58jB,OACP48jB,EAAe58jB,OACM,kBAAThN,OACZ4pkB,EAAe5pkB,WACEK,IAAjBupkB,EACA,IAAK,IAAI5vkB,EAAI,EAAGA,EAAIw6L,EAAMv2L,OAAQjE,IAC1B4vkB,EAAap1Y,EAAMx6L,MACnB4vkB,EAAap1Y,EAAMx6L,IAAIT,UAAU6sR,SAAWA,EAG3D,CAjCL,EAkCGu/c,IAA2BA,EAAyB,CAAC,IAExD,SAAWC,GACP,IAAIe,EAAmB,WACnB,SAASA,IACR,CAqED,OApEAA,EAAgBC,cAAgB,SAAUrrtB,EAAO3Q,EAASozB,GACtD,IAAI6osB,EAAQ,IAAIjB,EAAOkB,MACnBC,EAAa,IAAInB,EAAOoB,WAC5B,IAAKhpsB,EACD,MAAM,IAAI9gC,UAAU,6CACxB,GAAqB,kBAAVqe,EACPA,EAAQqqtB,EAAOjqc,WAAWpgR,QAEzB,GAAa,MAATA,KAAmBA,aAAiByqE,YAEzC,YADAhoD,OAAS39B,EAAW,IAAInD,UAAU,wFAGtC,IAAI+puB,EAAerB,EAAOsB,WAAWC,eAAe5rtB,EAAO3Q,EAAQq2sB,WAC/DmmB,EAAmB,GACnBC,EAA2B,SAA3BA,EAAqCzhuB,GACrC,GAAIA,EAAQqhuB,EAAahpuB,OAAQ,CAC7B,IAAIqpuB,OAAkB,EACtB,IACIA,EAAkBP,EAAWQ,cAAcN,EAAarhuB,GAK3D,CAHD,MAAOpM,GAEH,YADAwkC,OAAS39B,EAAW7G,EAEvB,CACD4tuB,EAAiBxpuB,KAAK0puB,GAClBT,EAAMW,kBAAoB,GAC1BH,EAAyBzhuB,EAAQ,IAGjCgguB,EAAO6B,kBAAiB,WAAc,OAAOJ,EAAyBzhuB,EAAQ,EAAK,IACnFihuB,EAAMa,UAEb,KACI,CACD,IAAIC,EAA2B/B,EAAOsB,WAAWU,kBAAkBR,GACnExB,EAAO6B,kBAAiB,WACpB,IAAIzluB,EACJ,IACIA,EAAS4juB,EAAOiC,kBAAkBC,sBAAsBH,EAA0B/8tB,EAAQm9tB,eAK7F,CAHD,MAAOvuuB,GAEH,YADAwkC,OAAS39B,EAAW7G,EAEvB,CACDosuB,EAAO6B,kBAAiB,WAAc,OAAOzpsB,EAASh8B,EAAU,GACnE,GACJ,CACJ,EACD4juB,EAAO6B,kBAAiB,WAAc,OAAOJ,EAAyB,EAAK,GAC9E,EACDV,EAAgBqB,wBAA0B,WACtC,IAAIjB,EAAa,IAAInB,EAAOoB,WAExBiB,EAAoB,IADP1+B,EAAQ,OACc5/f,WAAU,CAAEu+hB,eAAe,EAAMC,cAAe,QAavF,OAZAF,EAAkBG,WAAa,SAAU1htB,EAAM+srB,EAAU/2sB,GACrD,IAAIs7Q,EACJ,IACIA,EAAS4td,EAAOyC,YAAYC,mBAAmBvB,EAAWQ,cAAc3B,EAAOyC,YAAYE,mBAAmB7htB,IAKjH,CAHD,MAAOltB,GAEH,YADAyuuB,EAAkBv7sB,KAAK,QAASlzB,EAEnC,CACDyuuB,EAAkBrquB,KAAKo6Q,GACvBt7Q,GACH,EACMuruB,CACV,EACMtB,CACV,CAxEsB,GAyEvBf,EAAOe,gBAAkBA,CA1E7B,EA2EGf,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAI4C,EAAqB,WACrB,SAASA,IACR,CAqED,OApEAA,EAAkBC,gBAAkB,SAAUlttB,EAAO3Q,EAASozB,GAC1D,IAAKA,EACD,MAAM,IAAI9gC,UAAU,+CACxB,IAAI2puB,EAAQ,IAAIjB,EAAOkB,MACvB,IACIvrtB,EAAQqqtB,EAAOiC,kBAAkBa,sBAAsBnttB,EAAO3Q,EAAQ+9tB,cAKzE,CAHD,MAAOnvuB,GAEH,YADAwkC,OAAS39B,EAAW7G,EAEvB,CACD,IAAIovuB,EAAe,IAAIhD,EAAOiD,aAC1B5B,EAAerB,EAAOsB,WAAWC,eAAe5rtB,EAAO3Q,EAAQq2sB,WAC/D6nB,EAAqB,GACrBC,EAA6B,SAA7BA,EAAuCnjuB,GACvC,GAAIA,EAAQqhuB,EAAahpuB,OAAQ,CAC7B,IAAI+quB,OAAoB,EACxB,IACIA,EAAoBJ,EAAaK,gBAAgBhC,EAAarhuB,GAKjE,CAHD,MAAOpM,GAEH,YADAwkC,OAAS39B,EAAW7G,EAEvB,CACDsvuB,EAAmBlruB,KAAKoruB,GACpBnC,EAAMW,kBAAoB,GAC1BuB,EAA2BnjuB,EAAQ,IAGnCgguB,EAAO6B,kBAAiB,WAAc,OAAOsB,EAA2BnjuB,EAAQ,EAAK,IACrFihuB,EAAMa,UAEb,KACI,CACD,IAAIwB,EAA6BtD,EAAOsB,WAAWU,kBAAkBkB,GACrElD,EAAO6B,kBAAiB,WACpB,IAAIzluB,EACJ,IACIA,EAAS4juB,EAAOiC,kBAAkBsB,wBAAwBD,EAA4Bt+tB,EAAQm9tB,eAKjG,CAHD,MAAOvuuB,GAEH,YADAwkC,OAAS39B,EAAW7G,EAEvB,CACDosuB,EAAO6B,kBAAiB,WAAc,OAAOzpsB,EAASh8B,EAAU,GACnE,GACJ,CACJ,EACD4juB,EAAO6B,kBAAiB,WAAc,OAAOsB,EAA2B,EAAK,GAChF,EACDP,EAAkBY,0BAA4B,WAC1C,IAAIR,EAAe,IAAIhD,EAAOiD,aAE1BQ,EAAsB,IADT9/B,EAAQ,OACgB5/f,WAAU,CAAEu+hB,eAAe,EAAMC,cAAe,QAazF,OAZAkB,EAAoBjB,WAAa,SAAU1htB,EAAM+srB,EAAU/2sB,GACvD,IAAIs7Q,EACJ,IACIA,EAAS4td,EAAOyC,YAAYC,mBAAmBM,EAAaK,gBAAgBrD,EAAOyC,YAAYE,mBAAmB7htB,IAKrH,CAHD,MAAOltB,GAEH,YADA6vuB,EAAoB38sB,KAAK,QAASlzB,EAErC,CACD6vuB,EAAoBzruB,KAAKo6Q,GACzBt7Q,GACH,EACM2suB,CACV,EACMb,CACV,CAxEwB,GAyEzB5C,EAAO4C,kBAAoBA,CA1E/B,EA2EG5C,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAI0D,GACJ,SAAWA,GACPA,EAAU1C,cAAgB,SAAUrrtB,EAAO3Q,EAASozB,GAChD,GAA6B,aAAzBpzB,EAAQ+9tB,eACFpttB,aAAiByqE,WAD3B,CAMA,IAAI7hE,EAAU,CACVnC,MAAOY,KAAKE,SAASpgB,WACrB1H,KAAM,WACN0rB,KAAMnL,EACNottB,cAAe/9tB,EAAQ+9tB,cACvBZ,eAAgBn9tB,EAAQm9tB,gBAY5BuB,EAAUC,aAAa/nqB,iBAAiB,WAVjB,SAAnBgoqB,EAA6BhwuB,GAC7B,IAAI8oB,EAAW9oB,EAAEktB,KACZpE,GAAYA,EAASN,OAASmC,EAAQnC,QAE3CsntB,EAAUC,aAAa7nqB,oBAAoB,UAAW8nqB,GACjC,SAAjBlntB,EAAStnB,KACTgjC,OAAS39B,EAAW,IAAI5D,MAAM6lB,EAASxiB,QAEvCk+B,EAAS1b,EAASoE,MACzB,IAED4itB,EAAUC,aAAajoZ,YAAYn9T,EAAS,GAnB3C,MAHO6Z,OAAS39B,EAAW,IAAInD,UAAU,4CAuB7C,EACDosuB,EAAUb,gBAAkB,SAAUlttB,EAAO3Q,EAASozB,GAClD,IAAI7Z,EAAU,CACVnC,MAAOY,KAAKE,SAASpgB,WACrB1H,KAAM,aACN0rB,KAAMnL,EACNottB,cAAe/9tB,EAAQ+9tB,cACvBZ,eAAgBn9tB,EAAQm9tB,gBAY5BuB,EAAUC,aAAa/nqB,iBAAiB,WAVjB,SAAnBgoqB,EAA6BhwuB,GAC7B,IAAI8oB,EAAW9oB,EAAEktB,KACZpE,GAAYA,EAASN,OAASmC,EAAQnC,QAE3CsntB,EAAUC,aAAa7nqB,oBAAoB,UAAW8nqB,GACjC,SAAjBlntB,EAAStnB,KACTgjC,OAAS39B,EAAW,IAAI5D,MAAM6lB,EAASxiB,QAEvCk+B,EAAS1b,EAASoE,MACzB,IAED4itB,EAAUC,aAAajoZ,YAAYn9T,EAAS,GAC/C,EACDmltB,EAAUG,yBAA2B,WACd,iBAARzpuB,WAAsCK,IAAlBL,KAAKitC,eAAmD5sC,GAAzBL,KAAKwhE,mBAC/DxhE,KAAKwhE,iBAAiB,WAAW,SAAUhoE,GACvC,IAAI2qB,EAAU3qB,EAAEktB,KAChB,GAAoB,YAAhBvC,EAAQnpB,KAAoB,CAC5B,IAAI0uuB,OAAiB,EACrB,IACIA,EAAiB9D,EAAO5jf,SAAS79N,EAAQuC,KAAM,CAAEqhtB,eAAgB5jtB,EAAQ4jtB,gBAK5E,CAHD,MAAOvuuB,GAEH,YADAwG,KAAKshV,YAAY,CAAEt/T,MAAOmC,EAAQnC,MAAOhnB,KAAM,QAAS8E,MAAO8luB,EAAOU,mBAAmB9suB,IAAM,GAElG,EACG8oB,EAAW,CACXN,MAAOmC,EAAQnC,MACfhnB,KAAM,oBACN0rB,KAAMgjtB,EACNj2B,SAAUtvrB,EAAQ4jtB,iBAETrhtB,gBAAgBs/D,aAA2D,IAA7Cn8E,UAAUgipB,WAAW9woB,QAAQ,WACpE/a,KAAKshV,YAAYh/T,EAAU,CAACA,EAASoE,KAAKsxP,SAE1Ch4Q,KAAKshV,YAAYh/T,EAAU,GAClC,MACI,GAAoB,cAAhB6B,EAAQnpB,KAAsB,CACnC,IAQIsnB,EARAqntB,OAAmB,EACvB,IACIA,EAAmB/D,EAAOgE,WAAWzltB,EAAQuC,KAAM,CAAEiitB,cAAexktB,EAAQwktB,cAAeZ,eAAgB5jtB,EAAQ4jtB,gBAKtH,CAHD,MAAOvuuB,GAEH,YADAwG,KAAKshV,YAAY,CAAEt/T,MAAOmC,EAAQnC,MAAOhnB,KAAM,QAAS8E,MAAO8luB,EAAOU,mBAAmB9suB,IAAM,GAElG,EACG8oB,EAAW,CACXN,MAAOmC,EAAQnC,MACfhnB,KAAM,sBACN0rB,KAAMijtB,EACNl2B,SAAUtvrB,EAAQ4jtB,iBAETrhtB,gBAAgBs/D,aAA2D,IAA7Cn8E,UAAUgipB,WAAW9woB,QAAQ,WACpE/a,KAAKshV,YAAYh/T,EAAU,CAACA,EAASoE,KAAKsxP,SAE1Ch4Q,KAAKshV,YAAYh/T,EAAU,GAClC,CACJ,IACDtiB,KAAKwhE,iBAAiB,SAAS,SAAUhoE,GACrCosuB,EAAOpptB,IAAIoptB,EAAOU,mBAAmB9suB,EAAEsG,MAAO,yCACjD,IAER,EACDwpuB,EAAUO,2BAA6B,WACnC,GAAIP,EAAUC,aACV,OAAO,EACX,IAAK3D,EAAOO,sBACR,OAAO,EACX,IAAKmD,EAAUQ,WAAiC,kBAAb78rB,SAAuB,CACtD,IAAI88rB,EAAgB98rB,SAASi4Z,eAAe,UACvB,MAAjB6kS,IACAT,EAAUQ,UAAYC,EAAcv7rB,aAAa,aAAUnuC,EAClE,CACD,QAAIipuB,EAAUQ,YACVR,EAAUC,aAAe,IAAInD,OAAOkD,EAAUQ,YACvC,EAKd,EACDR,EAAUU,UAAY,WACdV,EAAUC,eACVD,EAAUC,aAAaS,YACvBV,EAAUC,kBAAelpuB,EAEhC,CA1HL,EA2HGipuB,EAAY1D,EAAO0D,YAAc1D,EAAO0D,UAAY,CAAC,IACxDA,EAAUG,0BA9Hd,EA+HG7D,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAIqE,EAAgB,WAChB,SAASA,EAAa7rqB,EAAW8rqB,EAAejsuB,GAC5CvC,KAAK0iE,UAAYA,EACjB1iE,KAAKwuuB,cAAgBA,EACrBxuuB,KAAKuC,OAASA,CACjB,CAUD,OATAgsuB,EAAa1wuB,UAAUsnB,IAAM,SAAUjb,GACnC,OAAOlK,KAAK0iE,UAAU1iE,KAAKwuuB,cAAgBtkuB,EAC9C,EACDqkuB,EAAa1wuB,UAAU4wuB,mBAAqB,SAAUC,GAClD,OAAO1uuB,KAAK0iE,UAAU1iE,KAAKwuuB,cAAgBxuuB,KAAKuC,OAAS,EAAImsuB,EAChE,EACDH,EAAa1wuB,UAAU2vB,IAAM,SAAUtjB,EAAO7L,GAC1C2B,KAAK0iE,UAAU1iE,KAAKwuuB,cAAgBtkuB,GAAS7L,CAChD,EACMkwuB,CACV,CAhBmB,GAiBpBrE,EAAOqE,aAAeA,CAlB1B,EAmBGrE,IAAWA,EAAS,CAAC,IAExB,SAAWA,IAEP,SAAWsB,GACPA,EAAWmD,aAAe,SAAU3muB,EAAQ4muB,EAAarkT,EAAaskT,EAAkB15sB,GACpF,KAAOA,KACHo1Z,EAAYskT,KAAsB7muB,EAAO4muB,IAChD,EACDpD,EAAWsD,aAAe,SAAU31jB,EAAYjvK,EAAOirB,GACnD,KAAOA,KACHgkJ,EAAWjvK,KAAW,CAC7B,EACDshuB,EAAWuD,0BAA4B,SAAU/voB,GAE7C,IADA,IAAI14F,EAAS,EACJhI,EAAI,EAAGA,EAAI0gG,EAAMz8F,OAAQjE,IAC1B0gG,EAAM1gG,IACNgI,IACR,OAAOA,CACV,EACDkluB,EAAWwD,yBAA2B,SAAUhwoB,EAAOiwoB,GACnD,GAAIjwoB,EAAMz8F,QAAU0suB,EAChB,MAAM,IAAIh9iB,WAAW,kFAEzB,IADA,IAAIi9iB,EAAiBlwoB,EAAMz8F,OAAS0suB,EAC3B3wuB,EAAI,EAAGA,EAAI2wuB,EAAiB3wuB,IACjC0gG,EAAM1gG,GAAK0gG,EAAMkwoB,EAAiB5wuB,GACtC0gG,EAAMz8F,OAAS0suB,CAClB,EACDzD,EAAW2D,wBAA0B,SAAUnwoB,GAC3C,IAAIowoB,EAAW,IAAI9kpB,WAA0B,EAAf0U,EAAMz8F,QAEpC,OADA6suB,EAAS5htB,IAAIwxE,GACNowoB,CACV,EACD5D,EAAWU,kBAAoB,SAAUmD,GAErC,IADA,IAAIC,EAAc,EACTn6rB,EAAK,EAAGo6rB,EAAWF,EAAQl6rB,EAAKo6rB,EAAShtuB,OAAQ4yC,IAAM,CAE5Dm6rB,IADItwoB,EAAQuwoB,EAASp6rB,IACA5yC,MACxB,CAGD,IAFA,IAAI+D,EAAS,IAAIgkF,WAAWglpB,GACxB3irB,EAAS,EACJhtC,EAAK,EAAG6vtB,EAAWH,EAAQ1vtB,EAAK6vtB,EAASjtuB,OAAQod,IAAM,CAC5D,IAAIq/E,EAAQwwoB,EAAS7vtB,GACrBrZ,EAAOknB,IAAIwxE,EAAOryC,GAClBA,GAAUqyC,EAAMz8F,MACnB,CACD,OAAO+D,CACV,EACDkluB,EAAWC,eAAiB,SAAUxxB,EAAWw1B,GAE7C,IADA,IAAInpuB,EAAS,GACJqmD,EAAS,EAAGA,EAASstpB,EAAU13sB,QAAS,CAC7C,IAAImtuB,EAAcxotB,KAAKy8B,IAAI8rrB,EAAex1B,EAAU13sB,OAASoqD,GAC7DrmD,EAAOpE,KAAK+3sB,EAAUvvb,SAAS/9N,EAAQA,EAAS+irB,IAChD/irB,GAAU+irB,CACb,CACD,OAAOppuB,CACV,CApDL,EAqDgB4juB,EAAOsB,aAAetB,EAAOsB,WAAa,CAAC,GAvD/D,EAwDGtB,IAAWA,EAAS,CAAC,IAExB,SAAWA,IAEP,SAAWyC,GACPA,EAAYgD,4BAA8B,SAAU9vtB,GAChD,MAAsB,oBAAXszH,QAAyBA,OAAOyhkB,SAAS/0rB,GACzC8stB,EAAYE,mBAAmBhttB,GAE/BA,CACd,EACD8stB,EAAYC,mBAAqB,SAAUlmuB,GACvC,GAAIysI,OAAOt1I,qBAAqBysF,WAAY,CACxC,IAAIslpB,EAAW,IAAItlpB,WAAW5jF,EAAI41Q,OAAQ51Q,EAAI0xsB,WAAY1xsB,EAAIkpV,YAE9D,OADA3xV,OAAM,eAAmB2xuB,EAAUz8lB,OAAOt1I,WACnC+xuB,CACV,CAIG,IAFA,IAAIjpuB,EAAMD,EAAInE,OACVuoF,EAAM,IAAIqoD,OAAOxsI,GACZrI,EAAI,EAAGA,EAAIqI,EAAKrI,IACrBwsF,EAAIxsF,GAAKoI,EAAIpI,GACjB,OAAOwsF,CAEd,EACD6hpB,EAAYE,mBAAqB,SAAU/hpB,GACvC,GAAIqoD,OAAOt1I,qBAAqBysF,WAC5B,OAAO,IAAIA,WAAWQ,EAAG,OAAYA,EAAG,WAAgBA,EAAG,YAK3D,IAFA,IAAInkF,EAAMmkF,EAAIvoF,OACVmE,EAAM,IAAI4jF,WAAW3jF,GAChBrI,EAAI,EAAGA,EAAIqI,EAAKrI,IACrBoI,EAAIpI,GAAKwsF,EAAIxsF,GACjB,OAAOoI,CAEd,CAhCL,EAiCiBwjuB,EAAOyC,cAAgBzC,EAAOyC,YAAc,CAAC,GAnClE,EAoCGzC,IAAWA,EAAS,CAAC,IAExB,SAAWA,IAEP,SAAWiC,GACPA,EAAkB0D,iBAAmB,SAAUvzd,EAAQwzd,EAAiBC,EAAYC,QACrD,IAAvBA,IAAiCA,EAAqB,GAC1D,IAAIC,EAAgB,IAAI3lpB,WAAWylpB,EAAaC,GAEhD,OADAC,EAAczitB,IAAI8uP,EAAOoO,SAASold,EAAiBA,EAAkBC,IAC9DE,CACV,EACD9D,EAAkB+D,+BAAiC,SAAU/zd,EAAO2zd,EAAiBC,EAAYI,GAC7F,OAAOjG,EAAOsB,WAAWU,kBAAkB,CAAC/vd,EAAMuO,SAASold,EAAiBA,EAAkBC,GAAaI,GAC9G,EACDhE,EAAkBiE,gCAAkC,SAAUvwtB,GAC1D,GAAa,MAATA,EACA,MAAM,IAAIre,UAAU,+DACxB,GAAqB,kBAAVqe,EACP,MAAO,SACN,GAAIA,aAAiByqE,YAAiC,oBAAX6oD,QAAyBA,OAAOyhkB,SAAS/0rB,GACrF,MAAO,YAEP,MAAM,IAAIre,UAAU,4FAC3B,EACD2quB,EAAkBC,sBAAwB,SAAUiE,EAAiBhE,GACjE,OAAQA,GACJ,IAAK,YACD,OAAOgE,EACX,IAAK,SACD,OAAOnG,EAAOyC,YAAYC,mBAAmByD,GACjD,IAAK,SACD,OAAOnG,EAAOpqc,aAAauwc,GAC/B,IAAK,eACD,OAAOnG,EAAOoG,mBAAmBD,GACrC,IAAK,sBACD,OAAOnG,EAAOqG,0BAA0BF,GAC5C,QACI,MAAM,IAAI7uuB,UAAU,4DAE/B,EACD2quB,EAAkBa,sBAAwB,SAAUgB,EAAgBf,GAChE,GAAqB,MAAjBA,EACA,MAAM,IAAIzruB,UAAU,oDACxB,OAAQyruB,GACJ,IAAK,YACL,IAAK,SACD,IAAIuD,EAAkBtG,EAAOyC,YAAYgD,4BAA4B3B,GACrE,KAAMwC,aAA2BlmpB,YAC7B,MAAM,IAAI9oF,UAAU,kHACxB,OAAOgvuB,EACX,IAAK,SACD,GAA8B,kBAAnBxC,EACP,MAAM,IAAIxsuB,UAAU,qFACxB,OAAO0ouB,EAAOuG,aAAazC,GAC/B,IAAK,eACD,GAA8B,kBAAnBA,EACP,MAAM,IAAIxsuB,UAAU,2FACxB,OAAO0ouB,EAAOwG,mBAAmB1C,GACrC,IAAK,sBACD,GAA8B,kBAAnBA,EACP,MAAM,IAAIxsuB,UAAU,kGACxB,OAAO0ouB,EAAOyG,0BAA0B3C,GAC5C,QACI,MAAM,IAAIxsuB,UAAU,4DAA4DgJ,OAAOyiuB,EAAe,MAEjH,EACDd,EAAkBsB,wBAA0B,SAAUmD,EAAmBvE,GACrE,OAAQA,GACJ,IAAK,SACD,OAAOnC,EAAO2G,WAAWD,GAC7B,IAAK,YACD,OAAOA,EACX,IAAK,SACD,GAAsB,oBAAXz9lB,OACP,MAAM,IAAI3xI,UAAU,yGACxB,OAAO0ouB,EAAOyC,YAAYC,mBAAmBgE,GACjD,QACI,MAAM,IAAIpvuB,UAAU,8DAE/B,CA3EL,EA4EuB0ouB,EAAOiC,oBAAsBjC,EAAOiC,kBAAoB,CAAC,GA9EpF,EA+EGjC,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAI4G,GACJ,SAAWA,GACP,IACIC,EADAC,EAAkB,GAEtBF,EAAU/E,iBAAmB,SAAUplqB,GACnCqqqB,EAAgB9uuB,KAAKykE,GACU,IAA3BqqqB,EAAgBzuuB,QAChBwuuB,GAEP,EACDD,EAAUG,oBAAsB,WAC5B,IAAIpnlB,EAAQ,WACR,IAAK,IAAI10G,EAAK,EAAG+7rB,EAAoBF,EAAiB77rB,EAAK+7rB,EAAkB3uuB,OAAQ4yC,IAAM,CACvF,IAAIwxB,EAAOuqqB,EAAkB/7rB,GAC7B,IACIwxB,EAAKnnE,UAAKmF,EAIb,CAFD,MAAOuklB,GACHghJ,EAAOY,qCAAqC5hJ,EAAW,6BAC1D,CACJ,CACD8nJ,EAAgBzuuB,OAAS,CAC5B,EACD,GAAI2nuB,EAAOC,kBACP4G,EAAiB,WAAc,OAAOpnT,cAAa,WAAc,OAAO9/R,GAAU,GAAI,OAErF,GAAsB,kBAAXv4I,QAA0D,oBAA5BA,OAAOw0D,kBAAiE,oBAAvBx0D,OAAOs0U,YAA4B,CAC9H,IAKIurZ,EALAC,EAAU,oBAAsBlqtB,KAAKE,SAASpgB,WAClDsK,OAAOw0D,iBAAiB,WAAW,SAAUzzD,GACrCA,EAAM2Y,OAASomtB,GACfvnlB,GACP,IAGGsnlB,EADAjH,EAAOM,sBACU,IAEAl5tB,OAAO5C,SAASwD,KACrC6+tB,EAAiB,WAAc,OAAOz/tB,OAAOs0U,YAAYwrZ,EAASD,EAAkB,CACvF,MACI,GAA8B,oBAAnBh7C,gBAAwD,oBAAhBk7C,YAA4B,CAChF,IAAIC,EAAY,IAAIn7C,eACpBm7C,EAAU76C,MAAMK,UAAY,WAAc,OAAOjtiB,GAAU,EAC3DknlB,EAAiB,WAAc,OAAOO,EAAUt6C,MAAMpxW,YAAY,EAAK,CAC1E,MAEGmrZ,EAAiB,WAAc,OAAOtltB,YAAW,WAAc,OAAOo+H,GAAU,GAAE,EAAK,CAE9F,EACDinlB,EAAUG,qBA/Cd,EAgDGH,EAAY5G,EAAO4G,YAAc5G,EAAO4G,UAAY,CAAC,IACxD5G,EAAO6B,iBAAmB,SAAUplqB,GAAQ,OAAOmqqB,EAAU/E,iBAAiBplqB,EAAQ,CAnD1F,EAoDGujqB,IAAWA,EAAS,CAAC,IAExB,SAAWA,IAEP,SAAWqH,GACPA,EAAY7tf,SAAW,SAAU7vO,EAAK29tB,GAClC,OAAOD,EAAYvyjB,OAAOnrK,EAAK29tB,EAClC,EACDD,EAAYvyjB,OAAS,SAAUnrK,EAAKgxE,GAChC,GAAW,MAAPhxE,EACA,MAAM,IAAIrS,UAAU,4BACxB,GAAmB,kBAARqS,EACP,MAAM,IAAIrS,UAAU,wBAGxB,GAFqB,MAAjBqjF,IACAA,EAAgB,CAAC,GACQ,kBAAlBA,EACP,MAAM,IAAIrjF,UAAU,kCACxB,GAAqB,MAAjBqjF,EACA,IAAK,IAAItD,KAAYsD,EACjBhxE,EAAI0tE,GAAYsD,EAActD,GAEtC,OAAO1tE,CACV,CAlBL,EAmBiBq2tB,EAAOqH,cAAgBrH,EAAOqH,YAAc,CAAC,GArBlE,EAsBGrH,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACPA,EAAOuH,wBAA0B,SAAUtze,EAAKC,GAC5C,OAAOD,EAAMj3O,KAAKC,MAAMD,KAAKE,UAAYg3O,EAAOD,GACnD,EACD+re,EAAOwH,6BAA+B,SAAUnvuB,GAE5C,IADA,IAAI44Y,EAAe,GACV78Y,EAAI,EAAGA,EAAIiE,EAAQjE,IAAK,CAC7B,IAAIqzuB,OAAkB,EACtB,GACIA,EAAkBzH,EAAOuH,wBAAwB,EAAG,eAC/CE,GAAmB,OAAUA,GAAmB,OACzDx2V,GAAgB+uV,EAAOt+b,SAASgmc,UAAUC,eAAeF,EAC5D,CACD,OAAOx2V,CACV,CAdL,EAeG+uV,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAI4H,EAAiB,WACjB,SAASA,EAAcC,QACU,IAAzBA,IAAmCA,EAAuB,MAC9D/xuB,KAAK+xuB,qBAAuBA,EAC5B/xuB,KAAKgyuB,eAAiB,EACtBhyuB,KAAK0md,aAAe,GACpB1md,KAAKiyuB,aAAe,IAAI5md,YAAYrrR,KAAK+xuB,qBAC5C,CAoCD,OAnCAD,EAAcj0uB,UAAUq0uB,eAAiB,SAAU37pB,GAC/Cv2E,KAAKiyuB,aAAajyuB,KAAKgyuB,kBAAoBz7pB,EACvCv2E,KAAKgyuB,iBAAmBhyuB,KAAK+xuB,sBAC7B/xuB,KAAKmyuB,2BACZ,EACDL,EAAcj0uB,UAAUu0uB,gBAAkB,SAAUC,GAChD,IAAK,IAAI/zuB,EAAI,EAAG4yb,EAAWmhT,EAAU9vuB,OAAQjE,EAAI4yb,EAAU5yb,IACvD0B,KAAKkyuB,eAAeG,EAAU/zuB,GACrC,EACDwzuB,EAAcj0uB,UAAUy0uB,aAAe,SAAUnztB,GAC7C,IAAK,IAAI7gB,EAAI,EAAGi0uB,EAAWpztB,EAAI5c,OAAQjE,EAAIi0uB,EAAUj0uB,IACjD0B,KAAKkyuB,eAAe/ytB,EAAIs+K,WAAWn/L,GAC1C,EACDwzuB,EAAcj0uB,UAAU20uB,gBAAkB,SAAU/3B,GAChD,GAAIA,GAAa,MACbz6sB,KAAKkyuB,eAAez3B,OAEnB,MAAIA,GAAa,SAKlB,MAAM,IAAI15sB,MAAM,oCAAoCyJ,OAAOiwsB,EAAW,iCAJtEz6sB,KAAKkyuB,eAAe,OAAWz3B,EAAY,QAAa,KACxDz6sB,KAAKkyuB,eAAe,OAAWz3B,EAAY,MAAW,MAGtD,CACP,EACDq3B,EAAcj0uB,UAAU40uB,gBAAkB,WAEtC,OADAzyuB,KAAKmyuB,4BACEnyuB,KAAK0md,YACf,EACDorR,EAAcj0uB,UAAUs0uB,0BAA4B,WAC5CnyuB,KAAKgyuB,iBAAmBhyuB,KAAK+xuB,qBAC7B/xuB,KAAK0md,cAAgB1hd,OAAOsxE,aAAa7xE,MAAM,KAAMzE,KAAKiyuB,cAE1DjyuB,KAAK0md,cAAgB1hd,OAAOsxE,aAAa7xE,MAAM,KAAMzE,KAAKiyuB,aAAavnd,SAAS,EAAG1qR,KAAKgyuB,iBAC5FhyuB,KAAKgyuB,eAAiB,CACzB,EACMF,CACV,CA5CoB,GA6CrB5H,EAAO4H,cAAgBA,CA9C3B,EA+CG5H,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAIkB,EAAS,WACT,SAASA,IACLpruB,KAAKgsuB,SACR,CAuDD,OAtDAZ,EAAMvtuB,UAAUmuuB,QAAU,WACtBhsuB,KAAK6ka,UAAYumU,EAAMsH,cAC1B,EACDtH,EAAMvtuB,UAAUiuuB,eAAiB,WAC7B,OAAOV,EAAMsH,eAAiB1yuB,KAAK6ka,SACtC,EACDumU,EAAMvtuB,UAAU80uB,yBAA2B,WACvC,IAAIC,EAAc5yuB,KAAK8ruB,iBAEvB,OADA9ruB,KAAKgsuB,UACE4G,CACV,EACDxH,EAAMvtuB,UAAUg1uB,cAAgB,SAAUh/pB,EAAOi/pB,QACvB,IAAlBA,IAA4BA,GAAgB,GAChD,IAAIF,EAAc5yuB,KAAK8ruB,iBACnBrjuB,EAAU,GAAG+B,OAAOqpE,EAAO,MAAMrpE,OAAOoouB,EAAYlvrB,QAAQ,GAAI,MAGpE,OAFAwmrB,EAAOpptB,IAAIrY,EAASqquB,GACpB9yuB,KAAKgsuB,UACE4G,CACV,EACDxH,EAAMsH,aAAe,WAGjB,OAFK1yuB,KAAK+yuB,eACN/yuB,KAAKgzuB,gCACFhzuB,KAAK+yuB,eACf,EACD3H,EAAM6H,wBAA0B,WAC5B,OAAO/rtB,KAAKC,MAA6B,IAAvBiktB,EAAMsH,eAC3B,EACDtH,EAAM4H,8BAAgC,WAClC,GAAuB,kBAAZ/utB,SAAkD,oBAAnBA,QAAQivtB,OAAuB,CACrE,IAAIC,EAAkB,EACtBnzuB,KAAK+yuB,cAAgB,WACjB,IAAIK,EAAgBnvtB,QAAQivtB,SACxBG,EAAsC,IAAnBD,EAAc,GAAcA,EAAc,GAAK,IACtE,OAAOD,EAAkBE,CAC5B,EACDF,EAAkBvytB,KAAKmmD,MAAQ/mE,KAAK+yuB,eACvC,MACI,GAAsB,kBAAXhvhB,QAAuBA,OAAOuvhB,SAAU,CACpD,IAAIC,EAAkB3ytB,KAAKmmD,MACvBysqB,EAAyB,IAAIzvhB,OAAOuvhB,SACxCE,EAAuB7wrB,QACvB3iD,KAAK+yuB,cAAgB,WAAc,OAAOQ,EAAkBC,EAAuBC,eAAiB,GAAO,CAC9G,MACI,GAA2B,kBAAhB/0C,aAA4BA,YAAY33nB,IAAK,CACzD,IAAI2sqB,EAAkB9ytB,KAAKmmD,MAAQ23nB,YAAY33nB,MAC/C/mE,KAAK+yuB,cAAgB,WAAc,OAAOW,EAAkBh1C,YAAY33nB,KAAQ,CACnF,MACQnmD,KAAKmmD,IACV/mE,KAAK+yuB,cAAgB,WAAc,OAAOnytB,KAAKmmD,KAAQ,EAGvD/mE,KAAK+yuB,cAAgB,WAAc,OAAQ,IAAInytB,MAAQ0wB,SAAY,CAE1E,EACM85rB,CACV,CA3DY,GA4DblB,EAAOkB,MAAQA,CA7DnB,EA8DGlB,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAIoB,EAAc,WACd,SAASA,EAAWqI,QACW,IAAvBA,IAAiCA,GAAqB,GAC1D3zuB,KAAK4zuB,sBAAwB,EAC7B5zuB,KAAK6zuB,sBAAwB,GAC7B7zuB,KAAK8zuB,qBAAuB,MAC5B9zuB,KAAK+zuB,oBAAsB,MAC3B/zuB,KAAKg0uB,wBAA0B,EAC3BL,GAA4C,mBAAf/pB,YAC7B5ptB,KAAKi0uB,gBAAkB,IAAI/J,EAAOgK,0BAA0Bl0uB,KAAK+zuB,qBAEjE/zuB,KAAKi0uB,gBAAkB,IAAI/J,EAAOiK,0BAA0Bn0uB,KAAK+zuB,oBACxE,CAoHD,OAnHAzI,EAAWztuB,UAAUguuB,cAAgB,SAAUhstB,GAC3C,QAAclb,IAAVkb,GAAiC,OAAVA,EACvB,MAAM,IAAIre,UAAU,mDAIxB,MAHoB,iBAATqe,IACPA,EAAQqqtB,EAAOjqc,WAAWpgR,IAC9BA,EAAQqqtB,EAAOyC,YAAYgD,4BAA4B9vtB,GAChD7f,KAAKo0uB,kBAAkBv0tB,EACjC,EACDyrtB,EAAWztuB,UAAUu2uB,kBAAoB,SAAUC,GAC/C,IAAKA,GAAiC,GAApBA,EAAU9xuB,OACxB,OAAO,IAAI+nF,WAAW,GAC1B,IAAIgqpB,EAA2Bt0uB,KAAKu0uB,gCAAgCF,GAChEG,EAAcx0uB,KAAKw0uB,YACnBC,EAAoBz0uB,KAAKw0uB,YAAYjyuB,OACzCvC,KAAKiyuB,aAAe,IAAI3npB,WAAW+ppB,EAAU9xuB,QAC7CvC,KAAK00uB,qBAAuB,EAE5B,IADA,IAAIC,EAAyB,EACpBC,EAAeN,EAA0BM,EAAeH,EAAmBG,IAAgB,CAChG,IAAI/uW,EAAa2uW,EAAYI,GACzBC,EAAsBD,EAAeD,EACzC,GAAIC,EAAeH,EAAoBz0uB,KAAK4zuB,sBACnCiB,GACD70uB,KAAK80uB,cAAcjvW,OAF3B,CAKA,IAAIkvW,EAAoB/0uB,KAAKg1uB,wBAAwBJ,GACrD,IAAKC,EAAqB,CACtB,IAAII,EAAej1uB,KAAKk1uB,iBAAiBN,EAAcG,GACnC,MAAhBE,IACAj1uB,KAAKm1uB,mBAAmBF,EAAa1yuB,OAAQ0yuB,EAAa38d,UAC1Dq8d,EAAyBC,EAAeK,EAAa1yuB,OACrDsyuB,GAAsB,EAE7B,CACIA,GACD70uB,KAAK80uB,cAAcjvW,GACvB,IAAIuvW,EAAsBp1uB,KAAKg0uB,wBAA0BY,EACzD50uB,KAAKi0uB,gBAAgBoB,iBAAiBN,EAAmBK,EAbxD,CAcJ,CACD,OAAOp1uB,KAAKiyuB,aAAavnd,SAAS,EAAG1qR,KAAK00uB,qBAC7C,EACDpJ,EAAWztuB,UAAUq3uB,iBAAmB,SAAUI,EAAyBC,GACvE,IAAIC,EAASx1uB,KAAKi0uB,gBAAgBwB,8BAA8BF,EAAav1uB,KAAK01uB,4BAClF,GAAc,MAAVF,EACA,OAAO,KAIX,IAHA,IACIG,EADA91tB,EAAQ7f,KAAKw0uB,YAEboB,EAAqB,EAChBt3uB,EAAI,EAAGA,EAAIk3uB,EAAOjzuB,OAAQjE,IAAK,CACpC,IAAIu3uB,EAAyBL,EAAO/G,mBAAmBnwuB,GAAK0B,KAAKg0uB,wBAC7D8B,EAAyBR,EAA0BO,EACnDE,OAAkB,EAOtB,GALIA,OADyBpxuB,IAAzBgxuB,EACkB31uB,KAAK4zuB,sBAAwB,EAC1C+B,EAAuB,KAAOG,GAA0B,IAC3CF,GAAsBA,IAAuB,GAE7CA,EAClBE,EAAyB91uB,KAAK8zuB,sBAC9BiC,GAAmB/1uB,KAAK6zuB,uBACxByB,EAA0BS,GAAmBl2tB,EAAMtd,OACnD,MACJ,GAAIsd,EAAMg2tB,EAAyBE,KAAqBl2tB,EAAMy1tB,EAA0BS,GAExF,IAAK,IAAIpprB,EAAS,GAAIA,IAAU,CAC5B,GAAI2orB,EAA0B3orB,IAAW9sC,EAAMtd,QAC3Csd,EAAMg2tB,EAAyBlprB,KAAY9sC,EAAMy1tB,EAA0B3orB,GAAS,CAChFA,EAASoprB,IACTJ,EAAuBG,EACvBF,EAAqBjprB,GAEzB,KACH,CACI,GAAIA,IAAW3sD,KAAK6zuB,sBACrB,MAAO,CAAEv7d,SAAUw9d,EAAwBvzuB,OAAQvC,KAAK6zuB,sBAC/D,CACJ,CACD,YAA6BlvuB,IAAzBgxuB,EACO,CAAEr9d,SAAUq9d,EAAsBpzuB,OAAQqzuB,GAE1C,IACd,EACDtK,EAAWztuB,UAAUm3uB,wBAA0B,SAAUxG,GACrD,OAA0C,QAAlCxuuB,KAAKw0uB,YAAYhG,GACiB,MAAtCxuuB,KAAKw0uB,YAAYhG,EAAgB,GACK,IAAtCxuuB,KAAKw0uB,YAAYhG,EAAgB,GACjCxuuB,KAAKw0uB,YAAYhG,EAAgB,IAAMxuuB,KAAK+zuB,mBACnD,EACDzI,EAAWztuB,UAAUs3uB,mBAAqB,SAAU5yuB,EAAQ+1Q,GACpDA,EAAW,KACXt4Q,KAAK80uB,cAAc,IAAMvyuB,GACzBvC,KAAK80uB,cAAcx8d,KAGnBt4Q,KAAK80uB,cAAc,IAAMvyuB,GACzBvC,KAAK80uB,cAAcx8d,IAAa,GAChCt4Q,KAAK80uB,cAAyB,IAAXx8d,GAE1B,EACDgzd,EAAWztuB,UAAUi3uB,cAAgB,SAAUz2uB,GAC3C2B,KAAKiyuB,aAAajyuB,KAAK00uB,wBAA0Br2uB,CACpD,EACDituB,EAAWztuB,UAAU02uB,gCAAkC,SAAUyB,GAC7D,QAAyBrxuB,IAArB3E,KAAKw0uB,YAEL,OADAx0uB,KAAKw0uB,YAAcwB,EACZ,EAGP,IAAIjG,EAAa7otB,KAAKy8B,IAAI3jD,KAAKw0uB,YAAYjyuB,OAAQvC,KAAK8zuB,sBACpDhE,EAAkB9vuB,KAAKw0uB,YAAYjyuB,OAASwtuB,EAGhD,OAFA/vuB,KAAKw0uB,YAActK,EAAOiC,kBAAkB+D,+BAA+BlwuB,KAAKw0uB,YAAa1E,EAAiBC,EAAYiG,GAC1Hh2uB,KAAKg0uB,yBAA2BlE,EACzBC,CAEd,EACMzE,CACV,CAjIiB,GAkIlBpB,EAAOoB,WAAaA,CAnIxB,EAoIGpB,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAIgK,EAA6B,WAC7B,SAASA,EAA0B+B,GAC/Bj2uB,KAAKk2uB,sBAAwB,EAC7Bl2uB,KAAKm2uB,sBAAwB,GAC7Bn2uB,KAAKo2uB,eAAiB,IAAIxsB,YAA0B,EAAdqsB,GACtCj2uB,KAAK6/rB,QAAU,IAAI+pB,YAA0B,EAAdqsB,GAC/Bj2uB,KAAKq2uB,aAAe,CACvB,CAkFD,OAjFAnC,EAA0Br2uB,UAAUw3uB,iBAAmB,SAAUE,EAAae,GAC1Ef,IAAgB,EACZv1uB,KAAKq2uB,cAAiBr2uB,KAAK6/rB,QAAQt9rB,SAAW,GAC9CvC,KAAKu2uB,UACT,IACIh0uB,EADAisuB,EAAgBxuuB,KAAKo2uB,eAAeb,GAExC,GAAsB,IAAlB/G,EACAA,EAAgBxuuB,KAAKq2uB,aACrB9zuB,EAAS,EACTvC,KAAK6/rB,QAAQ7/rB,KAAKq2uB,cAAgBC,EAClCt2uB,KAAKq2uB,cAAgBr2uB,KAAKk2uB,0BAEzB,EACD3zuB,EAASvC,KAAKo2uB,eAAeb,EAAc,MAC5Bv1uB,KAAKm2uB,sBAAwB,IACxC5zuB,EAASvC,KAAKw2uB,8BAA8BhI,EAAejsuB,EAAQvC,KAAKm2uB,sBAAwB,IACpG,IAAIx4K,EAAc6wK,EAAgBjsuB,EACA,IAA9BvC,KAAK6/rB,QAAQliI,IACb39jB,KAAK6/rB,QAAQliI,GAAe24K,EACxB34K,IAAgB39jB,KAAKq2uB,eACrBr2uB,KAAKq2uB,cAAgB9zuB,KAGzB2nuB,EAAOsB,WAAWmD,aAAa3uuB,KAAK6/rB,QAAS2uC,EAAexuuB,KAAK6/rB,QAAS7/rB,KAAKq2uB,aAAc9zuB,GAC7FisuB,EAAgBxuuB,KAAKq2uB,aACrBr2uB,KAAKq2uB,cAAgB9zuB,EACrBvC,KAAK6/rB,QAAQ7/rB,KAAKq2uB,gBAAkBC,EACpCt2uB,KAAKq2uB,cAAgB9zuB,GAEzBA,GACH,CACDvC,KAAKo2uB,eAAeb,GAAe/G,EACnCxuuB,KAAKo2uB,eAAeb,EAAc,GAAKhzuB,CAC1C,EACD2xuB,EAA0Br2uB,UAAU24uB,8BAAgC,SAAUhI,EAAeiI,EAAcC,GACvG,IAAIxH,EAAiBV,EAAgBiI,EAAeC,EAGpD,OAFAxM,EAAOsB,WAAWmD,aAAa3uuB,KAAK6/rB,QAASqvC,EAAgBlvuB,KAAK6/rB,QAAS2uC,EAAekI,GAC1FxM,EAAOsB,WAAWsD,aAAa9uuB,KAAK6/rB,QAAS2uC,EAAgBkI,EAAuBD,EAAeC,GAC5FA,CACV,EACDxC,EAA0Br2uB,UAAU04uB,QAAU,WAC1C,IAAII,EAAoB32uB,KAAKo2uB,eACzBQ,EAAa52uB,KAAK6/rB,QACtB7/rB,KAAKo2uB,eAAiB,IAAIxsB,YAAY5ptB,KAAKo2uB,eAAe7zuB,QAC1DvC,KAAKq2uB,aAAe,EACpB,IAAK,IAAId,EAAc,EAAGA,EAAcoB,EAAkBp0uB,OAAQgzuB,GAAe,EAAG,CAChF,IAAIsB,EAAWF,EAAkBpB,EAAc,GAC9B,IAAbsB,IAEJ72uB,KAAKo2uB,eAAeb,GAAev1uB,KAAKq2uB,aACxCr2uB,KAAKo2uB,eAAeb,EAAc,GAAKsB,EACvC72uB,KAAKq2uB,cAAgBnvtB,KAAKm9B,IAAIn9B,KAAKy8B,IAAe,EAAXkzrB,EAAc72uB,KAAKm2uB,uBAAwBn2uB,KAAKk2uB,uBAC1F,CACDl2uB,KAAK6/rB,QAAU,IAAI+pB,YAAgC,EAApB5ptB,KAAKq2uB,cACpC,IAASd,EAAc,EAAGA,EAAcoB,EAAkBp0uB,OAAQgzuB,GAAe,EAAG,CAChF,IAAIrG,EAAiByH,EAAkBpB,GACvC,GAAuB,IAAnBrG,EAAJ,CAEA,IAAI4H,EAAe92uB,KAAKo2uB,eAAeb,GACnCwB,EAAW/2uB,KAAKo2uB,eAAeb,EAAc,GACjDrL,EAAOsB,WAAWmD,aAAaiI,EAAY1H,EAAgBlvuB,KAAK6/rB,QAASi3C,EAAcC,EAH3E,CAIf,CACJ,EACD7C,EAA0Br2uB,UAAU43uB,8BAAgC,SAAUF,EAAayB,GACvFzB,IAAgB,EAChB,IAAI/G,EAAgBxuuB,KAAKo2uB,eAAeb,GACxC,OAAsB,IAAlB/G,EACO,WACU7puB,IAAjBqyuB,IACAA,EAAe,IAAI9M,EAAOqE,aAAavuuB,KAAK6/rB,QAAS2uC,EAAexuuB,KAAKo2uB,eAAeb,EAAc,KACnGyB,EACV,EACD9C,EAA0Br2uB,UAAUo5uB,mBAAqB,WACrD,OAAO/vtB,KAAKC,MAAM+itB,EAAOsB,WAAWuD,0BAA0B/uuB,KAAKo2uB,gBAAkB,EACxF,EACDlC,EAA0Br2uB,UAAUq5uB,qBAAuB,WAEvD,IADA,IAAI5wuB,EAAS,EACJhI,EAAI,EAAGA,EAAI0B,KAAKo2uB,eAAe7zuB,OAAQjE,GAAK,EACjDgI,GAAUtG,KAAKo2uB,eAAe93uB,EAAI,GACtC,OAAOgI,CACV,EACM4tuB,CACV,CA1FgC,GA2FjChK,EAAOgK,0BAA4BA,CA5FvC,EA6FGhK,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAIiK,EAA6B,WAC7B,SAASA,EAA0BhlrB,GAC/BnvD,KAAKm2uB,sBAAwB,GAC7Bn2uB,KAAKm3uB,QAAU,IAAItwuB,MAAMsoD,EAC5B,CA+BD,OA9BAglrB,EAA0Bt2uB,UAAUw3uB,iBAAmB,SAAUE,EAAae,GAC1E,IAAId,EAASx1uB,KAAKm3uB,QAAQ5B,QACX5wuB,IAAX6wuB,EACAx1uB,KAAKm3uB,QAAQ5B,GAAe,CAACe,IAGzBd,EAAOjzuB,SAAWvC,KAAKm2uB,sBAAwB,GAC/CjM,EAAOsB,WAAWwD,yBAAyBwG,EAAQx1uB,KAAKm2uB,sBAAwB,GACpFX,EAAOtzuB,KAAKo0uB,GAEnB,EACDnC,EAA0Bt2uB,UAAU43uB,8BAAgC,SAAUF,EAAayB,GACvF,IAAIxB,EAASx1uB,KAAKm3uB,QAAQ5B,GAC1B,YAAe5wuB,IAAX6wuB,EACO,WACU7wuB,IAAjBqyuB,IACAA,EAAe,IAAI9M,EAAOqE,aAAaiH,EAAQ,EAAGA,EAAOjzuB,SACtDy0uB,EACV,EACD7C,EAA0Bt2uB,UAAUo5uB,mBAAqB,WACrD,OAAO/M,EAAOsB,WAAWuD,0BAA0B/uuB,KAAKm3uB,QAC3D,EACDhD,EAA0Bt2uB,UAAUq5uB,qBAAuB,WAEvD,IADA,IAAIrsnB,EAAa,EACRvsH,EAAI,EAAGA,EAAI0B,KAAKm3uB,QAAQ50uB,OAAQjE,SACbqG,IAApB3E,KAAKm3uB,QAAQ74uB,KACbusH,GAAc7qH,KAAKm3uB,QAAQ74uB,GAAGiE,QAEtC,OAAOsoH,CACV,EACMspnB,CACV,CApCgC,GAqCjCjK,EAAOiK,0BAA4BA,CAtCvC,EAuCGjK,IAAWA,EAAS,CAAC,IAExB,SAAWA,GACP,IAAIiD,EAAgB,WAChB,SAASA,IACLntuB,KAAK8zuB,qBAAuB,MAC5B9zuB,KAAKgyuB,eAAiB,CACzB,CA6ED,OA5EA7E,EAAatvuB,UAAUu5uB,wBAA0B,SAAUv3tB,GAEvD,OADAA,EAAQqqtB,EAAOyC,YAAYgD,4BAA4B9vtB,GAChDqqtB,EAAO2G,WAAW7wuB,KAAKutuB,gBAAgB1ttB,GACjD,EACDsttB,EAAatvuB,UAAU0vuB,gBAAkB,SAAU1ttB,GAC3C7f,KAAKq3uB,uBACLx3tB,EAAQqqtB,EAAOsB,WAAWU,kBAAkB,CAAClsuB,KAAKq3uB,qBAAsBx3tB,IACxE7f,KAAKq3uB,0BAAuB1yuB,GAGhC,IADA,IAAI2yuB,EAAsBt3uB,KAAKu3uB,sCAAsCrwtB,KAAKm9B,IAAmB,EAAfxkC,EAAMtd,OAAY,OACvFqyuB,EAAe,EAAG4C,EAAc33tB,EAAMtd,OAAQqyuB,EAAe4C,EAAa5C,IAAgB,CAC/F,IAAI/uW,EAAahmX,EAAM+0tB,GACvB,GAAI/uW,IAAe,GAAK,EAAxB,CAIA,IAAI4xW,EAA2B5xW,IAAe,EAC9C,GAAI+uW,GAAgB4C,EAAc,GAC7B5C,GAAgB4C,EAAc,GAAiC,GAA5BC,EAAgC,CACpEz3uB,KAAKq3uB,qBAAuBx3tB,EAAM6qQ,SAASkqd,GAC3C,KACH,CACD,GAAI/0tB,EAAM+0tB,EAAe,KAAO,IAAM,EAClC50uB,KAAK03uB,WAAW7xW,OAEf,CACD,IAAIp2U,EAA2B,GAAbo2U,EACd8xW,OAAgB,EACY,GAA5BF,GACAE,EAAgB93tB,EAAM+0tB,EAAe,GACrCA,GAAgB,IAGhB+C,EAAiB93tB,EAAM+0tB,EAAe,IAAM,EAAM/0tB,EAAM+0tB,EAAe,GACvEA,GAAgB,GAGpB,IADA,IAAIgD,EAAgB53uB,KAAKgyuB,eAAiB2F,EACjChrrB,EAAS,EAAGA,EAAS8C,EAAa9C,IACvC3sD,KAAK03uB,WAAW13uB,KAAKiyuB,aAAa2F,EAAgBjrrB,GACzD,CAxBA,MAFG3sD,KAAK03uB,WAAW7xW,EA2BvB,CAED,OADA7lY,KAAK63uB,4DACE3N,EAAOiC,kBAAkB0D,iBAAiB7vuB,KAAKiyuB,aAAcqF,EAAqBt3uB,KAAKgyuB,eAAiBsF,EAClH,EACDnK,EAAatvuB,UAAU65uB,WAAa,SAAUr5uB,GACtC2B,KAAKgyuB,iBAAmBhyuB,KAAKiyuB,aAAa1vuB,SAC1CvC,KAAKiyuB,aAAe/H,EAAOsB,WAAW2D,wBAAwBnvuB,KAAKiyuB,eACvEjyuB,KAAKiyuB,aAAajyuB,KAAKgyuB,kBAAoB3zuB,CAC9C,EACD8uuB,EAAatvuB,UAAU05uB,sCAAwC,SAAUO,GACrE,IAAK93uB,KAAKiyuB,aAEN,OADAjyuB,KAAKiyuB,aAAe,IAAI3npB,WAAWwtpB,GAC5B,EAEX,IAAI/H,EAAa7otB,KAAKy8B,IAAI3jD,KAAKgyuB,eAAgBhyuB,KAAK8zuB,sBAGpD,GAFA9zuB,KAAKiyuB,aAAe/H,EAAOiC,kBAAkB0D,iBAAiB7vuB,KAAKiyuB,aAAcjyuB,KAAKgyuB,eAAiBjC,EAAYA,EAAY+H,GAC/H93uB,KAAKgyuB,eAAiBjC,EAClB/vuB,KAAK+3uB,sBAAuB,CAC5B,IAAK,IAAIz5uB,EAAI,EAAGA,EAAI0B,KAAK+3uB,sBAAsBx1uB,OAAQjE,IACnD0B,KAAK03uB,WAAW13uB,KAAK+3uB,sBAAsBz5uB,IAC/C0B,KAAK+3uB,2BAAwBpzuB,CAChC,CACD,OAAOoruB,CACV,EACD5C,EAAatvuB,UAAUg6uB,0DAA4D,WAC/E,IAAK,IAAIlrrB,EAAS,EAAGA,GAAU,GAAK3sD,KAAKgyuB,eAAiBrlrB,GAAU,EAAGA,IAAU,CAC7E,IAAItuD,EAAQ2B,KAAKiyuB,aAAajyuB,KAAKgyuB,eAAiBrlrB,GACpD,GAAKA,EAAS,GAAMtuD,IAAU,IAAO,IAChCsuD,EAAS,GAAMtuD,IAAU,IAAO,IAChCsuD,EAAS,GAAMtuD,IAAU,IAAO,EAGjC,OAFA2B,KAAK+3uB,sBAAwB/3uB,KAAKiyuB,aAAavnd,SAAS1qR,KAAKgyuB,eAAiBrlrB,EAAQ3sD,KAAKgyuB,qBAC3FhyuB,KAAKgyuB,gBAAkBrlrB,EAG9B,CACJ,EACMwgrB,CACV,CAlFmB,GAmFpBjD,EAAOiD,aAAeA,CApF1B,EAqFGjD,IAAWA,EAAS,CAAC,IAExB,SAAWA,IAEP,SAAWt+b,IAEP,SAAWk6a,GACP,IAAIkyB,EAAc,IAAI1tpB,WAAW,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KACjT2tpB,EAAqB,IAAI3tpB,WAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,MAGnlBw7nB,EAAO5pc,OAAS,SAAUg8d,GACtB,OAAKA,GAAmC,GAArBA,EAAW31uB,OAE1B2nuB,EAAOC,kBACCD,EAAOyC,YAAYC,mBAAmBsL,GAAalxuB,SAAS,UAG7D8+sB,EAAOqyB,aAAaD,GALpB,EAOd,EACDpyB,EAAOtmsB,OAAS,SAAUgmoB,GACtB,OAAKA,EAED0kF,EAAOC,kBACAD,EAAOyC,YAAYE,mBAAmB15lB,OAAOlsI,KAAKu+oB,EAAc,WAGhEsgE,EAAOsyB,aAAa5yF,GALpB,IAAIl7jB,WAAW,EAO7B,EACDw7nB,EAAOqyB,aAAe,SAAUD,EAAYG,GAExC,QADmB,IAAfA,IAAyBA,GAAa,IACrCH,GAAmC,GAArBA,EAAW31uB,OAC1B,MAAO,GAIX,IAHA,IAEI+1uB,EAFA5uuB,EAAMsuuB,EACNjstB,EAAS,IAAIm+sB,EAAO4H,cAEf8C,EAAe,EAAG2D,EAAWL,EAAW31uB,OAAQqyuB,EAAe2D,EAAU3D,GAAgB,EAC1FA,GAAgB2D,EAAW,GAC3BD,EAASJ,EAAWtD,IAAiB,GAAKsD,EAAWtD,EAAe,IAAM,EAAIsD,EAAWtD,EAAe,GACxG7otB,EAAOmmtB,eAAexouB,EAAK4uuB,IAAW,GAAM,KAC5CvstB,EAAOmmtB,eAAexouB,EAAK4uuB,IAAW,GAAM,KAC5CvstB,EAAOmmtB,eAAexouB,EAAK4uuB,IAAW,EAAK,KAC3CvstB,EAAOmmtB,eAAexouB,EAAe,GAAV4uuB,IAC3BA,EAAS,GAEJ1D,IAAiB2D,EAAW,GACjCD,EAASJ,EAAWtD,IAAiB,GAAKsD,EAAWtD,EAAe,IAAM,EAC1E7otB,EAAOmmtB,eAAexouB,EAAK4uuB,IAAW,GAAM,KAC5CvstB,EAAOmmtB,eAAexouB,EAAK4uuB,IAAW,GAAM,KAC5CvstB,EAAOmmtB,eAAexouB,EAAK4uuB,IAAW,EAAK,KACvCD,GACAtstB,EAAOmmtB,eA3CD,KA6CL0C,IAAiB2D,EAAW,IACjCD,EAASJ,EAAWtD,IAAiB,GACrC7otB,EAAOmmtB,eAAexouB,EAAK4uuB,IAAW,GAAM,KAC5CvstB,EAAOmmtB,eAAexouB,EAAK4uuB,IAAW,GAAM,KACxCD,IACAtstB,EAAOmmtB,eAlDD,IAmDNnmtB,EAAOmmtB,eAnDD,MAuDlB,OAAOnmtB,EAAO0mtB,iBACjB,EACD3sB,EAAOsyB,aAAe,SAAU5yF,EAAcysF,GAC1C,IAAKzsF,GAAuC,GAAvBA,EAAajjpB,OAC9B,OAAO,IAAI+nF,WAAW,GAC1B,IAAIkupB,EAAgBhzF,EAAajjpB,OAAS,EAC1C,GAAsB,IAAlBi2uB,EACA,MAAM,IAAIz3uB,MAAM,0CACO,IAAlBy3uB,EACLhzF,GAAgBizF,KACO,IAAlBD,IACLhzF,GAnEe,KAoEdysF,IACDA,EAAe,IAAI3npB,WAAWk7jB,EAAajjpB,SAG/C,IAFA,IAAIyvuB,EAAiB,EACjBzvuB,EAASijpB,EAAajjpB,OACjBjE,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK,EAAG,CAChC,IAAIg6uB,EAAUL,EAAmBzyF,EAAa/nd,WAAWn/L,KAAO,GAC3D25uB,EAAmBzyF,EAAa/nd,WAAWn/L,EAAI,KAAO,GACtD25uB,EAAmBzyF,EAAa/nd,WAAWn/L,EAAI,KAAO,EACtD25uB,EAAmBzyF,EAAa/nd,WAAWn/L,EAAI,IACpD2zuB,EAAaD,KAAqBsG,IAAW,GAAM,IACnDrG,EAAaD,KAAqBsG,IAAW,EAAK,IAClDrG,EAAaD,KAA+B,IAAVsG,CACrC,CAKD,OApFkB,IAgFd9yF,EAAa/nd,WAAWl7L,EAAS,IACjCyvuB,IAjFc,IAkFdxsF,EAAa/nd,WAAWl7L,EAAS,IACjCyvuB,IACGC,EAAavnd,SAAS,EAAGsnd,EACnC,CAzFL,EA0FYpmc,EAASk6a,SAAWl6a,EAASk6a,OAAS,CAAC,GA5FvD,EA6FcokB,EAAOt+b,WAAas+b,EAAOt+b,SAAW,CAAC,GA/FzD,EAgGGs+b,IAAWA,EAAS,CAAC,IAExB,SAAWA,IAEP,SAAWt+b,IAEP,SAAW8sc,GACPA,EAAax8d,OAAS,SAAUr8P,GAC5B,GAAa,MAATA,EACA,MAAM,IAAIre,UAAU,yDACxB,GAAqB,IAAjBqe,EAAMtd,OACN,MAAO,GAKX,IAJA,IAAIi1uB,EAAc33tB,EAAMtd,OACpBo2uB,EAAsB,IAAIzO,EAAO4H,cACjC/xX,EAAY,EACZ3wW,EAAQ,EACH9Q,EAAI,EAAGA,EAAIk5uB,EAAal5uB,GAAK,EAAG,CACrC,IAAID,OAAQ,EAERA,EADAC,GAAKk5uB,EAAc,EACV33tB,EAAMvhB,IAAM,EAEZuhB,EAAMvhB,IAAM,EAAKuhB,EAAMvhB,EAAI,GACxCq6uB,EAAoBzG,eAAgBnyX,GAAc,GAAK3wW,EAAU/Q,IAAU+Q,GAC3E2wW,EAAY1hX,GAAU,GAAK+Q,GAAS,EACtB,KAAVA,GACAupuB,EAAoBzG,eAAenyX,GACnCA,EAAY,EACZ3wW,EAAQ,GAGRA,GAAS,EAET9Q,GAAKk5uB,EAAc,GACnBmB,EAAoBzG,eAAenyX,GAAc,GAAK3wW,EAC7D,CAED,OADAupuB,EAAoBzG,eAAe,MAASsF,EAAc,GACnDmB,EAAoBlG,iBAC9B,EACDiG,EAAal5tB,OAAS,SAAUK,GAC5B,GAAqB,kBAAVA,EACP,MAAM,IAAIre,UAAU,2CACxB,GAAa,IAATqe,EACA,OAAO,IAAIyqE,WAAW,GAS1B,IARA,IAAIv+D,EAAS,IAAIu+D,WAA0B,EAAfzqE,EAAMtd,QAC9ByvuB,EAAiB,EACjB4G,EAAiB,SAAUv6uB,GAC3B0tB,EAAOimtB,KAAoB3zuB,IAAU,EACrC0tB,EAAOimtB,KAA4B,IAAR3zuB,CAC9B,EACG0hX,EAAY,EACZ3wW,EAAQ,EACH9Q,EAAI,EAAGA,EAAIuhB,EAAMtd,OAAQjE,IAAK,CACnC,IAAID,EAAQwhB,EAAM49K,WAAWn/L,GACzBD,GAAS,OACI,OAATA,GACA2zuB,IACJ5iuB,EAAQ,IAGC,GAATA,EACA2wW,EAAY1hX,GAGZu6uB,EAAgB74X,GAAa3wW,EAAU/Q,IAAW,GAAK+Q,GACvD2wW,EAAY1hX,GAAU,GAAM,GAAK+Q,GAAU,GAElC,IAATA,EACAA,EAAQ,EAERA,GAAS,EAChB,CACD,OAAO2c,EAAO2+P,SAAS,EAAGsnd,EAC7B,CAlEL,EAmEkBpmc,EAAS8sc,eAAiB9sc,EAAS8sc,aAAe,CAAC,GArEzE,EAsEcxO,EAAOt+b,WAAas+b,EAAOt+b,SAAW,CAAC,GAxEzD,EAyEGs+b,IAAWA,EAAS,CAAC,IAExB,SAAWA,IAEP,SAAWt+b,IAEP,SAAWgmc,GACPA,EAAUiH,iBAAmB,SAAU15tB,EAAK66C,GACxC,IAAIuc,EAAWp3D,EAAIs+K,WAAWzjI,GAC9B,GAAIuc,EAAW,OAAUA,EAAW,MAChC,OAAOA,EAEP,IAAIuiqB,EAAe35tB,EAAIs+K,WAAWzjI,EAAW,GAC7C,GAAI8+qB,GAAgB,OAAUA,GAAgB,MAC1C,OAAiDA,EAAe,OAA5CviqB,EAAW,OAAW,IAAnC,MAEP,MAAM,IAAIx1E,MAAM,uEAAuEyJ,OAAO+rE,EAAU,kBAAkB/rE,OAAOsuuB,EAAc,uDAE1J,EACDlH,EAAUC,eAAiB,SAAUp3B,GACjC,GAAIA,GAAa,MACb,OAAOz1sB,OAAOsxE,aAAamkoB,GAC1B,GAAIA,GAAa,QAClB,OAAOz1sB,OAAOsxE,aAAa,OAAWmkoB,EAAY,QAAa,IAAK,OAAWA,EAAY,MAAW,OAEtG,MAAM,IAAI15sB,MAAM,kDAAkDyJ,OAAOiwsB,EAAW,gCAC3F,CApBL,EAqBe7ua,EAASgmc,YAAchmc,EAASgmc,UAAY,CAAC,GAvBhE,EAwBc1H,EAAOt+b,WAAas+b,EAAOt+b,SAAW,CAAC,GA1BzD,EA2BGs+b,IAAWA,EAAS,CAAC,IAExB,SAAWA,IAEP,SAAWt+b,IAEP,SAAWmtc,GACP,IAAIC,EAAc,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC5wDD,EAAc78d,OAAS,SAAU+8d,GAE7B,IADA,IAAIhmS,EAAc,GA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E,SACvE,CAAC,iCAAkC,MACnC,CAAC,oBAAqB,QACtB,CAAC,4FAA6F,QAC9F,CAAC,yGAA0G,QAC3G,CAAC,8FAA+F,QAChG,CAAC,0BAA2B,OAC5B,CAAC,+BAAgC,QACjC,CAAC,sBAAuB,QACxB,CAAC,oBAAqB,UACtB,CAAC,eAAgB,MACjB,CAAC,YAAa,MACd,CAAC,QAAS,QACV97B,SAAQ,SAAU87B,GAClB,OAAO22f,EAAU6xO,gBAAgBxouB,EAAK,GAAIA,EAAK,GAChD,IAKD,CAEE,YACA,SACA,SACA,MACA,WACA,UACA,OACA,YACA,QACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,OACA,OACA,UACA,QACA,WACA,MACA,WACA,cACA,QACA,SACA,WACA,YACA,MACA,SACA,YACA,YACA,YACA,WACA,WACA,MACA,UACA,UACA,WACA,WACA,eACA,SACA,SACA,YACA,WACA,YACA,cACA,QACA,UACA,QACA,SACA,aACA,YACA,WACA,OACA,QACA,OACA,QACA,QACA,MACA,QACA,OACA,OACA,YACA,OACA,WACA,SACA,SACA,YACA,WACA,OACA,WACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,iBACA,QACA,OACA,SACA,UACA,UACA,aACA,WACA,MACA,kBAEA,gBACA,SACA,SACA,YACA,WACA,QACA,WACA97B,QAAQyyhB,EAAU8xO,oBAEb9xO,CACR,CAhfoBA,sBCNrB,IAAI91d,EAAM,KACNyoS,EAAW,CAAE,SAAU,MAAO,IAAK,MAEvC7zU,EAAOw0qB,QAAU,SAAsBh3qB,GAEhC4tC,IACHA,EAAM3rB,SAASx+B,cAAc,QAG/B,IAAIiuB,EAAQk8B,EAAIl8B,MAGhB,GAAI1R,KAAQ0R,EACV,OAAO1R,EAOT,IAHA,IAAI01uB,EAAY11uB,EAAKjsB,OAAO,GAAGq2B,cAAgBpK,EAAKhsB,MAAM,GAGjDhF,EAAIqnW,EAASpjW,OAAQjE,GAAK,EAAGA,IAAK,CACzC,IAAIoE,EAAOijW,EAASrnW,GAAK0mwB,EAEzB,GA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AAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,KAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,MAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,MAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,OAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,EAAU7ghB,SAASiwkB,EAAQ,QAC3BpvD,E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CA,QACA,WACA,OACA,QACA,OACA,MACA,IACA,IACA,QACA,QACA,QACA,OACA,kBACA,MACA,SACA,MACA,QACA,OACA,QACA,SACA,OACA,UACA,UACA,OACA,UACA,MACA,gBACA,WACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,QACA,UACA,YACA,OACA,QACA,OACA,SACA,gBACA,SACA,QACA,YACA,WACA,oBACA,kBACA,OACA,YACA,MACA,QACA,MACA,QACA,MACA,iBACA,WAEF,uBAAwB,CAEtB,UACA,YACA,YACA,KACA,SACA,MACA,IACA,WACA,KACA,SACA,QACA,SACA,YACA,aACA,WACA,SACA,UACA,gBACA,oBACA,YACA,UACA,mBACA,KACA,WACA,IACA,KACA,MAEF,oBAAqB,CACnB,aACA,WACA,SACA,mBACA,SACA,aACA,aACA,YACA,mBACA,kBACA,WACA,aACA,OACA,WACA,UACA,aACA,YACA,WACA,OACA,OACA,MACA,WACA,UACA,SACA,UACA,aACA,aACA,SACA,QACA,UACA,oBACA,aACA,cACA,OACA,SACA,gBACA,oBACA,gCACA,iCACA,YACA,UACA,WACA,SACA,aACA,aACA,UACA,SACA,OACA,eACA,eACA,QACA,OACA,SACA,YACA,UACA,QACA,WACA,cACA,WACA,QACA,YACA,aACA,aACA,qBACA,SACA,SACA,WACA,eACA,UACA,aACA,OACA,UACA,QACA,SACA,SACA,OACA,aACA,WACA,YACA,MACA,aACA,UACA,aACA,SACA,cACA,YACA,OACA,YACA,SACA,YACA,iBACA,UACA,eACA,UACA,gBACA,eACA,YACA,mBACA,UACA,SACA,WACA,OACA,aACA,oBACA,YACA,UACA,UACA,YACA,WACA,WACA,aACA,OACA,cACA,iBACA,QACA,UACA,YACA,gBACA,cACA,oBACA,MACA,UACA,OACA,SACA,OACA,sBACA,aACA,aACA,mBACA,UACA,cACA,SACA,aACA,WACA,kBACA,OACA,OACA,QACA,QACA,QACA,YACA,SACA,eACA,eACA,WACA,WACA,MACA,aACA,YACA,WACA,QACA,oBACA,eACA,OACA,cACA,QACA,UACA,UACA,OACA,cACA,SACA,OACA,gBACA,YACA,eAEF,eAAgB,CACd,UACA,kBACA,MACA,cACA,iBACA,aACA,UACA,eACA,UACA,WACA,cACA,MACA,IACA,IACA,cACA,IACA,MACA,IACA,KACA,SACA,cACA,wBACA,OACA,IACA,OACA,IACA,WACA,SACA,cACA,KACA,QACA,aACA,SACA,QACA,SACA,QACA,QACA,QACA,UACA,SACA,UACA,WACA,KACA,iBACA,KACA,MACA,UACA,aACA,KACA,KACA,MACA,QACA,WACA,SACA,KACA,UACA,UACA,MACA,SACA,KACA,SACA,QACA,OACA,WACA,aACA,UACA,WACA,OACA,YACA,cACA,QACA,MACA,iBACA,YACA,yBACA,aACA,QACA,aACA,QACA,UACA,MACA,SACA,wBACA,MACA,OACA,KACA,OACA,WACA,QACA,YACA,cAGJth1B,OAAOgF,KAAKs80B,GAAUh/0B,SAAQ,SAAUsuB,GACtCqmsB,EAAOrmsB,GAAG/iB,QAAUwz0B,EAAiBC,EAAS1wzB,GAC/C,IAyNDqmsB,EAAOmqH,YAAYvz0B,QAAUwz0B,EAxNX,CAEhB,MACA,QACA,OACA,MACA,OACA,QACA,QACA,OACA,QACA,UACA,MACA,MACA,OACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,SACA,KACA,UACA,YACA,MACA,OACA,YACA,QACA,OACA,QACA,OACA,QACA,UACA,KACA,QACA,OACA,SACA,aACA,aACA,WACA,QACA,UACA,OACA,KACA,OACA,SACA,QACA,OACA,SACA,MACA,OACA,SACA,MACA,WACA,YACA,iBACA,kBACA,SACA,YACA,QACA,YACA,YACA,WACA,cACA,UACA,YACA,gBACA,mBACA,SACA,MACA,UACA,cACA,aACA,SACA,cACA,OACA,eACA,YACA,UACA,eACA,eACA,aACA,kBACA,QACA,aACA,SACA,eACA,YACA,eACA,WACA,SACA,WACA,aACA,OACA,YACA,gBACA,eACA,OACA,UACA,UACA,YACA,gBACA,iBACA,kBACA,gBACA,UACA,OACA,YACA,cACA,UACA,cACA,aACA,OACA,aACA,iBACA,aACA,OACA,eACA,cACA,WACA,gBACA,YACA,UACA,QACA,aACA,QACA,OACA,aACA,UACA,aACA,aACA,QACA,OACA,YACA,iBACA,YACA,UACA,eACA,cACA,iBACA,YACA,oBACA,kBACA,QACA,iBACA,eACA,gBACA,kBACA,cACA,gBACA,gBACA,kBACA,cACA,OACA,UACA,YACA,YACA,UACA,eACA,iBACA,aACA,OACA,SACA,cACA,qBACA,SACA,mBACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,gBACA,cACA,iBACA,cACA,eACA,aACA,cACA,WACA,iBACA,oBACA,cACA,qBACA,WACA,eACA,mBACA,oBACA,iBACA,UACA,iBACA,iBACA,cACA,SACA,gBACA,eACA,eACA,aACA,aACA,UACA,oBACA,eACA,YACA,cACA,wBACA,oBAGF1M,EAAMvwyB,UAAU6yrB,OAASA,CAp5B1B,EAq5BE09G,EACJ,CA15BD9gzB,EAAOw0qB,QAAU4uB,EACjBA,EAAO1ytB,YAAc,SACrB0ytB,EAAO32D,QAAU,mCCCjB,SAASihL,EAAO5M,IACb,SAAWA,GAMVA,EAAMvwyB,UAAN,MAA2B,CACzBgwP,QAAS,CACPvmR,QAAS,aAEX2tB,OAAQ,CACN3tB,QAAS,UACTw0f,QAAQ,GAEV,iBAAkB,CAChBx0f,QAAS,mBACTgqS,MAAO,UAET,iBAAkB,CAChBhqS,QAAS,OACTgqS,MAAO,aAETj5Q,OAAQ,MACR0zC,SAAU,sCACVojwB,YAAa,QACbO,SAAU,QACV,eAAgB,CACdpo0B,QAAS,eACTgqS,MAAO,QA5BZ,EA+BE88hB,EACJ,CApCD9gzB,EAAOw0qB,QAAUk5I,EACjBA,EAAOh90B,YAAc,SACrBg90B,EAAOjhL,QAAU,mCCCjB,SAASkhL,EAAuB7M,GAC9BA,EAAMvwyB,UAAU,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ETrsQ,KAAM,CACJ39B,QAAS,gEACTgqS,MAAO,UAETr8Q,OAAQ,CACN3tB,QAAS,cACTw0f,QAAQ,GAEVg0U,WAAY,CACVxo0B,QACE,gGACFgqS,MAAO,aAETolE,QAAS,CAEP,CACEpvW,QACE,yOACF4n0B,YAAY,EACZpzU,QAAQ,GAEV,CACEx0f,QACE,2KACF4n0B,YAAY,EACZpzU,QAAQ,IAGZhxa,OAAQ,cACR/e,SAAU,CACRzkE,QAAS,gCACT4n0B,YAAY,GAEdC,YAAa,UAEhB,CApHD7hzB,EAAOw0qB,QAAU4mJ,EACjBA,EAAQ1q1B,YAAc,UACtB0q1B,EAAQ3uL,QAAU,iCCClB,SAAS4uL,EAAMva,GACbA,EAAMvwyB,UAAU8qzB,MAAQ,CACtB96jB,QAAS,OACT6oF,QACE,s0BACF40N,UAAW,CACThkkB,QAAS,cACTgqS,MAAO,YAETo+hB,SAAU,aACVr3yB,OAAQ,gBACR0zC,SAAU,mBACVojwB,YAAa,wBAEhB,CAjBD7hzB,EAAOw0qB,QAAU6mJ,EACjBA,EAAM3q1B,YAAc,QACpB2q1B,EAAM5uL,QAAU,mCCChB,SAAS6uL,EAAQxa,IACd,SAAWA,GACV,IAAI7pqB,EAAY,CAEd,MACA,MACA,OACA,MACA,MACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,UACA,QACA,QACA,cACA,OACA,SACA,QACA,SACA,iBACA,aACA,QACA,cACA,OACA,aACA,QACA,gBACA,cACA,gBACA,cACA,WACA,aACA,QACA,SACA,eACA,OACA,OACA,OACA,OACA,UACA,OACA,eACA,SACA,YACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,OACA,aACA,UACA,cACA,aACA,SACA,aACA,SACA,WACA,eACA,SACA,cACA,SACA,qBACA,gBACA,UACA,SACA,SACA,OACA,kBACA,WACA,UACA,eACA,eACA,UACA,OACA,QACA,QACA,eACA,aACA,SACA,UACA,mBACA,OACA,eACA,QACA,SACA,OACA,YACA,mBACA,OACA,kBACA,eACA,iBACA,QACA,SACA,QACA,SACA,SACA,OACA,cACA,YACA,QACA,OACA,UACA,gBACA,QACA,WACA,OACA,iBACA,eACA,kBACA,gBACA,cACA,aACA,aACA,oBACA,UACA,MACA,OACA,UACA,SACA,SACA,YACA,MACA,OACA,QACA,UACA,MACA,gBACA,gBACA,aACA,WACA,YACA,gBACA,WACA,eACA,QACA,QACA,OACA,WACA,MACA,OACA,SACA,MACA,OACA,SACA,OACA,OACA,gBACA,QACA,OACA,eACA,UACA,OACA,SACA,YACA,MACA,OACA,iBACA,MACA,OACA,QACA,oBACA,SACA,UACA,aACA,gBACA,cACA,cACA,cACA,gBACA,SACA,SACA,UACA,iBACA,aACA,mBACA,eACA,YACA,QACA,OACA,SACA,SACA,QACA,aACA,cACA,cACA,eACA,YACA,UACA,eACA,YACA,YACA,OACA,UACA,OACA,UACA,UACA,aACA,YACA,SACA,UACA,cACA,YACA,WACA,WACA,QACA,SACA,QACA,QACA,QACA,OACA,SACA,WACA,YACA,gBACA,aACA,YACA,QACA,cACA,YACA,cACA,WACA,WACA,QACA,OACA,aACA,OACA,WACA,SACA,aACA,eACA,YAmBEskrB,EAAkB,OAHtBtkrB,EAAYA,EAAUr/J,KAAI,SAAU6mE,GAClC,OAAOA,EAAStkE,QAAQ,IAAK,MAC9B,KACuCqB,KAAK,KAAO,OACpDsl0B,EAAMvwyB,UAAU+qzB,QAAUxa,EAAMvwyB,UAAU28I,OAAO,aAAc,CAAC,GAChE4zpB,EAAMvwyB,UAAU4yK,aAAa,UAAW,SAAU,CAChD1zH,SAAU,CACRz1E,QACE,oHACFw0f,QAAQ,EACRt2T,OAAQ,CACNkxK,QAAS7uW,OAAO,YAAcgh1B,EAAkB,iBAItDza,EAAMvwyB,UAAU+qzB,QAAQ3zzB,OAAOuwK,OAAS,CACtC3jL,IAAK,CAEHva,QACE,yEACFw0f,QAAQ,GAEVhxa,OAAQ,CAENxjF,QACE,8EACFw0f,QAAQ,IAGZsyU,EAAMvwyB,UAAU4yK,aAAa,UAAW,WAAY,CAClDmgoB,QAAS,CACPtp0B,QAASO,OAAO,SA7CG,C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","sources":["../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../../packages/react-router-dom/index.tsx","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.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/@azure/msal-common/src/utils/Constants.ts","../node_modules/@azure/msal-common/src/error/AuthError.ts","../node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts","../node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthError.ts","../node_modules/@azure/msal-browser/src/app/IPublicClientApplication.ts","../node_modules/@azure/msal-common/src/logger/Logger.ts","../node_modules/@azure/msal-common/src/error/ClientAuthError.ts","../node_modules/@azure/msal-common/src/utils/StringUtils.ts","../node_modules/@azure/msal-browser/src/event/EventType.ts","../node_modules/@azure/msal-browser/src/event/EventMessage.ts","../node_modules/@azure/msal-react/src/MsalContext.ts","../node_modules/@azure/msal-react/src/utils/utilities.ts","../node_modules/@azure/msal-react/src/packageMetadata.ts","../node_modules/@azure/msal-react/src/MsalProvider.tsx","../node_modules/@azure/msal-react/src/hooks/useMsal.ts","../node_modules/@azure/msal-react/src/components/withMsal.tsx","Auth/AuthConfig.js","Components/Shared/Loader/loader.js","Components/Welcome.jsx","Auth/SignUp.js","Auth/SignIn.js","Components/Shared/Loader/RegistrationLoader.js","API/CallApi.js","Components/Helpers/color.js","API/Organization/organization.js","API/EmailApi.js","API/Integrations/Integrations.js","API/Hubspot/hubspot.js","API/User/User.js","Components/Shared/ShuffleMessage/ShuffleMessage.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/html-parse-stringify/src/parse.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/react-i18next/dist/es/withTranslation.js","../node_modules/i18next-http-backend/esm/utils.js","../node_modules/i18next-http-backend/esm/request.js","../node_modules/i18next-http-backend/esm/index.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","i18n.js","Components/Shared/ShuffleMessage/MessagesHelper.js","../node_modules/@progress/kendo-react-common/dist/es/theme.js","../node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/usePropsContext.js","../node_modules/@progress/kendo-react-common/dist/es/hocs/withPropsContext.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/default-data.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-string.js","../node_modules/@telerik/kendo-intl/dist/es/error-details.js","../node_modules/@telerik/kendo-intl/dist/es/errors.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/info.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/territory.js","../node_modules/@telerik/kendo-intl/dist/es/common/constants.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/date-format-names.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/parse-range-date.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/currency.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/constants.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/first-day.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/weekend-range.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-negative-zero.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/format-currency-symbol.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/group-integer.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/is-currency-style.js","../node_modules/@telerik/kendo-intl/dist/es/common/pad.js","../node_modules/@telerik/kendo-intl/dist/es/common/round.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/standard-number-format.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/utils.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/custom-number-format.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/format-options.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/format-number.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-number.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/parse-number.js","../node_modules/@telerik/kendo-intl/dist/es/common/format-string.js","../node_modules/@telerik/kendo-intl/dist/es/dates/date-pattern.js","../node_modules/@telerik/kendo-intl/dist/es/dates/date-name-type.js","../node_modules/@telerik/kendo-intl/dist/es/dates/format-names.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-date.js","../node_modules/@telerik/kendo-intl/dist/es/dates/constants.js","../node_modules/@telerik/kendo-intl/dist/es/dates/format-date.js","../node_modules/@telerik/kendo-intl/dist/es/dates/time-utils.js","../node_modules/@telerik/kendo-intl/dist/es/dates/parse-date.js","../node_modules/@telerik/kendo-intl/dist/es/dates/split-date-format.js","../node_modules/@telerik/kendo-intl/dist/es/format.js","../node_modules/@progress/kendo-licensing/dist/index-esm.js","../node_modules/@progress/kendo-react-intl/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-labels/dist/es/messages/index.js","../node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlService.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/date-field-name.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/number-symbols.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/messages.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationService.js","../node_modules/@progress/kendo-react-intl/dist/es/globalization/GlobalizationContext.js","../node_modules/@progress/kendo-react-intl/dist/es/intlUtils.js","../node_modules/@progress/kendo-react-common/dist/es/validate-package.js","../node_modules/@progress/kendo-react-labels/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-labels/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-popup/dist/es/animation.js","../node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@progress/kendo-react-common/dist/es/contexts/ZIndexContext.js","../node_modules/@progress/kendo-popup-common/dist/es/align-point.js","../node_modules/@progress/kendo-popup-common/dist/es/align.js","../node_modules/@progress/kendo-popup-common/dist/es/collision.js","../node_modules/@progress/kendo-popup-common/dist/es/restrict-to-view.js","../node_modules/@progress/kendo-popup-common/dist/es/utils.js","../node_modules/@progress/kendo-popup-common/dist/es/owner-document.js","../node_modules/@progress/kendo-popup-common/dist/es/window.js","../node_modules/@progress/kendo-popup-common/dist/es/document.js","../node_modules/@progress/kendo-popup-common/dist/es/scrollbar-width.js","../node_modules/@progress/kendo-popup-common/dist/es/window-viewport.js","../node_modules/@progress/kendo-popup-common/dist/es/bounding-offset.js","../node_modules/@progress/kendo-popup-common/dist/es/scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset.js","../node_modules/@progress/kendo-popup-common/dist/es/element-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/position.js","../node_modules/@progress/kendo-popup-common/dist/es/parents.js","../node_modules/@progress/kendo-popup-common/dist/es/siblings.js","../node_modules/@progress/kendo-popup-common/dist/es/dom-utils.js","../node_modules/@progress/kendo-popup-common/dist/es/add-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/position-with-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/remove-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/sibling-container.js","../node_modules/@progress/kendo-popup-common/dist/es/align-element.js","../node_modules/@progress/kendo-popup-common/dist/es/position-element.js","../node_modules/@progress/kendo-react-popup/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-popup/dist/es/PopupWithoutContext.js","../node_modules/@progress/kendo-react-popup/dist/es/util.js","../node_modules/@progress/kendo-react-popup/dist/es/Popup.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListContainer.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListFilter.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/utils.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListDefaultItem.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListItem.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/List.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/VirtualScroll.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/Navigation.js","../node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/DropDownBase.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownList/DropDownList.js","../node_modules/@progress/kendo-react-buttons/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-buttons/dist/es/Button.js","Auth/AuthMiddleware.jsx","Auth/getEarlyAccess.js","Auth/VerifyAccount.js","API/Project/project.js","Components/Helpers/DisplayConfig/DisplayConfig.js","API/Display/Display.js","Components/Display/Components/utils.js","Context/Display/Components/ComponentsContextEvents.js","Context/Display/Components/ComponentsReducer.js","Context/Display/Components/ComponentsContext.jsx","Hooks/Display/useComponents.jsx","Components/Helpers/Labels/EntityLabel.js","Hooks/Display/utils.js","Context/Display/ComponentProperties/ComponentsPropertiesEvents.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/v4.js","Context/Display/ComponentProperties/utils.js","Context/Display/ComponentProperties/ComponentPropertiesReducer.js","Context/Display/ComponentProperties/ComponentPropertiesContext.jsx","Context/Display/Pages/PagesContextEvents.js","Context/Display/Pages/PagesReducer.js","Context/Display/Pages/PagesContext.jsx","Components/Display/utils.js","Hooks/Display/usePages.jsx","Hooks/Display/useComponentProperties.jsx","Context/PropStore/PropStoreContext.js","Hooks/PropStore/usePropsStore.jsx","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripNavigationItem.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripNavigation.js","../node_modules/@progress/kendo-react-common/dist/es/noop.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/@progress/kendo-react-animation/dist/es/util.js","../node_modules/@progress/kendo-react-animation/dist/es/AnimationChild.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@progress/kendo-react-animation/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-animation/dist/es/Animation.js","../node_modules/@progress/kendo-react-animation/dist/es/Fade.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripContent.js","../node_modules/@progress/kendo-react-layout/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStrip.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripTab.js","../node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDir.js","../node_modules/@progress/kendo-react-inputs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-inputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-intl/dist/es/hooks/useLocalization.js","../node_modules/@progress/kendo-react-inputs/dist/es/checkbox/Checkbox.js","Components/Shared/Edit/Scrollable.jsx","Components/Display/EditComponentForm/ComponentToolbar/DropdownRenderers.jsx","Components/Display/EditComponentForm/ComponentToolbar/utils.js","Components/Helpers/DateLakeStorage.js","Components/Display/EditComponentForm/ComponentToolbar/RuntimeConfigPageHeading.jsx","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/itemsIdsUtils.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItem.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/prepareInputItemsForInternalWork.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/getNewItemIdUponKeyboardNavigation.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/consts.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/misc.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemLink.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemArrow.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemInternal.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemInternalsList.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/DirectionHolder.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/MouseOverHandler.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/Menu.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/hoverDelay.js","Components/Display/EditComponentForm/ComponentToolbar/ExtraOptionsMenu.jsx","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogTitleBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogActionsBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-dialogs/dist/es/constants.js","../node_modules/@progress/kendo-react-dialogs/dist/es/utils.js","../node_modules/@progress/kendo-react-dialogs/dist/es/Dialog.js","Components/Shared/ConfirmationWithContext/ConfirmationDialog.jsx","Components/Shared/ConfirmationWithContext/ConfirmationContext.jsx","Components/Shared/ConfirmationWithContext/useConfirmationDialog.jsx","Components/Display/EditComponentForm/ComponentToolbar/ComponentToolbar.jsx","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/SearchBar.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ClearButton.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/ComboBox/ComboBox.js","Components/Display/ActionTable/ActionForm/constants.js","Components/Display/ActionTable/ActionForm/utils.js","Components/Shared/IconPicker/IconPicker.js","Components/Display/ActionTable/ActionForm/ActionForm.jsx","Components/Display/ActionTable/CreateActionDialog/CreateActionDialog.jsx","../node_modules/@progress/kendo-react-common/dist/es/constants/index.js","../node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-common/dist/es/fieldList.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/constants.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/utils.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/TableKeyboardNavigation.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/constants.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/utils.js","../node_modules/@progress/kendo-react-common/dist/es/hasRelativeStackingContext.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/ColumnProps.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/utils/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/CommonDragLogic.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnResize.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/TableKeyboardNavigationContext.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/hooks.js","../node_modules/@progress/kendo-react-data-tools/dist/es/messages/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderThElement.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/FilterRow.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/Header.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderCell.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/SortSettings.js","../node_modules/@progress/kendo-draggable-common/dist/es/drag-n-drop.js","../node_modules/@progress/kendo-draggable-common/dist/es/algorithms/intersect.js","../node_modules/@progress/kendo-draggable-common/dist/es/utils/index.js","../node_modules/@progress/kendo-draggable-common/dist/es/auto-scroll.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useInheritedState.js","../node_modules/@progress/kendo-react-common/dist/es/drag-n-drop/context/index.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDraggable.js","../node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnResizer.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnDraggable.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderRow.js","../node_modules/@progress/kendo-react-data-tools/dist/es/virtualization/columns.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/TableSelection.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/DropClue.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/DragClue.js","../node_modules/@progress/kendo-react-treelist/dist/es/utils/index.js","../node_modules/@progress/kendo-react-common/dist/es/treeDataOperations.js","../node_modules/@progress/kendo-react-treelist/dist/es/utils/data-operations.js","../node_modules/@progress/kendo-react-treelist/dist/es/messages/index.js","../node_modules/@progress/kendo-react-intl/dist/es/hooks/useInternationalization.js","../node_modules/@progress/kendo-react-treelist/dist/es/cells/TreeListCell.js","../node_modules/@progress/kendo-react-treelist/dist/es/constants/index.js","../node_modules/@progress/kendo-react-treelist/dist/es/TreeListNoRecords.js","../node_modules/@progress/kendo-react-treelist/dist/es/rows/TreeListRow.js","../node_modules/@progress/kendo-react-treelist/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-treelist/dist/es/TreeList.js","../node_modules/@progress/kendo-react-treelist/dist/es/rows/TreeListDraggableRow.js","Components/Display/ActionTable/TreeList/Cells/AddCell.jsx","Components/Display/ActionTable/TreeList/Cells/DeleteCell.jsx","Components/Display/ActionTable/utils.js","Components/Display/ActionTable/TreeList/Cells/NameCell.jsx","Components/Display/ActionTable/TreeList/utils.js","Components/Display/ActionTable/TreeList/Cells/TargetCell.jsx","Components/Display/ActionTable/TreeList/Cells/IdCell.jsx","Components/Display/ActionTable/TreeList/Cells/NormalCell.jsx","Components/Display/ActionTable/TreeList/Cells/ShowCell.jsx","Components/Display/ActionTable/TreeList/ActionTableTreeList.jsx","Components/Display/ActionTable/UpdateActionDialog/UpdateActionDialog.jsx","Components/Shared/Skeleton/Skeleton.jsx","API/Attribute/Attribute.js","Components/Display/ActionTable/ActionTable.jsx","Components/Display/Shared/ComponentFormSkeleton.jsx","Hooks/Misc/useInternalUserCheck.jsx","Renderers/GlobalReducer.js","Renderers/GlobalContext.js","Components/Shared/Loader/InnerLoader.js","Components/OrganizationSettings/LanguagesMap.js","../node_modules/universal-cookie/es6/utils.js","../node_modules/universal-cookie/es6/Cookies.js","../node_modules/universal-cookie/es6/index.js","Components/Display/Alice.jsx","Components/Entities/GenericTranslationDialog.jsx","Components/Display/EditComponentForm/GroupHeading.jsx","../node_modules/@progress/kendo-react-common/dist/es/browser-support.service.js","../node_modules/@progress/kendo-react-common/dist/es/scrollbarWidth.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerNumericButtons.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerInput.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerPageSizes.js","../node_modules/@progress/kendo-react-data-tools/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/Pager.js","../node_modules/@progress/kendo-react-grid/dist/es/GridColumn.js","../node_modules/@progress/kendo-react-grid/dist/es/utils/index.js","../node_modules/@progress/kendo-react-grid/dist/es/messages/index.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridSelectionCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridHierarchyCell.js","../node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/utils/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/NumericTextBox.js","../node_modules/@progress/kendo-date-math/dist/es/clone-date.js","../node_modules/@progress/kendo-date-math/dist/es/adjust-dst.js","../node_modules/@progress/kendo-date-math/dist/es/create-date.js","../node_modules/@progress/kendo-date-math/dist/es/get-date.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useAsyncFocusBlur.js","../node_modules/@progress/kendo-react-common/dist/es/hocs/AsyncFocusBlur.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/package-metadata.js","../node_modules/@progress/kendo-date-math/dist/es/is-equal.js","../node_modules/@progress/kendo-date-math/dist/es/add-days.js","../node_modules/@progress/kendo-date-math/dist/es/last-day-of-month.js","../node_modules/@progress/kendo-date-math/dist/es/add-months.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/mask.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/kendo-date.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/SelectionRange.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/models/TimePart.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/defaults.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/DateInput.js","../node_modules/@progress/kendo-date-math/dist/es/is-equal-date.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/Virtualization.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/RowHeightService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/ScrollerService.js","../node_modules/@progress/kendo-date-math/dist/es/day.enum.js","../node_modules/@progress/kendo-date-math/dist/es/direction.enum.js","../node_modules/@progress/kendo-date-math/dist/es/day-of-week.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/CalendarViewEnum.js","../node_modules/@progress/kendo-date-math/dist/es/week-in-year.js","../node_modules/@progress/kendo-date-math/dist/es/prev-day-of-week.js","../node_modules/@progress/kendo-date-math/dist/es/constants.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarCell.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarWeekCell.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/WeekNamesService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/View.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarHeaderTitle.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Header.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/TodayCommand.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/ViewList.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarNavigationItem.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/NavigationAction.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/CenturyViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Navigation.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DOMService.js","../node_modules/@progress/kendo-date-math/dist/es/set-year.js","../node_modules/@progress/kendo-date-math/dist/es/add-years.js","../node_modules/@progress/kendo-date-math/dist/es/add-decades.js","../node_modules/@progress/kendo-date-math/dist/es/add-centuries.js","../node_modules/@progress/kendo-date-math/dist/es/normalize-year.js","../node_modules/@progress/kendo-date-math/dist/es/first-decade-of-century.js","../node_modules/@progress/kendo-date-math/dist/es/last-decade-of-century.js","../node_modules/@progress/kendo-date-math/dist/es/first-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-centuries.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DecadeViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/MonthViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/YearViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/BusViewService.js","../node_modules/@progress/kendo-date-math/dist/es/last-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-decades.js","../node_modules/@progress/kendo-date-math/dist/es/add-weeks.js","../node_modules/@progress/kendo-date-math/dist/es/first-day-of-month.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-months.js","../node_modules/@progress/kendo-date-math/dist/es/set-month.js","../node_modules/@progress/kendo-date-math/dist/es/first-month-of-year.js","../node_modules/@progress/kendo-date-math/dist/es/last-month-of-year.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-years.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/NavigationService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/ScrollSyncService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Calendar.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/ToggleButton.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/common/PickerWrap.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/hooks/usePickerFloatingLabel.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/DatePicker.js","../node_modules/@progress/kendo-react-grid/dist/es/constants/index.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridEditCell.js","../node_modules/@progress/kendo-react-grid/dist/es/header/Header.js","../node_modules/@progress/kendo-react-grid/dist/es/interfaces/GridSortSettings.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResizer.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnDraggable.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuWrapper.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderCell.js","../node_modules/@progress/kendo-react-grid/dist/es/header/HeaderRow.js","../node_modules/@progress/kendo-react-inputs/dist/es/input/Input.js","../node_modules/@progress/kendo-react-grid/dist/es/filterCommon.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridFilterCell.js","../node_modules/@progress/kendo-react-grid/dist/es/header/FilterRow.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/GroupingIndicator.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GroupPanel.js","../node_modules/@progress/kendo-react-grid/dist/es/footer/Footer.js","../node_modules/@progress/kendo-react-grid/dist/es/VirtualScroll.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResize.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/CommonDragLogic.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridGroupCell.js","../node_modules/@progress/kendo-react-grid/dist/es/rows/GridRow.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderSelectionCell.js","../node_modules/@progress/kendo-react-grid/dist/es/GridNoRecords.js","../node_modules/@progress/kendo-react-grid/dist/es/footer/FooterRow.js","../node_modules/@progress/kendo-react-grid/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridDetailCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridDetailHierarchyCell.js","../node_modules/@progress/kendo-react-grid/dist/es/Grid.js","../node_modules/@progress/kendo-react-grid/dist/es/paging/GridPagerSettings.js","../node_modules/@progress/kendo-react-inputs/dist/es/switch/Switch.js","Components/Display/AttributeTable/Grid/Cells/HyperlinkCell.jsx","Components/Display/AttributeTable/Grid/Cells/TargetCell.jsx","Components/Display/AttributeTable/Grid/Cells/TooltipCell.jsx","Components/Display/AttributeTable/Grid/Row/DraggableRow.jsx","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDroppable.js","Components/Display/AttributeTable/Grid/Cells/IdCell.jsx","Components/Display/AttributeTable/utils.js","Components/Display/AttributeTable/Grid/Cells/NormalCell.jsx","Components/Attributes/AttributeTypes.js","Components/Display/AttributeTable/Grid/Cells/AttributeType.jsx","Components/Display/AttributeTable/Grid/Cells/GroupCell.jsx","Components/Display/AttributeTable/Grid/Cells/ColorFormatting.jsx","Components/Display/AttributeTable/Grid/AttributeTableGrid.jsx","../node_modules/@progress/kendo-react-common/dist/es/hooks/useCollection.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useControlledState.js","../node_modules/@progress/kendo-react-common/dist/es/drag-n-drop/index.js","API/Recommendation/DisplayRecommendation.js","Components/Display/AttributeTable/ComponentAttributeToolbar.jsx","Components/Display/AttributeTable/SelectAttributesDialog/SelectAttributesDialog.jsx","Components/Display/AttributeTable/SyncAttributeDialog/SyncAttributeDialog.jsx","Components/Display/AttributeTable/AttributeTable.jsx","Components/Display/EditComponentForm/Table.jsx","Components/Display/EditComponentForm/Cards.jsx","Components/Display/EditComponentForm/CalendarComponents/MappingAttributes.jsx","Components/Display/EditComponentForm/CalendarComponents/EventActions.jsx","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/selection-reducer.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useMouse.js","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/focus-reducer.js","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/data-reducer.js","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/ChipList.js","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/Chip.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/TagList.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/settings.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/MultiSelect.js","Components/Display/EditComponentForm/CalendarComponents/MultiSelectItemWithCheckbox.jsx","Components/Display/EditComponentForm/CalendarComponents/WorkWeekMultiSelect.jsx","Components/Display/EditComponentForm/Calendar.jsx","Components/Display/EditComponentForm/List.jsx","Components/Display/EditComponentForm/SplitView.jsx","Components/Display/EditComponentForm/Kanban.jsx","Components/Display/EditComponentForm/Summary.jsx","Components/Display/EditComponentForm/ProgressBar.jsx","Components/Display/FormBuilder/Toolbar.jsx","Components/Display/FormBuilder/utils.js","Components/Display/FormBuilder/Sections/CreateSection.jsx","../node_modules/@progress/kendo-react-editor/dist/es/messages/index.js","Components/Display/FormBuilder/Steppers/CreateStep.jsx","Components/Display/FormBuilder/Columns/Column.jsx","Components/Display/FormBuilder/Columns/ColumnHyperlink.jsx","Components/Display/FormBuilder/Columns/ColumnColorFormatting.jsx","Components/Display/FormBuilder/Columns/ColumnHeader.jsx","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/orderedmap/dist/index.js","../node_modules/prosemirror-model/dist/index.js","../node_modules/prosemirror-transform/dist/index.js","../node_modules/prosemirror-state/dist/index.js","../node_modules/@progress/kendo-editor-common/dist/es/config/constants.js","../node_modules/@progress/kendo-editor-common/dist/es/source.js","../node_modules/@progress/kendo-editor-common/node_modules/tslib/tslib.es6.js","../node_modules/@progress/kendo-editor-common/dist/es/utils.js","../node_modules/@progress/kendo-editor-common/dist/es/mark.js","../node_modules/@progress/kendo-editor-common/dist/es/inline-style.js","../node_modules/@progress/kendo-editor-common/dist/es/link.js","../node_modules/@progress/kendo-editor-common/dist/es/blockNode.js","../node_modules/@progress/kendo-editor-common/dist/es/align.js","../node_modules/prosemirror-schema-list/dist/index.js","../node_modules/@progress/kendo-editor-common/dist/es/config/list-settings.js","../node_modules/@progress/kendo-editor-common/dist/es/config/indent-rules.js","../node_modules/@progress/kendo-editor-common/dist/es/indent.js","../node_modules/prosemirror-commands/dist/index.js","../node_modules/@progress/kendo-editor-common/dist/es/lists.js","../node_modules/w3c-keyname/index.es.js","../node_modules/@progress/kendo-editor-common/dist/es/config/align-rules.js","../node_modules/prosemirror-keymap/dist/index.js","../node_modules/prosemirror-view/dist/index.js","../node_modules/prosemirror-tables-ts/src/tablemap.js","../node_modules/prosemirror-tables-ts/src/schema.js","../node_modules/prosemirror-tables-ts/src/util.js","../node_modules/prosemirror-tables-ts/src/cellselection.js","../node_modules/prosemirror-tables-ts/src/copypaste.js","../node_modules/prosemirror-tables-ts/src/input.js","../node_modules/prosemirror-tables-ts/src/fixtables.js","../node_modules/prosemirror-tables-ts/src/commands.js","../node_modules/prosemirror-tables-ts/src/tableview.js","../node_modules/prosemirror-tables-ts/src/columnresizing.js","../node_modules/prosemirror-tables-ts/src/index.js","../node_modules/@progress/kendo-editor-common/dist/es/config/schema.js","../node_modules/@progress/kendo-editor-common/dist/es/config/commands.js","../node_modules/@progress/kendo-editor-common/dist/es/listConvert.js","../node_modules/@progress/kendo-editor-common/dist/es/config/keymap.js","../node_modules/@progress/kendo-editor-common/dist/es/paste.js","../node_modules/@progress/kendo-editor-common/dist/es/find-replace.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/spaces-fix.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/highlight.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/resize-utils.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/image-resize.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/caret-color.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/table-view.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/utils.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/column-resize.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/table-resize.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/row-resize.js","../node_modules/prosemirror-dropcursor/dist/index.js","../node_modules/prosemirror-gapcursor/dist/index.js","../node_modules/rope-sequence/dist/index.es.js","../node_modules/prosemirror-history/dist/index.js","../node_modules/prosemirror-inputrules/dist/index.js","../node_modules/@progress/kendo-editor-common/dist/es/table.js","../node_modules/@progress/kendo-react-editor/dist/es/config/toolsSettings.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/utils.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertTable/popup.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertTable/popupGrid.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertTable/tool.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/align.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/fontStyle.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/Picker.js","../node_modules/@progress/kendo-react-common/dist/es/focus.js","../node_modules/@progress/kendo-react-inputs/dist/es/slider/SliderLabel.js","../node_modules/@progress/kendo-react-inputs/dist/es/slider/Slider.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/misc.js","../node_modules/@progress/kendo-drawing/dist/es/common/class.js","../node_modules/@progress/kendo-drawing/dist/es/common/support.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/named-colors.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/parse-color.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/color.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-parser.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-cache.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/HexInput.js","../node_modules/@progress/kendo-react-labels/dist/es/Label.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorInput.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorContrastLabels.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/svg-calc.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorContrastSvg.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorGradient.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-palette.service.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/models/palette-presets.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPalette.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPicker.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/applyColor.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/formatBlock.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/proseMirrorTool.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/history.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/indent.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/inlineFormat.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/insertLink.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/insertImage.js","../node_modules/@progress/kendo-react-editor/dist/es/utils/props-key.js","../node_modules/@progress/kendo-react-dialogs/dist/es/StageEnum.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/viewHtml.js","../node_modules/@progress/kendo-react-dialogs/dist/es/WindowTitlebar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/WindowResizeHandlers.js","../node_modules/@progress/kendo-react-dialogs/dist/es/MiddleLayerOptimization.js","../node_modules/@progress/kendo-react-dialogs/dist/es/WindowActionsBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/Window.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/FindReplace.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/main.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertImage.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertLink.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/lists.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/outdent.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/tableEdit.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/unlink.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/viewHtml.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/print.js","../node_modules/@progress/kendo-drawing/dist/es/util/defined.js","../node_modules/@progress/kendo-drawing/dist/es/util/constants.js","../node_modules/@progress/kendo-drawing/dist/es/util/rad.js","../node_modules/@progress/kendo-drawing/dist/es/util/round.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/matrix.js","../node_modules/@progress/kendo-drawing/dist/es/core/has-observers.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-accessors.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/to-matrix.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/size.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/rect.js","../node_modules/@progress/kendo-drawing/dist/es/util/deg.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/constants.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close-or-less.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/ellipse-extreme-angles.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transformation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transform.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/arc.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersection.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/circle.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/utils.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/ttf.js","../node_modules/@progress/pako-esm/dist/pako-esm5.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/deflate.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-utf.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-base64.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/core.js","../node_modules/@progress/kendo-drawing/dist/es/util/create-promise.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/lru-cache.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/util.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/text-metrics.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/measure-text.js","../node_modules/@progress/kendo-drawing/dist/es/util/arabic-to-roman.js","../node_modules/@progress/kendo-drawing/dist/es/util/merge-sort.js","../node_modules/@progress/kendo-drawing/dist/es/core/options-store.js","../node_modules/@progress/kendo-drawing/dist/es/util/definition-id.js","../node_modules/@progress/kendo-drawing/dist/es/util/is-transparent.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/element.js","../node_modules/@progress/kendo-drawing/dist/es/util/value-or-default.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/paintable.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-points.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/text.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/traversable.js","../node_modules/@progress/kendo-drawing/dist/es/util/append.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-clippend-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/group.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/geometry-elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/is-out-of-end-point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/calculate-curve-at.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/to-cubic-polynomial.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/complex-number.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/solve-cubic-equation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/has-roots-in-range.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/segment.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/curve-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/util/last.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/points-to-curve.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/measurable.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/shape-map.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/parse-path.js","../node_modules/@progress/kendo-drawing/dist/es/util/limit-value.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/path.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-geometry.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/image.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/stops-array.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-options.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient-stop.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/linear-gradient.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/circle.js","../node_modules/@progress/kendo-drawing/dist/es/html/core.js","../node_modules/@progress/kendo-drawing/dist/es/common/template.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/radial-gradient.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/drawing.js","../node_modules/@progress/kendo-file-saver/dist/es/save-as.js","../node_modules/@progress/kendo-file-saver/dist/es/base64.js","../node_modules/@progress/kendo-react-pdf/dist/es/KendoDrawingAdapter.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/pdf.js","../node_modules/@progress/kendo-react-pdf/dist/es/savePDF.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/selectAll.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/cleanFormatting.js","../node_modules/@progress/kendo-editor-common/dist/es/cleanFormatting.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/findReplace.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/ButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/popup.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButton.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/main.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/navigation.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/lists-styled.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarItem.js","../node_modules/@progress/kendo-react-editor/dist/es/utils/index.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarSeparator.js","../node_modules/@progress/kendo-react-buttons/dist/es/util.js","../node_modules/@progress/kendo-react-buttons/dist/es/ButtonGroup.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/Toolbar.js","../node_modules/@progress/kendo-react-editor/dist/es/config/defaultStyles.js","../node_modules/@progress/kendo-react-editor/dist/es/config/shortcuts.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/index.js","../node_modules/@progress/kendo-react-editor/dist/es/utils/controlled-value.js","../node_modules/@progress/kendo-react-editor/dist/es/utils/browser-detection.js","../node_modules/@progress/kendo-react-editor/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-editor/dist/es/Editor.js","Components/Display/FormBuilder/Controls/ComponentMaps.jsx","Components/Display/FormBuilder/Controls/Controls.jsx","Components/Display/FormBuilder/Columns/ColumnContents.jsx","Components/Display/FormBuilder/Sections/SectionColumns.jsx","Components/Display/FormBuilder/Sections/SectionActions.jsx","Components/Display/FormBuilder/Sections/SectionHeader.jsx","Components/Display/FormBuilder/Sections/Sections.jsx","Components/Display/FormBuilder/Steppers/Layout.jsx","Components/Display/FormBuilder/Steppers/StepLayout.jsx","Components/Display/FormBuilder/Dialogs/EditStepDialog.jsx","Components/Shared/Loader/OverlayLoader.js","Components/Shared/Remove/RemoveDialog.js","Components/Display/FormBuilder/Dialogs/RemoveStepDialog.jsx","Components/Display/FormBuilder/Steppers/StepActions.js","Components/Display/FormBuilder/Steppers/Step.jsx","Components/Display/FormBuilder/Steppers/Steps.jsx","Components/Shared/Error/ErrorMessage.jsx","Components/Display/FormBuilder/Dialogs/EditFormActionDialog.jsx","Components/Display/FormBuilder/Steppers/FormActions.jsx","Components/Display/FormBuilder/AttributeFormBuilder.jsx","Components/Display/EditComponentForm/View.jsx","Components/Display/EditComponentForm/ReferenceTable/Cells/DropdownCell.jsx","Components/Display/EditComponentForm/ReferenceTable/Cells/DeleteCell.jsx","Components/Display/EditComponentForm/ReferenceTable/Cells/ShowCell.jsx","Components/Display/EditComponentForm/ReferenceTable/Cells/IdCell.jsx","Components/Display/EditComponentForm/ReferenceTable/utils.js","Components/Display/EditComponentForm/ReferenceTable/ReferenceTable.jsx","Components/Helpers/Schema/Schema.js","API/Entity/Entity.js","Components/Display/EditComponentForm/Reference.jsx","Components/Display/EditComponentForm/History.jsx","Components/Display/EditComponentForm/Discussion.jsx","Components/Display/EditComponentForm/Tab.jsx","Components/Display/EditComponentForm/TabContainer/Cell/IdCell.jsx","Components/Display/EditComponentForm/TabContainer/EditTabDialog.jsx","Components/Display/EditComponentForm/TabContainer/ChildrenTabManagementGrid.jsx","Components/Display/EditComponentForm/TabContainer/utils.js","Components/Display/EditComponentForm/TabContainer/CreateTabsDialog.jsx","Components/Display/EditComponentForm/TabContainer.jsx","Components/Display/EditComponentForm/SpecificHeading.jsx","Components/Display/EditComponentForm/StackedSection.jsx","Components/Display/EditComponentForm/Form.jsx","../node_modules/@progress/kendo-react-upload/dist/es/interfaces/UploadFileStatus.js","../node_modules/@progress/kendo-react-upload/dist/es/messages/index.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/utils.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListActionButton.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListSingleItem.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListMultiItem.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListGroup.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadList.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadInput.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadAddButton.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadActionButtons.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadStatus.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadDropZone.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadUI.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadNavigation.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/stateUtils.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/connectionUtils.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/validationUtils.js","../node_modules/@progress/kendo-react-upload/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-upload/dist/es/Upload.js","Components/Display/EditComponentForm/Content/InsertImage/insertImageDialog.jsx","Components/Display/EditComponentForm/Content/InsertImage/insertImageTool.jsx","Components/Display/EditComponentForm/Content.jsx","Components/Display/EditComponentForm/GanttChartComponents/DependentProperty.jsx","Components/Display/EditComponentForm/GanttChartComponents/MappingAttributesForGanntChart.jsx","Components/Display/EditComponentForm/GanttChartComponents/WorkProperty.jsx","Components/Display/EditComponentForm/GanttChartComponents/DurationProperty.jsx","Components/Display/EditComponentForm/GanttChartComponents/ProgressProperty.jsx","Components/Display/EditComponentForm/GanttChart.jsx","Components/Display/EditComponentForm/SplitSection.jsx","Components/Display/EditComponentForm/EditComponent.jsx","Components/Display/RuntimeConfigForm.js","Pages/Runtime/RuntimeConfigPage.js","Context/Portal/SimpleConfigReducer.js","Context/Portal/SimpleConfigContext.js","Components/Portal/SimpleConfig/General.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/@restart/hooks/esm/useTimeout.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/dequal/dist/index.mjs","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@restart/ui/esm/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@restart/ui/esm/usePopper.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/ui/esm/useClickOutside.js","../node_modules/@restart/ui/esm/useRootClose.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/ui/esm/mergeOptionsWithPopperConfig.js","../node_modules/@restart/ui/esm/Overlay.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/react-bootstrap/esm/PopoverHeader.js","../node_modules/react-bootstrap/esm/PopoverBody.js","../node_modules/react-bootstrap/esm/helpers.js","../node_modules/react-bootstrap/esm/Popover.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/Overlay.js","../node_modules/react-bootstrap/esm/useOverlayOffset.js","../node_modules/react-bootstrap/esm/OverlayTrigger.js","../node_modules/react-bootstrap/esm/Tooltip.js","API/Portal/Portal.js","Components/Portal/SimpleConfig/MenuItems.js","API/Export/ExportApi.js","Components/Helpers/Launch.js","Components/Helpers/Portal/Portal.js","Components/Portal/SimpleConfig/SimpleConfig.js","Components/Portal/RuntimeConfigPage.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/context/DrawerContext.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/DrawerItem.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/DrawerNavigation.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/Drawer.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/DrawerContent.js","Components/Drawer/SubscriptionDrawer.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/@restart/ui/esm/DropdownContext.js","../node_modules/@restart/ui/esm/DropdownMenu.js","../node_modules/@react-aria/ssr/dist/packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@restart/ui/esm/DropdownToggle.js","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/@restart/ui/esm/DropdownItem.js","../node_modules/@restart/ui/esm/Dropdown.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/react-bootstrap/esm/DropdownContext.js","../node_modules/@restart/hooks/esm/useResizeObserver.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/react-bootstrap/esm/InputGroupContext.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/react-bootstrap/esm/Dropdown.js","../node_modules/react-bootstrap/esm/ButtonGroup.js","../node_modules/@aaronhayes/react-use-hubspot-form/build/module/index.js","Components/Shared/HelpCenter/Data.js","Components/Shared/HelpCenter/Context/HelpCenterReducer.js","Components/Shared/HelpCenter/Context/HelpCenterContext.js","Components/Shared/HelpCenter/VideoArticleLists.js","Components/Shared/HelpCenter/VideoArticleBlocks.js","Components/Shared/HelpCenter/VideoArticleDetail.js","Components/Shared/HelpCenter/HubspotForms/EmailUs.js","Components/Shared/HelpCenter/HubspotForms/RequestCall.js","Components/Shared/HelpCenter/HubspotForms/SubmitIdea.js","Components/Shared/HelpCenter/HubspotForms/SubmitTicket.js","Components/Shared/HelpCenter/ContactUsDetail.js","Components/Shared/HelpCenter/ContactUsOptions.js","../node_modules/@progress/kendo-react-inputs/dist/es/rating/RatingItem.js","../node_modules/@progress/kendo-react-inputs/dist/es/rating/utils/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/rating/rating-reducer.js","../node_modules/@progress/kendo-react-inputs/dist/es/rating/Rating.js","Components/Helpers/Nodes.js","Components/Shared/SurveyDialogs/RatingDialog.js","Components/Shared/HelpCenter/SearchComponent.js","Components/Shared/HelpCenter/SearchResults.js","Components/Shared/HelpCenter/BottomSection.js","Components/Shared/HelpCenter/TopSection.js","Components/Shared/HelpCenter/HelpCenter.js","Components/Drawer/PageContainer.jsx","API/Subscription/SubscriptionHelper.js","Components/Subscription/SubscriptionPortal.js","Pages/Subscription/SubscriptionPortalPage.js","../node_modules/@progress/kendo-react-notification/dist/es/NotificationGroup.js","../node_modules/@progress/kendo-react-notification/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-notification/dist/es/Notification.js","../node_modules/react-bootstrap/esm/BreadcrumbItem.js","../node_modules/react-bootstrap/esm/Breadcrumb.js","Components/Helpers/Token.js","Components/Helpers/AzureAD.js","Components/Navigation/Theme.js","Components/Shared/organizationSelector/organizationSelector.js","Components/Helpers/miscellaneous.js","API/Generation/Generation.js","../node_modules/@progress/kendo-react-tooltip/dist/es/tooltip/utils.js","../node_modules/@progress/kendo-react-tooltip/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-tooltip/dist/es/tooltip/Tooltip.js","Components/PublishToRuntime/InProgressPublish.js","Components/PublishToRuntime/FailurePublish.js","Components/PublishToRuntime/PublishToRuntime.js","Components/PublishToRuntime/SuccessfulPublish.js","Components/Navigation/Navigation.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/CardHeaderContext.js","../node_modules/react-bootstrap/esm/CardHeader.js","../node_modules/react-bootstrap/esm/Card.js","Pages/404/OrganisationList.js","Pages/404/PageNotFound.js","Renderers/AdminRouteRender.js","Components/Dashboard/SolutionLibrary/SolutionCards.js","../node_modules/@restart/hooks/esm/useUpdateEffect.js","../node_modules/react-bootstrap/esm/CarouselCaption.js","../node_modules/react-bootstrap/esm/CarouselItem.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/Carousel.js","Components/Dashboard/SolutionLibrary/SolutionDetail.js","Components/Display/NoRecord.jsx","Components/Helpers/DisableDeleteRuntime.js","Components/Helpers/Runtime/runtime.js","Components/Shared/Subscription/UpgradeContent.js","Components/Shared/Subscription/Upgrade.js","Components/Dashboard/SolutionLibrary/UseSolutionTemplate.js","Components/Dashboard/SolutionLibrary/AppsByCategoryTagHeader.jsx","Components/Dashboard/SolutionLibrary/AllLibraryAppsByCategory.jsx","Components/Dashboard/SolutionLibrary/filter.js","Components/Dashboard/SolutionLibrary/SolutionCollection.js","Components/Dashboard/SolutionLibrary/PublishingAppToWorkspace.js","Components/Helpers/Iframe/iframe.js","Context/EntityRecommendation/sortDataInSameOrderAsCustomEntities.js","Context/EntityRecommendation/TYPES.js","Context/EntityRecommendation/EntityRecommendationReducer.js","API/Recommendation/EntityRecommendation.js","API/Payment/Payment.js","Context/EntityRecommendation/EntityRecommendationContext.js","Components/Dashboard/SolutionLibrary/Recommendation/RecommendedLibraryProject.jsx","../node_modules/@progress/kendo-react-indicators/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-indicators/dist/es/skeleton/Skeleton.js","../node_modules/@progress/kendo-react-indicators/node_modules/@progress/kendo-react-common/dist/es/validate-package.js","../node_modules/@progress/kendo-react-indicators/node_modules/@progress/kendo-react-common/dist/es/classNames.js","Components/Helpers/Labels/EntityRelationLabel.js","Components/LinkedEntities/Recommendation/sortRelations.js","Components/LinkedEntities/Recommendation/EntityRelationsRecommendation.jsx","Hooks/Recommendation/useImportSelectedRecommendationData.jsx","Components/Entities/Recommendation/RecommendationFilterMultiSelect.jsx","Components/Attributes/Fields/AttributeIcon.jsx","Components/Entities/Recommendation/EntityRecommendation.jsx","Components/Dashboard/Project/CreateProjectDialog.jsx","Components/Dashboard/SolutionLibrary/SolutionLibrary.js","Components/Dashboard/Project/WelcomeUser.js","Context/AliceGPT/AliceGPTContextEvents.js","Context/AliceGPT/utils.js","Context/AliceGPT/AliceGPTReducer.js","Constants/OpenAI.js","Context/AliceGPT/AliceGPTContext.jsx","Hooks/AliceGPT/useAliceGPT.jsx","Components/Helpers/Validators/startsWithNumber.js","Components/Dashboard/Project/AliceGPT/AliceProjectDetailsForm.jsx","API/AliceGPT/AliceGPT.js","../node_modules/react-dnd-html5-backend/src/utils/js_utils.ts","../node_modules/react-dnd-html5-backend/src/EnterLeaveCounter.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/NativeDragSource.ts","../node_modules/react-dnd-html5-backend/src/NativeTypes.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/getDataFromDataTransfer.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/nativeTypesConfig.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/index.ts","../node_modules/react-dnd-html5-backend/src/BrowserDetector.ts","../node_modules/react-dnd-html5-backend/src/MonotonicInterpolant.ts","../node_modules/react-dnd-html5-backend/src/OffsetUtils.ts","../node_modules/react-dnd-html5-backend/src/OptionsReader.ts","../node_modules/react-dnd-html5-backend/src/HTML5BackendImpl.ts","../node_modules/react-dnd-html5-backend/src/index.ts","../node_modules/redux/es/redux.js","../node_modules/@react-dnd/invariant/src/index.ts","../node_modules/dnd-core/src/utils/js_utils.ts","../node_modules/dnd-core/src/actions/dragDrop/types.ts","../node_modules/dnd-core/src/actions/dragDrop/local/setClientOffset.ts","../node_modules/dnd-core/src/actions/dragDrop/beginDrag.ts","../node_modules/dnd-core/src/actions/dragDrop/drop.ts","../node_modules/dnd-core/src/actions/dragDrop/endDrag.ts","../node_modules/dnd-core/src/utils/matchesType.ts","../node_modules/dnd-core/src/actions/dragDrop/hover.ts","../node_modules/dnd-core/src/actions/dragDrop/publishDragSource.ts","../node_modules/dnd-core/src/classes/DragDropManagerImpl.ts","../node_modules/dnd-core/src/actions/dragDrop/index.ts","../node_modules/dnd-core/src/utils/coords.ts","../node_modules/dnd-core/src/utils/dirtiness.ts","../node_modules/dnd-core/src/classes/DragDropMonitorImpl.ts","../node_modules/@react-dnd/asap/src/makeRequestCall.ts","../node_modules/@react-dnd/asap/src/AsapQueue.ts","../node_modules/@react-dnd/asap/src/RawTask.ts","../node_modules/@react-dnd/asap/src/TaskFactory.ts","../node_modules/@react-dnd/asap/src/asap.ts","../node_modules/dnd-core/src/actions/registry.ts","../node_modules/dnd-core/src/interfaces.ts","../node_modules/dnd-core/src/contracts.ts","../node_modules/dnd-core/src/utils/getNextUniqueId.ts","../node_modules/dnd-core/src/classes/HandlerRegistryImpl.ts","../node_modules/dnd-core/src/utils/equality.ts","../node_modules/dnd-core/src/reducers/dirtyHandlerIds.ts","../node_modules/dnd-core/src/reducers/dragOffset.ts","../node_modules/dnd-core/src/reducers/dragOperation.ts","../node_modules/dnd-core/src/reducers/refCount.ts","../node_modules/dnd-core/src/reducers/stateId.ts","../node_modules/dnd-core/src/reducers/index.ts","../node_modules/dnd-core/src/createDragDropManager.ts","../node_modules/react-dnd/src/core/DndContext.ts","../node_modules/react-dnd/src/core/DndProvider.tsx","../node_modules/react-dnd/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/react-dnd/src/hooks/useMonitorOutput.ts","../node_modules/react-dnd/src/hooks/useCollector.ts","../node_modules/react-dnd/src/hooks/useCollectedProps.ts","../node_modules/react-dnd/src/hooks/useOptionalFactory.ts","../node_modules/react-dnd/src/hooks/useDrop/connectors.ts","../node_modules/@react-dnd/shallowequal/src/index.ts","../node_modules/react-dnd/src/internals/isRef.ts","../node_modules/react-dnd/src/internals/wrapConnectorHooks.ts","../node_modules/react-dnd/src/internals/TargetConnector.ts","../node_modules/react-dnd/src/hooks/useDragDropManager.ts","../node_modules/react-dnd/src/internals/DropTargetMonitorImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/DropTargetImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/useRegisteredDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useAccept.ts","../node_modules/react-dnd/src/internals/registration.ts","../node_modules/react-dnd/src/hooks/useDrop/useDrop.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetMonitor.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetConnector.ts","../node_modules/react-dnd/src/hooks/useDrag/connectors.ts","../node_modules/react-dnd/src/internals/SourceConnector.ts","../node_modules/react-dnd/src/internals/DragSourceMonitorImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/DragSourceImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/useRegisteredDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragType.ts","../node_modules/react-dnd/src/hooks/useDrag/useDrag.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceMonitor.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceConnector.ts","../node_modules/@progress/kendo-data-query/dist/es/funcs.js","../node_modules/@progress/kendo-data-query/dist/es/utils.js","../node_modules/@progress/kendo-data-query/dist/es/odata.operators.js","../node_modules/@progress/kendo-data-query/dist/es/accessor.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/operators.enum.js","../node_modules/@progress/kendo-data-query/dist/es/filter-serialization.common.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/deserialization.js","../node_modules/@progress/kendo-data-query/dist/es/sorting/sort-array.operator.js","../node_modules/@progress/kendo-data-query/dist/es/transducers.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-descriptor.interface.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/aggregate.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-no-eval.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-expression.factory.js","../node_modules/@progress/kendo-data-query/dist/es/sorting/sort.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/group.operators.js","../node_modules/@progress/kendo-data-query/dist/es/array.operators.js","Components/Attributes/Fields/BulkPicklistStringDialog.jsx","Components/Attributes/Fields/PicklistStringFields.jsx","Components/Dashboard/Project/AliceGPT/EditPicklistDialog.jsx","Components/Helpers/Recommendation/AliceGPT.js","Components/Attributes/Fields/AttributeTypeField.jsx","Components/Shared/Recommendation/Error/FailedToLoadError.jsx","Components/Shared/Recommendation/AttributeTypeDropdown.jsx","Components/Dashboard/Project/AliceGPT/AliceRecommendedAttributesList.jsx","Components/Dashboard/Project/AliceGPT/variables.js","Context/FeatureFlag/FeatureFlagContext.jsx","Hooks/FeatureFlag/useFeatureFlags.jsx","Components/Dashboard/Project/AliceGPT/AliceRecommendedEntities.jsx","Context/Workspace/WorkspaceAppModelContext.jsx","Components/LinkedEntities/Field/CardinalityShapes.jsx","Components/LinkedEntities/Field/SelectedCardinality.jsx","Components/Helpers/Labels/AttributeLabel.js","Components/Shared/Recommendation/Relations/RelationCardinality.jsx","Components/Shared/Recommendation/Relations/RelationCardinalityDropdown.jsx","Components/Shared/Recommendation/Relations/RecommendedRelationCard.jsx","Components/Dashboard/Project/AliceGPT/RequestTypes.js","Components/Dashboard/Project/AliceGPT/utils.js","Components/Dashboard/Project/AliceGPT/AliceRecommendedRelations.jsx","Hooks/User/useUser.jsx","Hooks/Projects/useGetProjects.jsx","Components/Dashboard/Project/AliceGPT/EditPageConfiguration.jsx","Components/Dashboard/Project/AliceGPT/AliceGPTDialog.jsx","Hooks/Publish/usePublishApplication.jsx","Components/Dashboard/Project/AliceGPT/UpdateDisplayPages.jsx","Pages/Project/Recommendation/WorkspaceCreateProjectPage.jsx","Pages/Project/WorkspacePage.js","../node_modules/@stripe/stripe-js/dist/stripe.esm.js","Context/Pricing/Events.js","Context/Pricing/PricingReducer.jsx","Context/Pricing/PricingContext.jsx","Components/Pricing/CustomerCardList.jsx","Components/Shared/Subscription/SubscriptionInfo.js","Components/Pricing/SeatChangeInput.jsx","Components/Pricing/DowngradeDialog.jsx","Components/Pricing/BillingInformationForm.jsx","Components/Pricing/AcceptedCardTypes.jsx","Components/Pricing/NewCardForm.jsx","Components/Pricing/AddNewCardDialog.jsx","Components/Pricing/CompanyTaxInfoFields.jsx","Components/Pricing/OrderSummarySkeleton.jsx","Components/Pricing/CustomerCard.jsx","Components/Pricing/PaymentLoader.jsx","Components/Pricing/PriceChangeConfirmationForm.jsx","Components/Pricing/ComparePlanTable.jsx","../node_modules/@progress/kendo-react-animation/dist/es/Reveal.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/PanelBarItem.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/util.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/interfaces/NavigationAction.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/PanelBar.js","Components/Pricing/FAQ.jsx","Components/Pricing/EnterpriseCard.jsx","../node_modules/@progress/kendo-react-layout/dist/es/card/interfaces/Enums.js","../node_modules/@progress/kendo-react-layout/dist/es/card/Card.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardTitle.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardBody.js","../node_modules/@progress/kendo-react-tooltip/dist/es/popover/PopoverActionsBar.js","../node_modules/@progress/kendo-react-tooltip/dist/es/popover/Popover.js","Components/Pricing/ProductCard.jsx","Components/Pricing/PriceList.jsx","Components/Pricing/PriceSelector.jsx","Components/Pricing/NoAccess.jsx","Components/Pricing/OverflowError.jsx","Components/Pricing/SuccessfulChange.jsx","Components/Pricing/PricingForm.jsx","Components/NoAccess.js","Pages/404/NoAccess.js","Pages/Pricing/PricingPage.jsx","Pages/Mobileview/MobilePage.js","Components/Shared/User/UserDisplay.jsx","Components/Shared/MultiSelect/MultiSelect.jsx","Components/OrganizationSettings/UserManagement/InviteOrganizationUsers.js","Components/OrganizationSettings/UserManagement/OrganizationUsers.js","Components/Shared/Error/NoAccess.jsx","Pages/WorkspaceSettings/WorkspaceUserPage.js","Context/OrganizationSubscription/Events.js","Context/OrganizationSubscription/OrganizationSubscriptionReducer.js","Context/OrganizationSubscription/OrganizationSubscriptionContext.jsx","Components/OrganizationSettings/Invoices/Hooks/useGetInvoices.jsx","Components/OrganizationSettings/Invoices/InvoiceList.jsx","../node_modules/@progress/kendo-react-inputs/dist/es/radiobutton/RadioButton.js","Components/OrganizationSettings/CancelSubscription/CancelSubscriptionDialog.jsx","Components/Pricing/UpdateExpiryDialog.jsx","Components/OrganizationSettings/utils.js","Components/Shared/Remove/SaveDialog.js","Components/OrganizationSettings/Subscription.js","Pages/WorkspaceSettings/WorkspaceSubscriptionPage.js","Renderers/WorkspaceOrganizationRouteRender.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/SplitterPane.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/SplitterBar.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/Splitter.js","Components/Shared/Edit/EditorActions.jsx","Components/Attributes/Fields/NumericInput.jsx","Components/Attributes/Fields/NumberField.jsx","Components/Attributes/Fields/DateTimeTypeField.jsx","../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/fetch.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-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-calendars/src/timepicker/timepicker.component.js","Components/Attributes/Fields/NumberTypeField.jsx","Components/Attributes/Fields/StateFields.jsx","API/AttributeTemplate/AttributeTemplate.js","Components/Attributes/Fields/TreeDropdownHelper.jsx","Components/Attributes/AttributeTemplate/LookupSidebar.js","Components/Shared/Error/ServerError.jsx","Components/Attributes/AttributeTypePopup.js","Components/Attributes/AttributeTemplate/Lookup.js","Pages/WorkspaceSettings/WorkspacePropertyTemplatesPage.js","Components/OrganizationSettings/RecycleBin.js","Pages/WorkspaceSettings/WorkspaceRecyclebinPage.js","../node_modules/@progress/kendo-react-treeview/dist/es/utils/itemIdUtils.js","../node_modules/@progress/kendo-react-treeview/dist/es/utils/SortedPublicItemIds.js","../node_modules/@progress/kendo-react-treeview/dist/es/utils/misc.js","../node_modules/@progress/kendo-react-treeview/dist/es/utils/itemUtils.js","../node_modules/@progress/kendo-react-treeview/dist/es/utils/getItemIdUponKeyboardNavigation.js","../node_modules/@progress/kendo-react-treeview/dist/es/utils/consts.js","../node_modules/@progress/kendo-react-treeview/dist/es/TreeViewItem.js","../node_modules/@progress/kendo-react-treeview/dist/es/utils/FieldsService.js","../node_modules/@progress/kendo-react-treeview/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-treeview/dist/es/TreeView.js","Components/Display/Pages/TreeView.jsx","Components/Display/Pages/PageTypes.js","Components/Display/Pages/NewPageDialog.jsx","Components/Display/Pages/ContextMenu.jsx","Components/Display/Pages/EditPageDialog.jsx","Components/Display/Pages/DeletePageDialog.jsx","../node_modules/@progress/kendo-react-treeview/dist/es/TreeViewDragAnalyzer.js","../node_modules/@progress/kendo-react-treeview/dist/es/moveTreeViewItem.js","../node_modules/@progress/kendo-react-treeview/dist/es/TreeViewDragClue.js","Components/Display/Pages/drag-drop.js","Components/Display/Pages.js","Components/Display/Components/TreeView.jsx","Components/Display/Components/NewComponentDialog.jsx","Components/Display/Components/ContextMenu.jsx","Components/Display/Components/DeleteComponentDialog.jsx","Components/Display/Components/ResetComponentDialog.jsx","Components/Display/Components.jsx","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/result.js","Components/Display/Display.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/stream.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/parsers.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/combinators.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/masking.service.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/utils.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/MaskedTextBox.js","Components/Attributes/DummyLabel.js","Components/Attributes/Fields/RelativeDateField.jsx","Components/Attributes/Fields/BooleanDefaultValueField.jsx","Components/Display/ShowMore.jsx","Components/Shared/Loader/FormulaLoader.js","Components/Attributes/FormulaDialog/FormulaDialog.js","Components/Attributes/StatesRulesDialog.js","Components/Helpers/Organization/Organization.js","../node_modules/@progress/kendo-react-treelist/dist/es/cells/EditCells/TreeListTextEditor.js","../node_modules/@progress/kendo-react-treelist/dist/es/TreeListToolbar.js","Components/Attributes/Fields/TreeDropdown.jsx","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimeList.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DayPeriodService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/HoursService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/MinutesService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/SecondsService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DOMService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimePart.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimeSelector.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimePicker.js","Components/Attributes/Fields/CellFormatting/CellFormatingHelper.jsx","Components/Attributes/Fields/CellFormatting/Statement.jsx","Components/Attributes/Fields/CellFormatting/CellFormatingElseStatement.jsx","Components/Attributes/Fields/CellFormatting/Operators.jsx","Components/Attributes/Fields/CellFormatting/Conditions.jsx","Components/Attributes/Fields/CellFormatting/CellFormatingIfStatement.jsx","Components/Attributes/Fields/CellFormatting/CellFormating.jsx","Components/Entities/utils.js","Components/Attributes/Fields/SharedPropertyTypeField.jsx","Components/Attributes/Fields/MirrorField.jsx","Components/Attributes/AttributePropertyPanel.js","Components/Attributes/CreateAttributeDialog.js","Components/Attributes/SelectAttributeTemplate.js","Components/Attributes/AttributeRecommendation/AliceAttributeRecommendationDialog.jsx","API/SharedLookup/SharedLookup.js","Components/Attributes/EditSharedPropertyDialog.js","Components/Attributes/SelectSharedProperty.js","Components/Attributes/CreateSharedPropertyDialog.js","API/Role/Role.js","Components/Attributes/AttributeComponent.js","Components/Attributes/Attribute.js","Components/Entities/EntityPropertyPanel.js","Components/Entities/CreateEntityDialog.jsx","Components/Entities/Recommendation/AliceRecommendedAttributes.jsx","Components/Entities/Recommendation/AliceRecommendedEntitiesDialog.jsx","Components/Entities/Entities.js","Components/LinkedEntities/Field/CardinalityOptionsField.jsx","Components/LinkedEntities/utils.js","API/EntityRelations/EntityRelations.js","Components/LinkedEntities/LinkedEntitySidebar.js","Components/LinkedEntities/CreateLinkDialog.jsx","Components/LinkedEntities/Recommendation/utils.js","Components/LinkedEntities/Recommendation/AliceRelationRecommendationDialog.jsx","Components/LinkedEntities/LinkedEntity.js","Components/Portal/PortalCard.js","Components/Shared/ColorPicker/ColorPalette.js","API/Runtime/RuntimeHelper.js","Components/Portal/PortalForm.js","Components/Portal/Portal.js","Components/Portal/General/General.js","Components/Portal/Menu/MenuItems/MenuItemTreeView/MenuItemTreeView.jsx","Components/Portal/Menu/CreateMenuItemDialog/utils.js","Components/Portal/Menu/CreateMenuItemDialog/CreateMenuItemDialog.jsx","Components/Portal/Menu/MenuItems/MenuItemTreeView/utils.js","Components/Shared/Toolbar/Toolbar.js","Components/Portal/Menu/EditForms/utils.js","Components/Portal/Menu/EditForms/MenuItemForm.jsx","Components/Portal/Menu/EditForms/RecentListForm.jsx","Components/Portal/Menu/EditForms/RecentRecordsForm.jsx","Components/Portal/Menu/EditForms/EditItemForm.jsx","Components/Portal/Menu/DeleteMenuItemDialog/DeleteMenuItemDialog.jsx","Components/Portal/Menu/MenuItems.jsx","Components/Portal/Entities/Entities.js","Components/Portal/Displays/EntityConfigurationModal.js","Components/Portal/NavigationBarandLogo/NavigationBarandLogo.js","Components/Portal/Displays/ObjectsAndPages.jsx","Components/Portal/PortalDetail.js","Components/Roles/Context/RoleReducer.js","Components/Roles/Context/RoleContext.js","Components/Roles/SavingComponent.js","Components/Roles/accessMap.js","Components/Roles/EntityRights.js","Components/Roles/AttributeRights.js","Components/Roles/PageRights.js","Components/Roles/OthersRights.js","Components/Roles/RightsBasedOnEntity.js","Components/Roles/GeneralRights.js","Components/Roles/Rights.js","Components/Roles/Roles.js","Components/ProjectSettings/Export.js","Components/Artifacts/utils.js","Components/Artifacts/Artifacts.jsx","Components/Instance/CreateInstanceDialog/CONSTANTS.js","Components/Instance/CreateInstanceDialog/CreateInstanceDialog.jsx","API/Instance/Instance.js","Components/Instance/InstancesGrid/InstancesGrid.jsx","Components/Instance/InstanceManager/utils.js","Components/Instance/UpdateInstanceDialog/UpdateInstanceDialog.jsx","Components/Instance/InstanceManager/InstanceManager.jsx","Components/Planning/Image/insertImageDialog.jsx","Components/Planning/Image/insertImageTool.jsx","../node_modules/@progress/kendo-react-editor/dist/es/main.js","Components/Planning/Image/insertImagePlugin.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","../node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","../node_modules/@syncfusion/ej2-splitbuttons/src/split-button/split-button.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-inputs/src/slider/slider.js","../node_modules/@syncfusion/ej2-inputs/src/color-picker/color-picker.js","../node_modules/@syncfusion/ej2-react-inputs/src/color-picker/colorpicker.component.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/base/constant.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/base/data.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/models/swimlane-settings.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/models/card-settings.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/models/dialog-settings.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/models/columns.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/models/stacked-headers.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/models/sort-settings.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/base/css-constant.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/actions/action.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/actions/crud.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/actions/drag.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@syncfusion/ej2-notifications/src/skeleton/skeleton.js","../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.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-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/actions/dialog.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/actions/keyboard.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/actions/tooltip.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/actions/touch.js","../node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/base/mobile-layout.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/base/layout-render.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/base/virtual-layout-render.js","../node_modules/@syncfusion/ej2-kanban/src/kanban/base/kanban.js","../node_modules/@syncfusion/ej2-react-kanban/src/kanban/kanban.component.js","../node_modules/@syncfusion/ej2-react-kanban/src/kanban/columns-directive.js","Components/Shared/Popover/PopoverTooltip.js","API/Planning/Planning.js","Components/Planning/Planning.js","Components/Planning/Image/utils.js","Components/ProjectSettings/AppSettings.jsx","Pages/WorkspaceSettings/WorkspaceAppModelPage.jsx","Renderers/WorkspaceProjectRouteRender.jsx","Pages/WorkspaceSettings/WorkspaceInviteUsersPage.js","Components/Shared/FormFields/Upload.jsx","Components/ProjectSettings/DeleteProjectDialog.jsx","Components/ProjectSettings/ProjectSettingFileList.jsx","Components/ProjectSettings/utils.js","Components/ProjectSettings/ProjectSetting.jsx","Pages/WorkspaceSettings/WorkspaceProjectSettingsPage.jsx","Components/OrganizationSettings/Overview.js","Pages/WorkspaceSettings/WorkspaceOrganizationSettingPage.js","Pages/WorkspaceSettings/WorkspacePaymentPage.jsx","Components/Shared/Error/ErrorDialog.jsx","Pages/AccessStorage/AccessStorage.jsx","Pages/404/NoRoutes.js","Components/SessionExpired.jsx","Pages/Project/WorkspaceCreateAppPage.js","../node_modules/react-syntax-highlighter/dist/esm/create-element.js","../node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js","../node_modules/react-syntax-highlighter/dist/esm/highlight.js","../node_modules/react-syntax-highlighter/dist/esm/styles/prism/prism.js","../node_modules/react-syntax-highlighter/dist/esm/prism.js","../node_modules/react-syntax-highlighter/dist/esm/languages/prism/supported-languages.js","../node_modules/react-syntax-highlighter/dist/esm/styles/prism/one-dark.js","Components/Integrations/utils.js","Components/Helpers/Crypto.js","Components/Integrations/CopilotProjectDetailsForm.jsx","Components/Integrations/CreateAppForm.jsx","Pages/Integrations/CopilotForDevOps/CreateApp.jsx","Components/Planning/OrganisationPlanningSidebar.js","Components/Planning/OrganisationPlanning.js","Pages/WorkspaceSettings/WorkspaceOrganizationPlanningPage.js","App.jsx","../node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts","../node_modules/@azure/msal-common/src/error/JoseHeaderError.ts","../node_modules/@azure/msal-browser/src/crypto/CryptoOps.ts","../node_modules/@azure/msal-common/src/crypto/JoseHeader.ts","../node_modules/@azure/msal-browser/src/utils/MathUtils.ts","../node_modules/@azure/msal-browser/src/crypto/GuidGenerator.ts","../node_modules/@azure/msal-browser/src/utils/BrowserStringUtils.ts","../node_modules/@azure/msal-browser/src/encode/Base64Encode.ts","../node_modules/@azure/msal-browser/src/encode/Base64Decode.ts","../node_modules/@azure/msal-browser/src/error/BrowserAuthError.ts","../node_modules/@azure/msal-browser/src/crypto/PkceGenerator.ts","../node_modules/@azure/msal-browser/src/crypto/BrowserCrypto.ts","../node_modules/@azure/msal-browser/src/cache/DatabaseStorage.ts","../node_modules/@azure/msal-browser/src/cache/MemoryStorage.ts","../node_modules/@azure/msal-browser/src/cache/AsyncMemoryStorage.ts","../node_modules/@azure/msal-common/src/authority/AuthorityType.ts","../node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts","../node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts","../node_modules/@azure/msal-common/src/crypto/ICrypto.ts","../node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts","../node_modules/@azure/msal-common/src/error/ServerError.ts","../node_modules/@azure/msal-common/src/account/ClientInfo.ts","../node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts","../node_modules/@azure/msal-common/src/account/CcsCredential.ts","../node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts","../node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts","../node_modules/@azure/msal-common/src/request/ScopeSet.ts","../node_modules/@azure/msal-common/src/account/AuthToken.ts","../node_modules/@azure/msal-common/src/cache/CacheManager.ts","../node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts","../node_modules/@azure/msal-common/src/utils/TimeUtils.ts","../node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts","../node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts","../node_modules/@azure/msal-common/src/authority/ProtocolMode.ts","../node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts","../node_modules/@azure/msal-browser/src/cache/BrowserStorage.ts","../node_modules/@azure/msal-common/src/url/UrlString.ts","../node_modules/@azure/msal-browser/src/utils/BrowserProtocolUtils.ts","../node_modules/@azure/msal-browser/src/cache/BrowserCacheManager.ts","../node_modules/@azure/msal-common/src/packageMetadata.ts","../node_modules/@azure/msal-common/src/config/ClientConfiguration.ts","../node_modules/@azure/msal-common/src/network/INetworkModule.ts","../node_modules/@azure/msal-browser/src/network/FetchClient.ts","../node_modules/@azure/msal-browser/src/network/XhrClient.ts","../node_modules/@azure/msal-browser/src/utils/BrowserUtils.ts","../node_modules/@azure/msal-browser/src/navigation/NavigationClient.ts","../node_modules/@azure/msal-browser/src/config/Configuration.ts","../node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts","../node_modules/@azure/msal-browser/src/packageMetadata.ts","../node_modules/@azure/msal-browser/src/event/EventHandler.ts","../node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts","../node_modules/@azure/msal-common/src/network/NetworkManager.ts","../node_modules/@azure/msal-common/src/client/BaseClient.ts","../node_modules/@azure/msal-common/src/request/RequestValidator.ts","../node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts","../node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts","../node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts","../node_modules/@azure/msal-common/src/response/ResponseHandler.ts","../node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts","../node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts","../node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts","../node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts","../node_modules/@azure/msal-browser/src/error/NativeAuthError.ts","../node_modules/@azure/msal-common/src/authority/Authority.ts","../node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts","../node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts","../node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts","../node_modules/@azure/msal-browser/src/interaction_client/BaseInteractionClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/StandardInteractionClient.ts","Components/progressbar/progressbar.jsx","../node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts","../node_modules/@azure/msal-common/src/client/SilentFlowClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentCacheClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/NativeInteractionClient.ts","../node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeMessageHandler.ts","../node_modules/@azure/msal-browser/src/interaction_handler/InteractionHandler.ts","../node_modules/@azure/msal-browser/src/interaction_client/PopupClient.ts","../node_modules/@azure/msal-browser/src/interaction_handler/RedirectHandler.ts","../node_modules/@azure/msal-browser/src/interaction_client/RedirectClient.ts","../node_modules/@azure/msal-browser/src/interaction_handler/SilentHandler.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentIframeClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentRefreshClient.ts","../node_modules/@azure/msal-browser/src/cache/TokenCache.ts","../node_modules/@azure/msal-browser/src/interaction_client/HybridSpaAuthorizationCodeClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentAuthCodeClient.ts","../node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceMeasurement.ts","../node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceClient.ts","../node_modules/@azure/msal-browser/src/app/ClientApplication.ts","../node_modules/@azure/msal-browser/src/app/PublicClientApplication.ts","index.jsx","../node_modules/@stripe/react-stripe-js/dist/react-stripe.umd.js","../node_modules/abort-controller/browser.js","../node_modules/add-px-to-style/index.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/env/data.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/base64-js/index.js","../node_modules/buffer/index.js","../node_modules/classnames/index.js","../node_modules/clsx/dist/clsx.js","../node_modules/comma-separated-tokens/index.js","../node_modules/cookie/index.js","../node_modules/crypto-js/aes.js","../node_modules/crypto-js/blowfish.js","../node_modules/crypto-js/cipher-core.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-base64url.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/crypto-js/evpkdf.js","../node_modules/crypto-js/format-hex.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/index.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/crypto-js/pbkdf2.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/crypto-js/rabbit.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/ripemd160.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/sha3.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/sha512.js","../node_modules/crypto-js/tripledes.js","../node_modules/crypto-js/x64-core.js","../node_modules/deepmerge/dist/cjs.js","../node_modules/dom-css/index.js","../node_modules/events/events.js","../node_modules/fast-deep-equal/index.js","../node_modules/fast-equals/src/utils.ts","../node_modules/fast-equals/src/comparator.ts","../node_modules/fast-equals/src/arrays.ts","../node_modules/fast-equals/src/dates.ts","../node_modules/fast-equals/src/maps.ts","../node_modules/fast-equals/src/objects.ts","../node_modules/fast-equals/src/regexps.ts","../node_modules/fast-equals/src/sets.ts","../node_modules/fast-equals/src/index.ts","../node_modules/hast-util-parse-selector/index.js","../node_modules/hastscript/factory.js","../node_modules/hastscript/html.js","../node_modules/hastscript/index.js","../node_modules/ieee754/index.js","../node_modules/immutability-helper/index.js","../node_modules/invariant/browser.js","../node_modules/is-alphabetical/index.js","../node_modules/is-alphanumerical/index.js","../node_modules/is-decimal/index.js","../node_modules/is-hexadecimal/index.js","../node_modules/load-script/index.js","../node_modules/lzutf8/build/production/lzutf8.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/moment/moment.js","../node_modules/parse-entities/decode-entity.browser.js","../node_modules/parse-entities/index.js","../node_modules/performance-now/src/performance-now.coffee","../node_modules/pluralize/pluralize.js","../node_modules/prefix-style/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-information/find.js","../node_modules/property-information/html.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/normalize.js","../node_modules/raf/index.js","../node_modules/react-custom-scrollbars-2/lib/Scrollbars/defaultRenderElements.js","../node_modules/react-custom-scrollbars-2/lib/Scrollbars/index.js","../node_modules/react-custom-scrollbars-2/lib/Scrollbars/styles.js","../node_modules/react-custom-scrollbars-2/lib/index.js","../node_modules/react-custom-scrollbars-2/lib/utils/getInnerHeight.js","../node_modules/react-custom-scrollbars-2/lib/utils/getInnerWidth.js","../node_modules/react-custom-scrollbars-2/lib/utils/getScrollbarWidth.js","../node_modules/react-custom-scrollbars-2/lib/utils/isString.js","../node_modules/react-custom-scrollbars-2/lib/utils/returnFalse.js","../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.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-dom/server.browser.js","../node_modules/react-draggable/build/cjs/Draggable.js","../node_modules/react-draggable/build/cjs/DraggableCore.js","../node_modules/react-draggable/build/cjs/cjs.js","../node_modules/react-draggable/build/cjs/utils/domFns.js","../node_modules/react-draggable/build/cjs/utils/getPrefix.js","../node_modules/react-draggable/build/cjs/utils/log.js","../node_modules/react-draggable/build/cjs/utils/positionFns.js","../node_modules/react-draggable/build/cjs/utils/shims.js","../node_modules/react-draggable/node_modules/clsx/dist/clsx.m.js","../node_modules/react-fast-compare/index.js","../node_modules/react-grid-layout/build/GridItem.js","../node_modules/react-grid-layout/build/ReactGridLayout.js","../node_modules/react-grid-layout/build/ReactGridLayoutPropTypes.js","../node_modules/react-grid-layout/build/ResponsiveReactGridLayout.js","../node_modules/react-grid-layout/build/calculateUtils.js","../node_modules/react-grid-layout/build/components/WidthProvider.js","../node_modules/react-grid-layout/build/fastRGLPropsEqual.js","../node_modules/react-grid-layout/build/responsiveUtils.js","../node_modules/react-grid-layout/build/utils.js","../node_modules/react-grid-layout/index.js","../node_modules/react-player/lib/Player.js","../node_modules/react-player/lib/Preview.js","../node_modules/react-player/lib/ReactPlayer.js","../node_modules/react-player/lib/index.js","../node_modules/react-player/lib/patterns.js","../node_modules/react-player/lib/players/DailyMotion.js","../node_modules/react-player/lib/players/Facebook.js","../node_modules/react-player/lib/players/FilePlayer.js","../node_modules/react-player/lib/players/Kaltura.js","../node_modules/react-player/lib/players/Mixcloud.js","../node_modules/react-player/lib/players/SoundCloud.js","../node_modules/react-player/lib/players/Streamable.js","../node_modules/react-player/lib/players/Twitch.js","../node_modules/react-player/lib/players/Vidyard.js","../node_modules/react-player/lib/players/Vimeo.js","../node_modules/react-player/lib/players/Wistia.js","../node_modules/react-player/lib/players/YouTube.js","../node_modules/react-player/lib/players/index.js","../node_modules/react-player/lib/props.js","../node_modules/react-player/lib/utils.js","../node_modules/react-resizable/build/Resizable.js","../node_modules/react-resizable/build/ResizableBox.js","../node_modules/react-resizable/build/propTypes.js","../node_modules/react-resizable/build/utils.js","../node_modules/react-resizable/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/readable-stream/lib/internal/streams/add-abort-signal.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/compose.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/internal/streams/duplex.js","../node_modules/readable-stream/lib/internal/streams/duplexify.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/from.js","../node_modules/readable-stream/lib/internal/streams/legacy.js","../node_modules/readable-stream/lib/internal/streams/operators.js","../node_modules/readable-stream/lib/internal/streams/passthrough.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/readable-stream/lib/internal/streams/readable.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/readable-stream/lib/internal/streams/transform.js","../node_modules/readable-stream/lib/internal/streams/utils.js","../node_modules/readable-stream/lib/internal/streams/writable.js","../node_modules/readable-stream/lib/internal/validators.js","../node_modules/readable-stream/lib/ours/browser.js","../node_modules/readable-stream/lib/ours/errors.js","../node_modules/readable-stream/lib/ours/primordials.js","../node_modules/readable-stream/lib/ours/util.js","../node_modules/readable-stream/lib/stream.js","../node_modules/readable-stream/lib/stream/promises.js","../node_modules/refractor/core.js","../node_modules/refractor/index.js","../node_modules/refractor/lang/abap.js","../node_modules/refractor/lang/abnf.js","../node_modules/refractor/lang/actionscript.js","../node_modules/refractor/lang/ada.js","../node_modules/refractor/lang/agda.js","../node_modules/refractor/lang/al.js","../node_modules/refractor/lang/antlr4.js","../node_modules/refractor/lang/apacheconf.js","../node_modules/refractor/lang/apex.js","../node_modules/refractor/lang/apl.js","../node_modules/refractor/lang/applescript.js","../node_modules/refractor/lang/aql.js","../node_modules/refractor/lang/arduino.js","../node_modules/refractor/lang/arff.js","../node_modules/refractor/lang/asciidoc.js","../node_modules/refractor/lang/asm6502.js","../node_modules/refractor/lang/asmatmel.js","../node_modules/refractor/lang/aspnet.js","../node_modules/refractor/lang/autohotkey.js","../node_modules/refractor/lang/autoit.js","../node_modules/refractor/lang/avisynth.js","../node_modules/refractor/lang/avro-idl.js","../node_modules/refractor/lang/bash.js","../node_modules/refractor/lang/basic.js","../node_modules/refractor/lang/batch.js","../node_modules/refractor/lang/bbcode.js","../node_modules/refractor/lang/bicep.js","../node_modules/refractor/lang/birb.js","../node_modules/refractor/lang/bison.js","../node_modules/refractor/lang/bnf.js","../node_modules/refractor/lang/brainfuck.js","../node_modules/refractor/lang/brightscript.js","../node_modules/refractor/lang/bro.js","../node_modules/refractor/lang/bsl.js","../node_modules/refractor/lang/c.js","../node_modules/refractor/lang/cfscript.js","../node_modules/refractor/lang/chaiscript.js","../node_modules/refractor/lang/cil.js","../node_modules/refractor/lang/clike.js","../node_modules/refractor/lang/clojure.js","../node_modules/refractor/lang/cmake.js","../node_modules/refractor/lang/cobol.js","../node_modules/refractor/lang/coffeescript.js","../node_modules/refractor/lang/concurnas.js","../node_modules/refractor/lang/coq.js","../node_modules/refractor/lang/cpp.js","../node_modules/refractor/lang/crystal.js","../node_modules/refractor/lang/csharp.js","../node_modules/refractor/lang/cshtml.js","../node_modules/refractor/lang/csp.js","../node_modules/refractor/lang/css-extras.js","../node_modules/refractor/lang/css.js","../node_modules/refractor/lang/csv.js","../node_modules/refractor/lang/cypher.js","../node_modules/refractor/lang/d.js","../node_modules/refractor/lang/dart.js","../node_modules/refractor/lang/dataweave.js","../node_modules/refractor/lang/dax.js","../node_modules/refractor/lang/dhall.js","../node_modules/refractor/lang/diff.js","../node_modules/refractor/lang/django.js","../node_modules/refractor/lang/dns-zone-file.js","../node_modules/refractor/lang/docker.js","../node_modules/refractor/lang/dot.js","../node_modules/refractor/lang/ebnf.js","../node_modules/refractor/lang/editorconfig.js","../node_modules/refractor/lang/eiffel.js","../node_modules/refractor/lang/ejs.js","../node_modules/refractor/lang/elixir.js","../node_modules/refractor/lang/elm.js","../node_modules/refractor/lang/erb.js","../node_modules/refractor/lang/erlang.js","../node_modules/refractor/lang/etlua.js","../node_modules/refractor/lang/excel-formula.js","../node_modules/refractor/lang/factor.js","../node_modules/refractor/lang/false.js","../node_modules/refractor/lang/firestore-security-rules.js","../node_modules/refractor/lang/flow.js","../node_modules/refractor/lang/fortran.js","../node_modules/refractor/lang/fsharp.js","../node_modules/refractor/lang/ftl.js","../node_modules/refractor/lang/gap.js","../node_modules/refractor/lang/gcode.js","../node_modules/refractor/lang/gdscript.js","../node_modules/refractor/lang/gedcom.js","../node_modules/refractor/lang/gherkin.js","../node_modules/refractor/lang/git.js","../node_modules/refractor/lang/glsl.js","../node_modules/refractor/lang/gml.js","../node_modules/refractor/lang/gn.js","../node_modules/refractor/lang/go-module.js","../node_modules/refractor/lang/go.js","../node_modules/refractor/lang/graphql.js","../node_modules/refractor/lang/groovy.js","../node_modules/refractor/lang/haml.js","../node_modules/refractor/lang/handlebars.js","../node_modules/refractor/lang/haskell.js","../node_modules/refractor/lang/haxe.js","../node_modules/refractor/lang/hcl.js","../node_modules/refractor/lang/hlsl.js","../node_modules/refractor/lang/hoon.js","../node_modules/refractor/lang/hpkp.js","../node_modules/refractor/lang/hsts.js","../node_modules/refractor/lang/http.js","../node_modules/refractor/lang/ichigojam.js","../node_modules/refractor/lang/icon.js","../node_modules/refractor/lang/icu-message-format.js","../node_modules/refractor/lang/idris.js","../node_modules/refractor/lang/iecst.js","../node_modules/refractor/lang/ignore.js","../node_modules/refractor/lang/inform7.js","../node_modules/refractor/lang/ini.js","../node_modules/refractor/lang/io.js","../node_modules/refractor/lang/j.js","../node_modules/refractor/lang/java.js","../node_modules/refractor/lang/javadoc.js","../node_modules/refractor/lang/javadoclike.js","../node_modules/refractor/lang/javascript.js","../node_modules/refractor/lang/javastacktrace.js","../node_modules/refractor/lang/jexl.js","../node_modules/refractor/lang/jolie.js","../node_modules/refractor/lang/jq.js","../node_modules/refractor/lang/js-extras.js","../node_modules/refractor/lang/js-templates.js","../node_modules/refractor/lang/jsdoc.js","../node_modules/refractor/lang/json.js","../node_modules/refractor/lang/json5.js","../node_modules/refractor/lang/jsonp.js","../node_modules/refractor/lang/jsstacktrace.js","../node_modules/refractor/lang/jsx.js","../node_modules/refractor/lang/julia.js","../node_modules/refractor/lang/keepalived.js","../node_modules/refractor/lang/keyman.js","../node_modules/refractor/lang/kotlin.js","../node_modules/refractor/lang/kumir.js","../node_modules/refractor/lang/kusto.js","../node_modules/refractor/lang/latex.js","../node_modules/refractor/lang/latte.js","../node_modules/refractor/lang/less.js","../node_modules/refractor/lang/lilypond.js","../node_modules/refractor/lang/liquid.js","../node_modules/refractor/lang/lisp.js","../node_modules/refractor/lang/livescript.js","../node_modules/refractor/lang/llvm.js","../node_modules/refractor/lang/log.js","../node_modules/refractor/lang/lolcode.js","../node_modules/refractor/lang/lua.js","../node_modules/refractor/lang/magma.js","../node_modules/refractor/lang/makefile.js","../node_modules/refractor/lang/markdown.js","../node_modules/refractor/lang/markup-templating.js","../node_modules/refractor/lang/markup.js","../node_modules/refractor/lang/matlab.js","../node_modules/refractor/lang/maxscript.js","../node_modules/refractor/lang/mel.js","../node_modules/refractor/lang/mermaid.js","../node_modules/refractor/lang/mizar.js","../node_modules/refractor/lang/mongodb.js","../node_modules/refractor/lang/monkey.js","../node_modules/refractor/lang/moonscript.js","../node_modules/refractor/lang/n1ql.js","../node_modules/refractor/lang/n4js.js","../node_modules/refractor/lang/nand2tetris-hdl.js","../node_modules/refractor/lang/naniscript.js","../node_modules/refractor/lang/nasm.js","../node_modules/refractor/lang/neon.js","../node_modules/refractor/lang/nevod.js","../node_modules/refractor/lang/nginx.js","../node_modules/refractor/lang/nim.js","../node_modules/refractor/lang/nix.js","../node_modules/refractor/lang/nsis.js","../node_modules/refractor/lang/objectivec.js","../node_modules/refractor/lang/ocaml.js","../node_modules/refractor/lang/opencl.js","../node_modules/refractor/lang/openqasm.js","../node_modules/refractor/lang/oz.js","../node_modules/refractor/lang/parigp.js","../node_modules/refractor/lang/parser.js","../node_modules/refractor/lang/pascal.js","../node_modules/refractor/lang/pascaligo.js","../node_modules/refractor/lang/pcaxis.js","../node_modules/refractor/lang/peoplecode.js","../node_modules/refractor/lang/perl.js","../node_modules/refractor/lang/php-extras.js","../node_modules/refractor/lang/php.js","../node_modules/refractor/lang/phpdoc.js","../node_modules/refractor/lang/plsql.js","../node_modules/refractor/lang/powerquery.js","../node_modules/refractor/lang/powershell.js","../node_modules/refractor/lang/processing.js","../node_modules/refractor/lang/prolog.js","../node_modules/refractor/lang/promql.js","../node_modules/refractor/lang/properties.js","../node_modules/refractor/lang/protobuf.js","../node_modules/refractor/lang/psl.js","../node_modules/refractor/lang/pug.js","../node_modules/refractor/lang/puppet.js","../node_modules/refractor/lang/pure.js","../node_modules/refractor/lang/purebasic.js","../node_modules/refractor/lang/purescript.js","../node_modules/refractor/lang/python.js","../node_modules/refractor/lang/q.js","../node_modules/refractor/lang/qml.js","../node_modules/refractor/lang/qore.js","../node_modules/refractor/lang/qsharp.js","../node_modules/refractor/lang/r.js","../node_modules/refractor/lang/racket.js","../node_modules/refractor/lang/reason.js","../node_modules/refractor/lang/regex.js","../node_modules/refractor/lang/rego.js","../node_modules/refractor/lang/renpy.js","../node_modules/refractor/lang/rest.js","../node_modules/refractor/lang/rip.js","../node_modules/refractor/lang/roboconf.js","../node_modules/refractor/lang/robotframework.js","../node_modules/refractor/lang/ruby.js","../node_modules/refractor/lang/rust.js","../node_modules/refractor/lang/sas.js","../node_modules/refractor/lang/sass.js","../node_modules/refractor/lang/scala.js","../node_modules/refractor/lang/scheme.js","../node_modules/refractor/lang/scss.js","../node_modules/refractor/lang/shell-session.js","../node_modules/refractor/lang/smali.js","../node_modules/refractor/lang/smalltalk.js","../node_modules/refractor/lang/smarty.js","../node_modules/refractor/lang/sml.js","../node_modules/refractor/lang/solidity.js","../node_modules/refractor/lang/solution-file.js","../node_modules/refractor/lang/soy.js","../node_modules/refractor/lang/sparql.js","../node_modules/refractor/lang/splunk-spl.js","../node_modules/refractor/lang/sqf.js","../node_modules/refractor/lang/sql.js","../node_modules/refractor/lang/squirrel.js","../node_modules/refractor/lang/stan.js","../node_modules/refractor/lang/stylus.js","../node_modules/refractor/lang/swift.js","../node_modules/refractor/lang/systemd.js","../node_modules/refractor/lang/t4-cs.js","../node_modules/refractor/lang/t4-templating.js","../node_modules/refractor/lang/t4-vb.js","../node_modules/refractor/lang/tap.js","../node_modules/refractor/lang/tcl.js","../node_modules/refractor/lang/textile.js","../node_modules/refractor/lang/toml.js","../node_modules/refractor/lang/tremor.js","../node_modules/refractor/lang/tsx.js","../node_modules/refractor/lang/tt2.js","../node_modules/refractor/lang/turtle.js","../node_modules/refractor/lang/twig.js","../node_modules/refractor/lang/typescript.js","../node_modules/refractor/lang/typoscript.js","../node_modules/refractor/lang/unrealscript.js","../node_modules/refractor/lang/uorazor.js","../node_modules/refractor/lang/uri.js","../node_modules/refractor/lang/v.js","../node_modules/refractor/lang/vala.js","../node_modules/refractor/lang/vbnet.js","../node_modules/refractor/lang/velocity.js","../node_modules/refractor/lang/verilog.js","../node_modules/refractor/lang/vhdl.js","../node_modules/refractor/lang/vim.js","../node_modules/refractor/lang/visual-basic.js","../node_modules/refractor/lang/warpscript.js","../node_modules/refractor/lang/wasm.js","../node_modules/refractor/lang/web-idl.js","../node_modules/refractor/lang/wiki.js","../node_modules/refractor/lang/wolfram.js","../node_modules/refractor/lang/wren.js","../node_modules/refractor/lang/xeora.js","../node_modules/refractor/lang/xml-doc.js","../node_modules/refractor/lang/xojo.js","../node_modules/refractor/lang/xquery.js","../node_modules/refractor/lang/yaml.js","../node_modules/refractor/lang/yang.js","../node_modules/refractor/lang/zig.js","../node_modules/refractor/node_modules/prismjs/components/prism-core.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/string_decoder/node_modules/safe-buffer/index.js","../node_modules/to-camel-case/index.js","../node_modules/to-no-case/index.js","../node_modules/to-space-case/index.js","../node_modules/void-elements/index.js","../node_modules/warning/warning.js","../node_modules/xtend/immutable.js","../node_modules/@babel/runtime/helpers/AsyncGenerator.js","../node_modules/@babel/runtime/helpers/OverloadYield.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js","../node_modules/@babel/runtime/helpers/asyncIterator.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeFunction.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js","../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/startup"],"sourcesContent":["export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n };\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment extends infer LeftResult\n ? ParamParseSegment extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n ParamParseSegment extends string\n ? ParamParseSegment\n : string;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch(\n branch: RouteBranch,\n pathname: string\n): RouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n \n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nexport default function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const Constants = {\n LIBRARY_NAME: \"MSAL.JS\",\n SKU: \"msal.js.common\",\n // Prefix for all library cache entries\n CACHE_PREFIX: \"msal\",\n // default authority\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\n DEFAULT_COMMON_TENANT: \"common\",\n // ADFS String\n ADFS: \"adfs\",\n // Default AAD Instance Discovery Endpoint\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\n // Resource delimiter - used for certain cache entries\n RESOURCE_DELIM: \"|\",\n // Placeholder for non-existent account ids/objects\n NO_ACCOUNT: \"NO_ACCOUNT\",\n // Claims\n CLAIMS: \"claims\",\n // Consumer UTID\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\n // Default scopes\n OPENID_SCOPE: \"openid\",\n PROFILE_SCOPE: \"profile\",\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\n EMAIL_SCOPE: \"email\",\n // Default response type for authorization code flow\n CODE_RESPONSE_TYPE: \"code\",\n CODE_GRANT_TYPE: \"authorization_code\",\n RT_GRANT_TYPE: \"refresh_token\",\n FRAGMENT_RESPONSE_MODE: \"fragment\",\n S256_CODE_CHALLENGE_METHOD: \"S256\",\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\n AUTHORIZATION_PENDING: \"authorization_pending\",\n NOT_DEFINED: \"not_defined\",\n EMPTY_STRING: \"\",\n FORWARD_SLASH: \"/\",\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\n IMDS_VERSION: \"2020-06-01\",\n IMDS_TIMEOUT: 2000,\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\n KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"],\n TOKEN_RESPONSE_TYPE: \"token\",\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\n SHR_NONCE_VALIDITY: 240,\n};\n\nexport const OIDC_DEFAULT_SCOPES = [\n Constants.OPENID_SCOPE,\n Constants.PROFILE_SCOPE,\n Constants.OFFLINE_ACCESS_SCOPE\n];\n\nexport const OIDC_SCOPES = [\n ...OIDC_DEFAULT_SCOPES,\n Constants.EMAIL_SCOPE\n];\n\n/**\n * Request header names\n */\nexport enum HeaderNames {\n CONTENT_TYPE = \"Content-Type\",\n RETRY_AFTER = \"Retry-After\",\n CCS_HEADER = \"X-AnchorMailbox\",\n WWWAuthenticate = \"WWW-Authenticate\",\n AuthenticationInfo = \"Authentication-Info\"\n}\n\n/**\n * Persistent cache keys MSAL which stay while user is logged in.\n */\nexport enum PersistentCacheKeys {\n ID_TOKEN = \"idtoken\",\n CLIENT_INFO = \"client.info\",\n ADAL_ID_TOKEN = \"adal.idtoken\",\n ERROR = \"error\",\n ERROR_DESC = \"error.description\",\n ACTIVE_ACCOUNT = \"active-account\", // Legacy active-account cache key, use new key instead\n ACTIVE_ACCOUNT_FILTERS = \"active-account-filters\" // new cache entry for active_account for a more robust version for browser\n}\n\n/**\n * String constants related to AAD Authority\n */\nexport enum AADAuthorityConstants {\n COMMON = \"common\",\n ORGANIZATIONS = \"organizations\",\n CONSUMERS = \"consumers\"\n}\n\n/**\n * Keys in the hashParams sent by AAD Server\n */\nexport enum AADServerParamKeys {\n CLIENT_ID = \"client_id\",\n REDIRECT_URI = \"redirect_uri\",\n RESPONSE_TYPE = \"response_type\",\n RESPONSE_MODE = \"response_mode\",\n GRANT_TYPE = \"grant_type\",\n CLAIMS = \"claims\",\n SCOPE = \"scope\",\n ERROR = \"error\",\n ERROR_DESCRIPTION = \"error_description\",\n ACCESS_TOKEN = \"access_token\",\n ID_TOKEN = \"id_token\",\n REFRESH_TOKEN = \"refresh_token\",\n EXPIRES_IN = \"expires_in\",\n STATE = \"state\",\n NONCE = \"nonce\",\n PROMPT = \"prompt\",\n SESSION_STATE = \"session_state\",\n CLIENT_INFO = \"client_info\",\n CODE = \"code\",\n CODE_CHALLENGE = \"code_challenge\",\n CODE_CHALLENGE_METHOD = \"code_challenge_method\",\n CODE_VERIFIER = \"code_verifier\",\n CLIENT_REQUEST_ID = \"client-request-id\",\n X_CLIENT_SKU = \"x-client-SKU\",\n X_CLIENT_VER = \"x-client-VER\",\n X_CLIENT_OS = \"x-client-OS\",\n X_CLIENT_CPU = \"x-client-CPU\",\n X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\",\n X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\",\n X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\",\n X_APP_NAME = \"x-app-name\",\n X_APP_VER = \"x-app-ver\",\n POST_LOGOUT_URI = \"post_logout_redirect_uri\",\n ID_TOKEN_HINT= \"id_token_hint\",\n DEVICE_CODE = \"device_code\",\n CLIENT_SECRET = \"client_secret\",\n CLIENT_ASSERTION = \"client_assertion\",\n CLIENT_ASSERTION_TYPE = \"client_assertion_type\",\n TOKEN_TYPE = \"token_type\",\n REQ_CNF = \"req_cnf\",\n OBO_ASSERTION = \"assertion\",\n REQUESTED_TOKEN_USE = \"requested_token_use\",\n ON_BEHALF_OF = \"on_behalf_of\",\n FOCI = \"foci\",\n CCS_HEADER = \"X-AnchorMailbox\",\n RETURN_SPA_CODE = \"return_spa_code\",\n NATIVE_BROKER = \"nativebroker\",\n LOGOUT_HINT = \"logout_hint\"\n}\n\n/**\n * Claims request keys\n */\nexport enum ClaimsRequestKeys {\n ACCESS_TOKEN = \"access_token\",\n XMS_CC = \"xms_cc\"\n}\n\n/**\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\n */\nexport const PromptValue = {\n LOGIN: \"login\",\n SELECT_ACCOUNT: \"select_account\",\n CONSENT: \"consent\",\n NONE: \"none\",\n CREATE: \"create\"\n};\n\n/**\n * SSO Types - generated to populate hints\n */\nexport enum SSOTypes {\n ACCOUNT = \"account\",\n SID = \"sid\",\n LOGIN_HINT = \"login_hint\",\n ID_TOKEN = \"id_token\",\n DOMAIN_HINT = \"domain_hint\",\n ORGANIZATIONS = \"organizations\",\n CONSUMERS = \"consumers\",\n ACCOUNT_ID = \"accountIdentifier\",\n HOMEACCOUNT_ID = \"homeAccountIdentifier\"\n}\n\n/**\n * Disallowed extra query parameters.\n */\nexport const BlacklistedEQParams = [\n SSOTypes.SID,\n SSOTypes.LOGIN_HINT\n];\n\n/**\n * allowed values for codeVerifier\n */\nexport const CodeChallengeMethodValues = {\n PLAIN: \"plain\",\n S256: \"S256\"\n};\n\n/**\n * The method used to encode the code verifier for the code challenge parameter. can be one\n * of plain or s256. if excluded, code challenge is assumed to be plaintext. for more\n * information, see the pkce rcf: https://tools.ietf.org/html/rfc7636\n */\nexport const CodeChallengeMethodValuesArray: string[] = [\n CodeChallengeMethodValues.PLAIN,\n CodeChallengeMethodValues.S256\n];\n\n/**\n * allowed values for response_mode\n */\nexport enum ResponseMode {\n QUERY = \"query\",\n FRAGMENT = \"fragment\",\n FORM_POST = \"form_post\"\n}\n\n/**\n * allowed grant_type\n */\nexport enum GrantType {\n IMPLICIT_GRANT = \"implicit\",\n AUTHORIZATION_CODE_GRANT = \"authorization_code\",\n CLIENT_CREDENTIALS_GRANT = \"client_credentials\",\n RESOURCE_OWNER_PASSWORD_GRANT = \"password\",\n REFRESH_TOKEN_GRANT = \"refresh_token\",\n DEVICE_CODE_GRANT = \"device_code\",\n JWT_BEARER = \"urn:ietf:params:oauth:grant-type:jwt-bearer\"\n}\n\n/**\n * Account types in Cache\n */\nexport enum CacheAccountType {\n MSSTS_ACCOUNT_TYPE = \"MSSTS\",\n ADFS_ACCOUNT_TYPE = \"ADFS\",\n MSAV1_ACCOUNT_TYPE = \"MSA\",\n GENERIC_ACCOUNT_TYPE = \"Generic\" // NTLM, Kerberos, FBA, Basic etc\n}\n\n/**\n * Separators used in cache\n */\nexport enum Separators {\n CACHE_KEY_SEPARATOR = \"-\",\n CLIENT_INFO_SEPARATOR = \".\"\n}\n\n/**\n * Credential Type stored in the cache\n */\nexport enum CredentialType {\n ID_TOKEN = \"IdToken\",\n ACCESS_TOKEN = \"AccessToken\",\n ACCESS_TOKEN_WITH_AUTH_SCHEME = \"AccessToken_With_AuthScheme\",\n REFRESH_TOKEN = \"RefreshToken\",\n}\n\n/**\n * Credential Type stored in the cache\n */\nexport enum CacheSchemaType {\n ACCOUNT = \"Account\",\n CREDENTIAL = \"Credential\",\n ID_TOKEN = \"IdToken\",\n ACCESS_TOKEN = \"AccessToken\",\n REFRESH_TOKEN = \"RefreshToken\",\n APP_METADATA = \"AppMetadata\",\n TEMPORARY = \"TempCache\",\n TELEMETRY = \"Telemetry\",\n UNDEFINED = \"Undefined\",\n THROTTLING = \"Throttling\"\n}\n\n/**\n * Combine all cache types\n */\nexport enum CacheType {\n ADFS = 1001,\n MSA = 1002,\n MSSTS = 1003,\n GENERIC = 1004,\n ACCESS_TOKEN = 2001,\n REFRESH_TOKEN = 2002,\n ID_TOKEN = 2003,\n APP_METADATA = 3001,\n UNDEFINED = 9999\n}\n\n/**\n * More Cache related constants\n */\nexport const APP_METADATA = \"appmetadata\";\nexport const CLIENT_INFO = \"client_info\";\nexport const THE_FAMILY_ID = \"1\";\n\nexport const AUTHORITY_METADATA_CONSTANTS = {\n CACHE_KEY: \"authority-metadata\",\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\n};\n\nexport enum AuthorityMetadataSource {\n CONFIG = \"config\",\n CACHE = \"cache\",\n NETWORK = \"network\",\n HARDCODED_VALUES= \"hardcoded_values\",\n}\n\nexport const SERVER_TELEM_CONSTANTS = {\n SCHEMA_VERSION: 5,\n MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer\n MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer,\n MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains\n CACHE_KEY: \"server-telemetry\",\n CATEGORY_SEPARATOR: \"|\",\n VALUE_SEPARATOR: \",\",\n OVERFLOW_TRUE: \"1\",\n OVERFLOW_FALSE: \"0\",\n UNKNOWN_ERROR: \"unknown_error\"\n};\n\n/**\n * Type of the authentication request\n */\nexport enum AuthenticationScheme {\n BEARER = \"Bearer\",\n POP = \"pop\",\n SSH = \"ssh-cert\"\n}\n\n/**\n * Constants related to throttling\n */\nexport const ThrottlingConstants = {\n // Default time to throttle RequestThumbprint in seconds\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\n // Default maximum time to throttle in seconds, overrides what the server sends back\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\n // Prefix for storing throttling entries\n THROTTLING_PREFIX: \"throttling\",\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\n};\n\nexport const Errors = {\n INVALID_GRANT_ERROR: \"invalid_grant\",\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\n};\n\n/**\n * Password grant parameters\n */\nexport enum PasswordGrantConstants {\n username = \"username\",\n password = \"password\"\n}\n\n/**\n * Response codes\n */\nexport enum ResponseCodes {\n httpSuccess = 200,\n httpBadRequest = 400\n}\n\n/**\n * Region Discovery Sources\n */\nexport enum RegionDiscoverySources {\n FAILED_AUTO_DETECTION = \"1\",\n INTERNAL_CACHE = \"2\",\n ENVIRONMENT_VARIABLE = \"3\",\n IMDS = \"4\",\n}\n\n/**\n * Region Discovery Outcomes\n */\nexport enum RegionDiscoveryOutcomes {\n CONFIGURED_MATCHES_DETECTED = \"1\",\n CONFIGURED_NO_AUTO_DETECTION = \"2\",\n CONFIGURED_NOT_DETECTED = \"3\",\n AUTO_DETECTION_REQUESTED_SUCCESSFUL = \"4\",\n AUTO_DETECTION_REQUESTED_FAILED = \"5\"\n}\n\nexport enum CacheOutcome {\n NO_CACHE_HIT = \"0\",\n FORCE_REFRESH = \"1\",\n NO_CACHED_ACCESS_TOKEN = \"2\",\n CACHED_ACCESS_TOKEN_EXPIRED = \"3\",\n REFRESH_CACHED_ACCESS_TOKEN = \"4\"\n}\n\nexport enum JsonTypes {\n Jwt = \"JWT\",\n Jwk = \"JWK\"\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"../utils/Constants\";\n\n/**\n * AuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const AuthErrorMessage = {\n unexpectedError: {\n code: \"unexpected_error\",\n desc: \"Unexpected error in authentication.\"\n },\n postRequestFailed: {\n code: \"post_request_failed\",\n desc: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\"\n }\n};\n\n/**\n * General error class thrown by the MSAL.js library.\n */\nexport class AuthError extends Error {\n\n /**\n * Short string denoting error\n */\n errorCode: string;\n\n /**\n * Detailed description of error\n */\n errorMessage: string;\n\n /**\n * Describes the subclass of an error\n */\n subError: string;\n\n /**\n * CorrelationId associated with the error\n */\n correlationId: string;\n\n constructor(errorCode?: string, errorMessage?: string, suberror?: string) {\n const errorString = errorMessage ? `${errorCode}: ${errorMessage}` : errorCode;\n super(errorString);\n Object.setPrototypeOf(this, AuthError.prototype);\n\n this.errorCode = errorCode || Constants.EMPTY_STRING;\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\n this.subError = suberror || Constants.EMPTY_STRING;\n this.name = \"AuthError\";\n }\n\n setCorrelationId(correlationId: string): void {\n this.correlationId = correlationId;\n }\n\n /**\n * Creates an error that is thrown when something unexpected happens in the library.\n * @param errDesc\n */\n static createUnexpectedError(errDesc: string): AuthError {\n return new AuthError(AuthErrorMessage.unexpectedError.code, `${AuthErrorMessage.unexpectedError.desc}: ${errDesc}`);\n }\n\n /**\n * Creates an error for post request failures.\n * @param errDesc \n * @returns \n */\n static createPostRequestFailed(errDesc: string): AuthError {\n return new AuthError(AuthErrorMessage.postRequestFailed.code, `${AuthErrorMessage.postRequestFailed.desc}: ${errDesc}`);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\n\n/**\n * Constants\n */\nexport const BrowserConstants = {\n /**\n * Interaction in progress cache value\n */\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\n /**\n * Invalid grant error code\n */\n INVALID_GRANT_ERROR: \"invalid_grant\",\n /**\n * Default popup window width\n */\n POPUP_WIDTH: 483,\n /**\n * Default popup window height\n */\n POPUP_HEIGHT: 600,\n /**\n * Name of the popup window starts with\n */\n POPUP_NAME_PREFIX: \"msal\",\n /**\n * Default popup monitor poll interval in milliseconds\n */\n POLL_INTERVAL_MS: 50,\n /**\n * Msal-browser SKU\n */\n MSAL_SKU: \"msal.js.browser\",\n};\n\nexport const NativeConstants = {\n CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\n PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\",\n MATS_TELEMETRY: \"MATS\"\n};\n\nexport enum NativeExtensionMethod {\n HandshakeRequest = \"Handshake\",\n HandshakeResponse = \"HandshakeResponse\",\n GetToken = \"GetToken\",\n Response = \"Response\"\n}\n\nexport enum BrowserCacheLocation {\n LocalStorage = \"localStorage\",\n SessionStorage = \"sessionStorage\",\n MemoryStorage = \"memoryStorage\"\n}\n\n/**\n * HTTP Request types supported by MSAL.\n */\nexport enum HTTP_REQUEST_TYPE {\n GET = \"GET\",\n POST = \"POST\"\n}\n\n/**\n * Temporary cache keys for MSAL, deleted after any request.\n */\nexport enum TemporaryCacheKeys {\n AUTHORITY = \"authority\",\n ACQUIRE_TOKEN_ACCOUNT = \"acquireToken.account\",\n SESSION_STATE = \"session.state\",\n REQUEST_STATE = \"request.state\",\n NONCE_IDTOKEN = \"nonce.id_token\",\n ORIGIN_URI = \"request.origin\",\n RENEW_STATUS = \"token.renew.status\",\n URL_HASH = \"urlHash\",\n REQUEST_PARAMS = \"request.params\",\n SCOPES = \"scopes\",\n INTERACTION_STATUS_KEY = \"interaction.status\",\n CCS_CREDENTIAL = \"ccs.credential\",\n CORRELATION_ID = \"request.correlationId\",\n NATIVE_REQUEST = \"request.native\"\n}\n\n/**\n * Cache keys stored in-memory\n */\nexport enum InMemoryCacheKeys {\n WRAPPER_SKU = \"wrapper.sku\",\n WRAPPER_VER = \"wrapper.version\"\n}\n\n/**\n * API Codes for Telemetry purposes. \n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\n * 0-99 Silent Flow\n * 800-899 Auth Code Flow\n */\nexport enum ApiId {\n acquireTokenRedirect = 861,\n acquireTokenPopup = 862,\n ssoSilent = 863,\n acquireTokenSilent_authCode = 864,\n handleRedirectPromise = 865,\n acquireTokenByCode = 866,\n acquireTokenSilent_silentFlow = 61,\n logout = 961,\n logoutPopup = 962\n}\n\n/*\n * Interaction type of the API - used for state and telemetry\n */\nexport enum InteractionType {\n Redirect = \"redirect\",\n Popup = \"popup\",\n Silent = \"silent\",\n None = \"none\"\n}\n\n/**\n * Types of interaction currently in progress.\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\n */\nexport enum InteractionStatus {\n /**\n * Initial status before interaction occurs\n */\n Startup = \"startup\",\n /**\n * Status set when all login calls occuring\n */\n Login = \"login\",\n /**\n * Status set when logout call occuring\n */ \n Logout = \"logout\",\n /**\n * Status set for acquireToken calls\n */\n AcquireToken = \"acquireToken\",\n /**\n * Status set for ssoSilent calls\n */\n SsoSilent = \"ssoSilent\",\n /**\n * Status set when handleRedirect in progress\n */\n HandleRedirect = \"handleRedirect\",\n /**\n * Status set when interaction is complete\n */\n None = \"none\"\n}\n\nexport const DEFAULT_REQUEST: RedirectRequest|PopupRequest = {\n scopes: OIDC_DEFAULT_SCOPES\n};\n\n/**\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\n */\nexport const KEY_FORMAT_JWK = \"jwk\";\n\n// Supported wrapper SKUs\nexport enum WrapperSKU {\n React = \"@azure/msal-react\",\n Angular = \"@azure/msal-angular\"\n}\n\n// DatabaseStorage Constants\nexport const DB_NAME = \"msal.db\";\nexport const DB_VERSION = 1;\nexport const DB_TABLE_NAME = `${DB_NAME}.keys`;\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"@azure/msal-common\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserConfigurationAuthErrorMessage = {\n redirectUriNotSet: {\n code: \"redirect_uri_empty\",\n desc: \"A redirect URI is required for all calls, and none has been set.\"\n },\n postLogoutUriNotSet: {\n code: \"post_logout_uri_empty\",\n desc: \"A post logout redirect has not been set.\"\n },\n storageNotSupportedError: {\n code: \"storage_not_supported\",\n desc: \"Given storage configuration option was not supported.\"\n },\n noRedirectCallbacksSet: {\n code: \"no_redirect_callbacks\",\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\n },\n invalidCallbackObject: {\n code: \"invalid_callback_object\",\n desc: \"The object passed for the callback was invalid. \" +\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\n },\n stubPcaInstanceCalled: {\n code: \"stubbed_public_client_application_called\",\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\n },\n inMemRedirectUnavailable: {\n code: \"in_mem_redirect_unavailable\",\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\n }\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserConfigurationAuthError extends AuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"BrowserConfigurationAuthError\";\n\n Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\n }\n\n /**\n * Creates an error thrown when the redirect uri is empty (not set by caller)\n */\n static createRedirectUriEmptyError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code,\n BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\n */\n static createPostLogoutRedirectUriEmptyError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code,\n BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\n }\n\n /**\n * Creates error thrown when given storage location is not supported.\n * @param givenStorageLocation \n */\n static createStorageNotSupportedError(givenStorageLocation: string): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, `${BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc} Given Location: ${givenStorageLocation}`);\n }\n\n /**\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\n */\n static createRedirectCallbacksNotSetError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, \n BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\n }\n\n /**\n * Creates error thrown when the stub instance of PublicClientApplication is called.\n */\n static createStubPcaInstanceCalledError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code,\n BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\n }\n\n /*\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\n */\n static createInMemoryRedirectUnavailableError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, AccountInfo, Logger, PerformanceCallbackFunction } from \"@azure/msal-common\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { WrapperSKU } from \"../utils/BrowserConstants\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { ITokenCache } from \"../cache/ITokenCache\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\n\nexport interface IPublicClientApplication {\n initialize(): Promise;\n acquireTokenPopup(request: PopupRequest): Promise;\n acquireTokenRedirect(request: RedirectRequest): Promise;\n acquireTokenSilent(silentRequest: SilentRequest): Promise;\n acquireTokenByCode(request: AuthorizationCodeRequest): Promise;\n addEventCallback(callback: Function): string | null;\n removeEventCallback(callbackId: string): void;\n addPerformanceCallback(callback: PerformanceCallbackFunction): string;\n removePerformanceCallback(callbackId: string): boolean;\n enableAccountStorageEvents(): void;\n disableAccountStorageEvents(): void;\n getAccountByHomeId(homeAccountId: string): AccountInfo | null;\n getAccountByLocalId(localId: string): AccountInfo | null;\n getAccountByUsername(userName: string): AccountInfo | null;\n getAllAccounts(): AccountInfo[];\n handleRedirectPromise(hash?: string): Promise;\n loginPopup(request?: PopupRequest): Promise;\n loginRedirect(request?: RedirectRequest): Promise;\n logout(logoutRequest?: EndSessionRequest): Promise;\n logoutRedirect(logoutRequest?: EndSessionRequest): Promise;\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise;\n ssoSilent(request: SsoSilentRequest): Promise;\n getTokenCache(): ITokenCache;\n getLogger(): Logger;\n setLogger(logger: Logger): void;\n setActiveAccount(account: AccountInfo | null): void;\n getActiveAccount(): AccountInfo | null;\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void;\n setNavigationClient(navigationClient: INavigationClient): void;\n getConfiguration(): BrowserConfiguration;\n}\n\nexport const stubbedPublicClientApplication: IPublicClientApplication = {\n initialize: () => {\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\n },\n acquireTokenPopup: () => {\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\n },\n acquireTokenRedirect: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n acquireTokenSilent: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\n acquireTokenByCode: () => {\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\n },\n getAllAccounts: () => {\n return [];\t\n },\t\n getAccountByHomeId: () => {\n return null;\n },\n getAccountByUsername: () => {\t\n return null;\t\n },\t\n getAccountByLocalId: () => {\n return null;\n },\n handleRedirectPromise: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n loginPopup: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n loginRedirect: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n logout: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n logoutRedirect: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\n logoutPopup: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\n ssoSilent: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\n addEventCallback: () => {\n return null;\n },\n removeEventCallback: () => {\n return;\n },\n addPerformanceCallback: () => {\n return \"\";\n },\n removePerformanceCallback: () => {\n return false;\n },\n enableAccountStorageEvents: () => {\n return;\n },\n disableAccountStorageEvents: () => {\n return;\n },\n getTokenCache: () => {\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\n },\n getLogger: () => {\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\n },\n setLogger: () => {\n return;\n },\n setActiveAccount: () => {\n return;\n },\n getActiveAccount: () => {\n return null;\n },\n initializeWrapperLibrary: () => {\n return;\n },\n setNavigationClient: () => {\n return;\n },\n getConfiguration: () => {\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\n }\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { LoggerOptions } from \"../config/ClientConfiguration\";\nimport { Constants } from \"../utils/Constants\";\n\n/**\n * Options for logger messages.\n */\nexport type LoggerMessageOptions = {\n logLevel: LogLevel,\n containsPii?: boolean,\n context?: string,\n correlationId?: string\n};\n\n/**\n * Log message level.\n */\nexport enum LogLevel {\n Error,\n Warning,\n Info,\n Verbose,\n Trace\n}\n\n/**\n * Callback to send the messages to.\n */\nexport interface ILoggerCallback {\n (level: LogLevel, message: string, containsPii: boolean): void;\n}\n\n/**\n * Class which facilitates logging of messages to a specific place.\n */\nexport class Logger {\n\n // Correlation ID for request, usually set by user.\n private correlationId: string;\n\n // Current log level, defaults to info.\n private level: LogLevel = LogLevel.Info;\n\n // Boolean describing whether PII logging is allowed.\n private piiLoggingEnabled: boolean;\n\n // Callback to send messages to.\n private localCallback: ILoggerCallback;\n\n // Package name implementing this logger\n private packageName: string;\n\n // Package version implementing this logger\n private packageVersion: string;\n\n constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string) {\n const defaultLoggerCallback = () => {\n return;\n };\n this.localCallback = loggerOptions.loggerCallback || defaultLoggerCallback;\n this.piiLoggingEnabled = loggerOptions.piiLoggingEnabled || false;\n this.level = typeof(loggerOptions.logLevel) === \"number\" ? loggerOptions.logLevel : LogLevel.Info;\n this.correlationId = loggerOptions.correlationId || Constants.EMPTY_STRING;\n\n this.packageName = packageName || Constants.EMPTY_STRING;\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\n }\n\n /**\n * Create new Logger with existing configurations.\n */\n public clone(packageName: string, packageVersion: string, correlationId?: string): Logger {\n return new Logger({loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId}, packageName, packageVersion);\n }\n\n /**\n * Log message with required options.\n */\n private logMessage(logMessage: string, options: LoggerMessageOptions): void {\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\n return;\n }\n const timestamp = new Date().toUTCString();\n\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\n let logHeader: string;\n if (!StringUtils.isEmpty(options.correlationId)) {\n logHeader = `[${timestamp}] : [${options.correlationId}]`;\n } else if (!StringUtils.isEmpty(this.correlationId)) {\n logHeader = `[${timestamp}] : [${this.correlationId}]`;\n } else {\n logHeader = `[${timestamp}]`;\n }\n\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\n this.executeCallback(options.logLevel, log, options.containsPii || false);\n }\n\n /**\n * Execute callback with message.\n */\n executeCallback(level: LogLevel, message: string, containsPii: boolean): void {\n if (this.localCallback) {\n this.localCallback(level, message, containsPii);\n }\n }\n\n /**\n * Logs error messages.\n */\n error(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs error messages with PII.\n */\n errorPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs warning messages.\n */\n warning(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs warning messages with PII.\n */\n warningPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs info messages.\n */\n info(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs info messages with PII.\n */\n infoPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs verbose messages.\n */\n verbose(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs verbose messages with PII.\n */\n verbosePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs trace messages.\n */\n trace(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs trace messages with PII.\n */\n tracePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Returns whether PII Logging is enabled or not.\n */\n isPiiLoggingEnabled(): boolean {\n return this.piiLoggingEnabled || false;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const ClientAuthErrorMessage = {\n clientInfoDecodingError: {\n code: \"client_info_decoding_error\",\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\n },\n clientInfoEmptyError: {\n code: \"client_info_empty_error\",\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\n },\n tokenParsingError: {\n code: \"token_parsing_error\",\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\n },\n nullOrEmptyToken: {\n code: \"null_or_empty_token\",\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\n },\n endpointResolutionError: {\n code: \"endpoints_resolution_error\",\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\n },\n networkError: {\n code: \"network_error\",\n desc: \"Network request failed. Please check network trace to determine root cause.\"\n },\n unableToGetOpenidConfigError: {\n code: \"openid_config_error\",\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\n },\n hashNotDeserialized: {\n code: \"hash_not_deserialized\",\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\n },\n blankGuidGenerated: {\n code: \"blank_guid_generated\",\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\n },\n invalidStateError: {\n code: \"invalid_state\",\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\n },\n stateMismatchError: {\n code: \"state_mismatch\",\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\n },\n stateNotFoundError: {\n code: \"state_not_found\",\n desc: \"State not found\"\n },\n nonceMismatchError: {\n code: \"nonce_mismatch\",\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\n },\n nonceNotFoundError: {\n code: \"nonce_not_found\",\n desc: \"nonce not found\"\n },\n noTokensFoundError: {\n code: \"no_tokens_found\",\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\n },\n multipleMatchingTokens: {\n code: \"multiple_matching_tokens\",\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\n \"Call AcquireToken again providing more requirements such as authority or account.\"\n },\n multipleMatchingAccounts: {\n code: \"multiple_matching_accounts\",\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\n },\n multipleMatchingAppMetadata: {\n code: \"multiple_matching_appMetadata\",\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\n },\n tokenRequestCannotBeMade: {\n code: \"request_cannot_be_made\",\n desc: \"Token request cannot be made without authorization code or refresh token.\"\n },\n appendEmptyScopeError: {\n code: \"cannot_append_empty_scope\",\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\n },\n removeEmptyScopeError: {\n code: \"cannot_remove_empty_scope\",\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\n },\n appendScopeSetError: {\n code: \"cannot_append_scopeset\",\n desc: \"Cannot append ScopeSet due to error.\"\n },\n emptyInputScopeSetError: {\n code: \"empty_input_scopeset\",\n desc: \"Empty input ScopeSet cannot be processed.\"\n },\n DeviceCodePollingCancelled: {\n code: \"device_code_polling_cancelled\",\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\n },\n DeviceCodeExpired: {\n code: \"device_code_expired\",\n desc: \"Device code is expired.\"\n },\n DeviceCodeUnknownError: {\n code: \"device_code_unknown_error\",\n desc: \"Device code stopped polling for unknown reasons.\"\n },\n NoAccountInSilentRequest: {\n code: \"no_account_in_silent_request\",\n desc: \"Please pass an account object, silent flow is not supported without account information\"\n },\n invalidCacheRecord: {\n code: \"invalid_cache_record\",\n desc: \"Cache record object was null or undefined.\"\n },\n invalidCacheEnvironment: {\n code: \"invalid_cache_environment\",\n desc: \"Invalid environment when attempting to create cache entry\"\n },\n noAccountFound: {\n code: \"no_account_found\",\n desc: \"No account found in cache for given key.\"\n },\n CachePluginError: {\n code: \"no cache plugin set on CacheManager\",\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\n },\n noCryptoObj: {\n code: \"no_crypto_object\",\n desc: \"No crypto object detected. This is required for the following operation: \"\n },\n invalidCacheType: {\n code: \"invalid_cache_type\",\n desc: \"Invalid cache type\"\n },\n unexpectedAccountType: {\n code: \"unexpected_account_type\",\n desc: \"Unexpected account type.\"\n },\n unexpectedCredentialType: {\n code: \"unexpected_credential_type\",\n desc: \"Unexpected credential type.\"\n },\n invalidAssertion: {\n code: \"invalid_assertion\",\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\n },\n invalidClientCredential: {\n code: \"invalid_client_credential\",\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\n },\n tokenRefreshRequired: {\n code: \"token_refresh_required\",\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\n },\n userTimeoutReached: {\n code: \"user_timeout_reached\",\n desc: \"User defined timeout for device code polling reached\",\n },\n tokenClaimsRequired: {\n code: \"token_claims_cnf_required_for_signedjwt\",\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\n },\n noAuthorizationCodeFromServer: {\n code: \"authorization_code_missing_from_server_response\",\n desc: \"Server response does not contain an authorization code to proceed\"\n },\n noAzureRegionDetected: {\n code: \"no_azure_region_detected\",\n desc: \"No azure region was detected and no fallback was made available\"\n },\n accessTokenEntityNullError: {\n code: \"access_token_entity_null\",\n desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\n },\n bindingKeyNotRemovedError: {\n code: \"binding_key_not_removed\",\n desc: \"Could not remove the credential's binding key from storage.\"\n },\n logoutNotSupported: {\n code: \"end_session_endpoint_not_supported\",\n desc: \"Provided authority does not support logout.\"\n },\n keyIdMissing: {\n code: \"key_id_missing\",\n desc: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\"\n }\n};\n\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nexport class ClientAuthError extends AuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"ClientAuthError\";\n\n Object.setPrototypeOf(this, ClientAuthError.prototype);\n }\n\n /**\n * Creates an error thrown when client info object doesn't decode correctly.\n * @param caughtError\n */\n static createClientInfoDecodingError(caughtError: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code,\n `${ClientAuthErrorMessage.clientInfoDecodingError.desc} Failed with error: ${caughtError}`);\n }\n\n /**\n * Creates an error thrown if the client info is empty.\n * @param rawClientInfo\n */\n static createClientInfoEmptyError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code,\n `${ClientAuthErrorMessage.clientInfoEmptyError.desc}`);\n }\n\n /**\n * Creates an error thrown when the id token extraction errors out.\n * @param err\n */\n static createTokenParsingError(caughtExtractionError: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code,\n `${ClientAuthErrorMessage.tokenParsingError.desc} Failed with error: ${caughtExtractionError}`);\n }\n\n /**\n * Creates an error thrown when the id token string is null or empty.\n * @param invalidRawTokenString\n */\n static createTokenNullOrEmptyError(invalidRawTokenString: string) : ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code,\n `${ClientAuthErrorMessage.nullOrEmptyToken.desc} Raw Token Value: ${invalidRawTokenString}`);\n }\n\n /**\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\n */\n static createEndpointDiscoveryIncompleteError(errDetail: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code,\n `${ClientAuthErrorMessage.endpointResolutionError.desc} Detail: ${errDetail}`);\n }\n\n /**\n * Creates an error thrown when the fetch client throws\n */\n static createNetworkError(endpoint: string, errDetail: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code,\n `${ClientAuthErrorMessage.networkError.desc} | Fetch client threw: ${errDetail} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\n */\n static createUnableToGetOpenidConfigError(errDetail: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code,\n `${ClientAuthErrorMessage.unableToGetOpenidConfigError.desc} Attempted to retrieve endpoints from: ${errDetail}`);\n }\n\n /**\n * Creates an error thrown when the hash cannot be deserialized.\n * @param hashParamObj\n */\n static createHashNotDeserializedError(hashParamObj: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code,\n `${ClientAuthErrorMessage.hashNotDeserialized.desc} Given Object: ${hashParamObj}`);\n }\n\n /**\n * Creates an error thrown when the state cannot be parsed.\n * @param invalidState\n */\n static createInvalidStateError(invalidState: string, errorString?: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code,\n `${ClientAuthErrorMessage.invalidStateError.desc} Invalid State: ${invalidState}, Root Err: ${errorString}`);\n }\n\n /**\n * Creates an error thrown when two states do not match.\n */\n static createStateMismatchError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code,\n ClientAuthErrorMessage.stateMismatchError.desc);\n }\n\n /**\n * Creates an error thrown when the state is not present\n * @param missingState\n */\n static createStateNotFoundError(missingState: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code,\n `${ClientAuthErrorMessage.stateNotFoundError.desc}: ${missingState}`);\n }\n\n /**\n * Creates an error thrown when the nonce does not match.\n */\n static createNonceMismatchError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code,\n ClientAuthErrorMessage.nonceMismatchError.desc);\n }\n\n /**\n * Creates an error thrown when the mnonce is not present\n * @param missingNonce\n */\n static createNonceNotFoundError(missingNonce: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code,\n `${ClientAuthErrorMessage.nonceNotFoundError.desc}: ${missingNonce}`);\n }\n\n /**\n * Throws error when multiple tokens are in cache.\n */\n static createMultipleMatchingTokensInCacheError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code,\n `${ClientAuthErrorMessage.multipleMatchingTokens.desc}.`);\n }\n\n /**\n * Throws error when multiple accounts are in cache for the given params\n */\n static createMultipleMatchingAccountsInCacheError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code,\n ClientAuthErrorMessage.multipleMatchingAccounts.desc);\n }\n\n /**\n * Throws error when multiple appMetada are in cache for the given clientId.\n */\n static createMultipleMatchingAppMetadataInCacheError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code,\n ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\n }\n\n /**\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\n */\n static createTokenRequestCannotBeMadeError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\n }\n\n /**\n * Throws error when attempting to append a null, undefined or empty scope to a set\n * @param givenScope\n */\n static createAppendEmptyScopeToSetError(givenScope: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, `${ClientAuthErrorMessage.appendEmptyScopeError.desc} Given Scope: ${givenScope}`);\n }\n\n /**\n * Throws error when attempting to append a null, undefined or empty scope to a set\n * @param givenScope\n */\n static createRemoveEmptyScopeFromSetError(givenScope: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, `${ClientAuthErrorMessage.removeEmptyScopeError.desc} Given Scope: ${givenScope}`);\n }\n\n /**\n * Throws error when attempting to append null or empty ScopeSet.\n * @param appendError\n */\n static createAppendScopeSetError(appendError: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, `${ClientAuthErrorMessage.appendScopeSetError.desc} Detail Error: ${appendError}`);\n }\n\n /**\n * Throws error if ScopeSet is null or undefined.\n * @param givenScopeSet\n */\n static createEmptyInputScopeSetError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, `${ClientAuthErrorMessage.emptyInputScopeSetError.desc}`);\n }\n\n /**\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\n */\n static createDeviceCodeCancelledError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, `${ClientAuthErrorMessage.DeviceCodePollingCancelled.desc}`);\n }\n\n /**\n * Throws error if device code is expired\n */\n static createDeviceCodeExpiredError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, `${ClientAuthErrorMessage.DeviceCodeExpired.desc}`);\n }\n\n /**\n * Throws error if device code is expired\n */\n static createDeviceCodeUnknownError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeUnknownError.code, `${ClientAuthErrorMessage.DeviceCodeUnknownError.desc}`);\n }\n\n /**\n * Throws error when silent requests are made without an account object\n */\n static createNoAccountInSilentRequestError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, `${ClientAuthErrorMessage.NoAccountInSilentRequest.desc}`);\n }\n\n /**\n * Throws error when cache record is null or undefined.\n */\n static createNullOrUndefinedCacheRecord(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\n }\n\n /**\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\n */\n static createInvalidCacheEnvironmentError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\n }\n\n /**\n * Throws error when account is not found in cache.\n */\n static createNoAccountFoundError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\n }\n\n /**\n * Throws error if ICachePlugin not set on CacheManager.\n */\n static createCachePluginError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, `${ClientAuthErrorMessage.CachePluginError.desc}`);\n }\n\n /**\n * Throws error if crypto object not found.\n * @param operationName\n */\n static createNoCryptoObjectError(operationName: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, `${ClientAuthErrorMessage.noCryptoObj.desc}${operationName}`);\n }\n\n /**\n * Throws error if cache type is invalid.\n */\n static createInvalidCacheTypeError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, `${ClientAuthErrorMessage.invalidCacheType.desc}`);\n }\n\n /**\n * Throws error if unexpected account type.\n */\n static createUnexpectedAccountTypeError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, `${ClientAuthErrorMessage.unexpectedAccountType.desc}`);\n }\n\n /**\n * Throws error if unexpected credential type.\n */\n static createUnexpectedCredentialTypeError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, `${ClientAuthErrorMessage.unexpectedCredentialType.desc}`);\n }\n\n /**\n * Throws error if client assertion is not valid.\n */\n static createInvalidAssertionError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, `${ClientAuthErrorMessage.invalidAssertion.desc}`);\n }\n\n /**\n * Throws error if client assertion is not valid.\n */\n static createInvalidCredentialError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, `${ClientAuthErrorMessage.invalidClientCredential.desc}`);\n }\n\n /**\n * Throws error if token cannot be retrieved from cache due to refresh being required.\n */\n static createRefreshRequiredError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\n }\n\n /**\n * Throws error if the user defined timeout is reached.\n */\n static createUserTimeoutReachedError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\n }\n\n /*\n * Throws error if token claims are not populated for a signed jwt generation\n */\n static createTokenClaimsRequiredError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\n }\n\n /**\n * Throws error when the authorization code is missing from the server response\n */\n static createNoAuthCodeInServerResponseError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\n }\n\n static createBindingKeyNotRemovedError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.bindingKeyNotRemovedError.code, ClientAuthErrorMessage.bindingKeyNotRemovedError.desc);\n }\n\n /**\n * Thrown when logout is attempted for an authority that doesnt have an end_session_endpoint\n */\n static createLogoutNotSupportedError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.logoutNotSupported.code, ClientAuthErrorMessage.logoutNotSupported.desc);\n }\n\n /**\n * Create an error when kid attribute is missing from a PoP token's cache record\n */\n static createKeyIdMissingError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.keyIdMissing.code, ClientAuthErrorMessage.keyIdMissing.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DecodedAuthToken } from \"../account/DecodedAuthToken\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\n\n/**\n * @hidden\n */\nexport class StringUtils {\n\n /**\n * decode a JWT\n *\n * @param authToken\n */\n static decodeAuthToken(authToken: string): DecodedAuthToken {\n if (StringUtils.isEmpty(authToken)) {\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\n }\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\n const matches = tokenPartsRegex.exec(authToken);\n if (!matches || matches.length < 4) {\n throw ClientAuthError.createTokenParsingError(`Given token is malformed: ${JSON.stringify(authToken)}`);\n }\n const crackedToken: DecodedAuthToken = {\n header: matches[1],\n JWSPayload: matches[2],\n JWSSig: matches[3]\n };\n return crackedToken;\n }\n\n /**\n * Check if a string is empty.\n *\n * @param str\n */\n static isEmpty(str?: string): boolean {\n return (typeof str === \"undefined\" || !str || 0 === str.length);\n }\n\n /**\n * Check if stringified object is empty\n * @param strObj \n */\n static isEmptyObj(strObj?: string): boolean {\n if (strObj && !StringUtils.isEmpty(strObj)) {\n try {\n const obj = JSON.parse(strObj);\n return Object.keys(obj).length === 0;\n } catch (e) {}\n }\n return true;\n }\n\n static startsWith(str: string, search: string): boolean {\n return str.indexOf(search) === 0;\n }\n\n static endsWith(str: string, search: string): boolean {\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\n }\n\n /**\n * Parses string into an object.\n *\n * @param query\n */\n static queryStringToObject(query: string): T {\n const obj: {} = {};\n const params = query.split(\"&\");\n const decode = (s: string) => decodeURIComponent(s.replace(/\\+/g, \" \"));\n params.forEach((pair) => {\n if (pair.trim()) {\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\n if (key && value) {\n obj[decode(key)] = decode(value);\n }\n }\n });\n return obj as T;\n }\n\n /**\n * Trims entries in an array.\n *\n * @param arr\n */\n static trimArrayEntries(arr: Array): Array {\n return arr.map(entry => entry.trim());\n }\n\n /**\n * Removes empty strings from array\n * @param arr\n */\n static removeEmptyStringsFromArray(arr: Array): Array {\n return arr.filter(entry => {\n return !StringUtils.isEmpty(entry);\n });\n }\n\n /**\n * Attempts to parse a string into JSON\n * @param str\n */\n static jsonParseHelper(str: string): T | null {\n try {\n return JSON.parse(str) as T;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\n * @param input String to match against\n */\n static matchPattern(pattern: string, input: string): boolean {\n /**\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\n */\n const regex: RegExp = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\n\n return regex.test(input);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport enum EventType {\n INITIALIZE_START = \"msal:initializeStart\",\n INITIALIZE_END = \"msal:initializeEnd\",\n ACCOUNT_ADDED = \"msal:accountAdded\",\n ACCOUNT_REMOVED = \"msal:accountRemoved\",\n LOGIN_START = \"msal:loginStart\",\n LOGIN_SUCCESS = \"msal:loginSuccess\",\n LOGIN_FAILURE = \"msal:loginFailure\",\n ACQUIRE_TOKEN_START = \"msal:acquireTokenStart\",\n ACQUIRE_TOKEN_SUCCESS = \"msal:acquireTokenSuccess\",\n ACQUIRE_TOKEN_FAILURE = \"msal:acquireTokenFailure\",\n ACQUIRE_TOKEN_NETWORK_START = \"msal:acquireTokenFromNetworkStart\",\n SSO_SILENT_START = \"msal:ssoSilentStart\",\n SSO_SILENT_SUCCESS = \"msal:ssoSilentSuccess\",\n SSO_SILENT_FAILURE = \"msal:ssoSilentFailure\",\n ACQUIRE_TOKEN_BY_CODE_START = \"msal:acquireTokenByCodeStart\",\n ACQUIRE_TOKEN_BY_CODE_SUCCESS = \"msal:acquireTokenByCodeSuccess\",\n ACQUIRE_TOKEN_BY_CODE_FAILURE = \"msal:acquireTokenByCodeFailure\",\n HANDLE_REDIRECT_START = \"msal:handleRedirectStart\",\n HANDLE_REDIRECT_END = \"msal:handleRedirectEnd\",\n POPUP_OPENED = \"msal:popupOpened\",\n LOGOUT_START = \"msal:logoutStart\",\n LOGOUT_SUCCESS = \"msal:logoutSuccess\",\n LOGOUT_FAILURE = \"msal:logoutFailure\",\n LOGOUT_END = \"msal:logoutEnd\"\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, AuthError, AccountInfo } from \"@azure/msal-common\";\nimport { EventType } from \"./EventType\";\nimport { InteractionStatus, InteractionType } from \"../utils/BrowserConstants\";\nimport { PopupRequest, RedirectRequest, SilentRequest, SsoSilentRequest, EndSessionRequest } from \"..\";\n\nexport type EventMessage = {\n eventType: EventType;\n interactionType: InteractionType | null;\n payload: EventPayload;\n error: EventError;\n timestamp: number;\n};\n\nexport type PopupEvent = {\n popupWindow: Window;\n};\n\nexport type EventPayload = AccountInfo | PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;\n\nexport type EventError = AuthError | Error | null;\n\nexport type EventCallbackFunction = (message: EventMessage) => void;\n\nexport class EventMessageUtils {\n\n /**\n * Gets interaction status from event message\n * @param message\n * @param currentStatus\n */\n static getInteractionStatusFromEvent(message: EventMessage, currentStatus?: InteractionStatus): InteractionStatus|null {\n switch (message.eventType) {\n case EventType.LOGIN_START:\n return InteractionStatus.Login;\n case EventType.SSO_SILENT_START:\n return InteractionStatus.SsoSilent;\n case EventType.ACQUIRE_TOKEN_START:\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\n return InteractionStatus.AcquireToken;\n }\n break;\n case EventType.HANDLE_REDIRECT_START:\n return InteractionStatus.HandleRedirect;\n case EventType.LOGOUT_START:\n return InteractionStatus.Logout;\n case EventType.SSO_SILENT_SUCCESS:\n case EventType.SSO_SILENT_FAILURE:\n if (currentStatus && currentStatus !== InteractionStatus.SsoSilent) {\n // Prevent this event from clearing any status other than ssoSilent\n break;\n }\n return InteractionStatus.None;\n case EventType.LOGOUT_END:\n if (currentStatus && currentStatus !== InteractionStatus.Logout) {\n // Prevent this event from clearing any status other than logout\n break;\n }\n return InteractionStatus.None;\n case EventType.HANDLE_REDIRECT_END:\n if (currentStatus && currentStatus !== InteractionStatus.HandleRedirect) {\n // Prevent this event from clearing any status other than handleRedirect\n break;\n }\n return InteractionStatus.None;\n case EventType.LOGIN_SUCCESS:\n case EventType.LOGIN_FAILURE:\n case EventType.ACQUIRE_TOKEN_SUCCESS:\n case EventType.ACQUIRE_TOKEN_FAILURE:\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\n if (currentStatus && currentStatus !== InteractionStatus.Login && currentStatus !== InteractionStatus.AcquireToken) {\n // Prevent this event from clearing any status other than login or acquireToken\n break;\n }\n return InteractionStatus.None;\n }\n break;\n default:\n break;\n }\n return null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport * as React from \"react\";\nimport { IPublicClientApplication, stubbedPublicClientApplication, Logger, InteractionStatus, AccountInfo } from \"@azure/msal-browser\";\n\nexport interface IMsalContext {\n instance: IPublicClientApplication;\n inProgress: InteractionStatus;\n accounts: AccountInfo[];\n logger: Logger;\n}\n\n/*\n * Stubbed context implementation\n * Only used when there is no provider, which is an unsupported scenario\n */\nconst defaultMsalContext: IMsalContext = {\n instance: stubbedPublicClientApplication,\n inProgress: InteractionStatus.None,\n accounts: [],\n logger: new Logger({})\n};\n\nexport const MsalContext = React.createContext(\n defaultMsalContext\n);\nexport const MsalConsumer = MsalContext.Consumer;\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { AccountInfo } from \"@azure/msal-browser\";\n\ntype FaaCFunction = (args: T) => React.ReactNode;\n\nexport function getChildrenOrFunction(\n children: React.ReactNode | FaaCFunction,\n args: T\n): React.ReactNode {\n if (typeof children === \"function\") {\n return children(args);\n }\n return children;\n}\n\n/*\n * Utility types\n * Reference: https://github.com/piotrwitek/utility-types\n */\ntype SetDifference = A extends B ? never : A;\ntype SetComplement = SetDifference;\nexport type Subtract = Pick>;\n\n/**\n * Helper function to determine whether 2 arrays are equal\n * Used to avoid unnecessary state updates\n * @param arrayA \n * @param arrayB \n */\nexport function accountArraysAreEqual(arrayA: Array, arrayB: Array): boolean {\n if (arrayA.length !== arrayB.length) {\n return false;\n }\n\n const comparisonArray = [...arrayB];\n\n return arrayA.every((elementA) => {\n const elementB = comparisonArray.shift();\n if (!elementA || !elementB) {\n return false;\n }\n\n return (elementA.homeAccountId === elementB.homeAccountId) && \n (elementA.localAccountId === elementB.localAccountId) &&\n (elementA.username === elementB.username);\n });\n}\n\nexport function getAccountByIdentifiers(allAccounts: AccountInfo[], accountIdentifiers: AccountIdentifiers): AccountInfo | null {\n if (allAccounts.length > 0 && (accountIdentifiers.homeAccountId || accountIdentifiers.localAccountId || accountIdentifiers.username)) {\n const matchedAccounts = allAccounts.filter(accountObj => {\n if (accountIdentifiers.username && accountIdentifiers.username.toLowerCase() !== accountObj.username.toLowerCase()) {\n return false;\n }\n if (accountIdentifiers.homeAccountId && accountIdentifiers.homeAccountId.toLowerCase() !== accountObj.homeAccountId.toLowerCase()) {\n return false;\n }\n if (accountIdentifiers.localAccountId && accountIdentifiers.localAccountId.toLowerCase() !== accountObj.localAccountId.toLowerCase()) {\n return false;\n }\n\n return true;\n });\n\n return matchedAccounts[0] || null;\n } else {\n return null;\n }\n}\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-react\";\nexport const version = \"1.4.5\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport React, { useEffect, useReducer, PropsWithChildren, useMemo} from \"react\";\nimport {\n IPublicClientApplication,\n EventMessage,\n EventMessageUtils,\n InteractionStatus,\n Logger,\n WrapperSKU,\n AccountInfo\n} from \"@azure/msal-browser\";\nimport { MsalContext, IMsalContext } from \"./MsalContext\";\nimport { accountArraysAreEqual } from \"./utils/utilities\";\nimport { name as SKU, version } from \"./packageMetadata\";\n\nexport type MsalProviderProps = PropsWithChildren<{\n instance: IPublicClientApplication;\n}>;\n\ntype MsalState = {\n inProgress: InteractionStatus;\n accounts: AccountInfo[];\n};\n\nenum MsalProviderActionType {\n UNBLOCK_INPROGRESS = \"UNBLOCK_INPROGRESS\",\n EVENT = \"EVENT\"\n}\n\ntype MsalProviderReducerAction = {\n type: MsalProviderActionType,\n payload: {\n logger: Logger;\n instance: IPublicClientApplication;\n message?: EventMessage;\n };\n};\n\n/**\n * Returns the next inProgress and accounts state based on event message\n * @param previousState \n * @param action \n */\nconst reducer = (previousState: MsalState, action: MsalProviderReducerAction): MsalState => {\n const { type, payload } = action;\n let newInProgress = previousState.inProgress;\n\n switch (type) {\n case MsalProviderActionType.UNBLOCK_INPROGRESS:\n if (previousState.inProgress === InteractionStatus.Startup){\n newInProgress = InteractionStatus.None;\n payload.logger.info(\"MsalProvider - handleRedirectPromise resolved, setting inProgress to 'none'\");\n }\n break;\n case MsalProviderActionType.EVENT:\n const message = payload.message as EventMessage;\n const status = EventMessageUtils.getInteractionStatusFromEvent(message, previousState.inProgress);\n if (status) {\n payload.logger.info(`MsalProvider - ${message.eventType} results in setting inProgress from ${previousState.inProgress} to ${status}`);\n newInProgress = status;\n }\n break;\n default:\n throw new Error(`Unknown action type: ${type}`);\n }\n \n const currentAccounts = payload.instance.getAllAccounts();\n if (newInProgress !== previousState.inProgress && \n !accountArraysAreEqual(currentAccounts, previousState.accounts)) {\n // Both inProgress and accounts changed\n return {\n ...previousState,\n inProgress: newInProgress,\n accounts: currentAccounts\n };\n } else if (newInProgress !== previousState.inProgress) {\n // Only only inProgress changed\n return {\n ...previousState,\n inProgress: newInProgress\n };\n } else if (!accountArraysAreEqual(currentAccounts, previousState.accounts)) {\n // Only accounts changed\n return {\n ...previousState,\n accounts: currentAccounts\n };\n } else {\n // Nothing changed\n return previousState;\n }\n};\n\n/**\n * MSAL context provider component. This must be rendered above any other components that use MSAL.\n */\nexport function MsalProvider({instance, children}: MsalProviderProps): React.ReactElement {\n useEffect(() => {\n instance.initializeWrapperLibrary(WrapperSKU.React, version);\n }, [instance]);\n // Create a logger instance for msal-react with the same options as PublicClientApplication\n const logger = useMemo(() => {\n return instance.getLogger().clone(SKU, version);\n }, [instance]);\n\n const [state, updateState] = useReducer(reducer, undefined, () => {\n // Lazy initialization of the initial state\n return {\n inProgress: InteractionStatus.Startup,\n accounts: instance.getAllAccounts()\n };\n });\n \n useEffect(() => {\n const callbackId = instance.addEventCallback((message: EventMessage) => {\n updateState({\n payload: {\n instance,\n logger,\n message\n }, \n type: MsalProviderActionType.EVENT\n });\n });\n logger.verbose(`MsalProvider - Registered event callback with id: ${callbackId}`);\n\n instance.initialize().then(() => {\n instance.handleRedirectPromise().catch(() => {\n // Errors should be handled by listening to the LOGIN_FAILURE event\n return;\n }).finally(() => {\n /*\n * If handleRedirectPromise returns a cached promise the necessary events may not be fired\n * This is a fallback to prevent inProgress from getting stuck in 'startup'\n */\n updateState({\n payload: {\n instance,\n logger\n },\n type: MsalProviderActionType.UNBLOCK_INPROGRESS \n });\n });\n });\n\n return () => {\n // Remove callback when component unmounts or accounts change\n if (callbackId) {\n logger.verbose(`MsalProvider - Removing event callback ${callbackId}`);\n instance.removeEventCallback(callbackId);\n }\n };\n }, [instance, logger]);\n\n const contextValue: IMsalContext = {\n instance,\n inProgress: state.inProgress,\n accounts: state.accounts,\n logger\n };\n\n return (\n \n {children}\n \n );\n}\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { useContext } from \"react\";\nimport { IMsalContext, MsalContext } from \"../MsalContext\";\n\n/**\n * Returns Msal Context values\n */\nexport const useMsal = (): IMsalContext => useContext(MsalContext);\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport React from \"react\";\nimport { IMsalContext } from \"../MsalContext\";\nimport { useMsal } from \"../hooks/useMsal\";\nimport { Subtract } from \"../utils/utilities\";\n\nexport type WithMsalProps = {\n msalContext: IMsalContext;\n};\n\n/**\n * Higher order component wraps provided component with msal by injecting msal context values into the component's props \n * @param Component \n */\nexport const withMsal =

(Component: React.ComponentType

): React.FunctionComponent> => {\n const ComponentWithMsal: React.FunctionComponent> = props => {\n const msal = useMsal();\n return ;\n };\n\n const componentName =\n Component.displayName || Component.name || \"Component\";\n ComponentWithMsal.displayName = `withMsal(${componentName})`;\n\n return ComponentWithMsal;\n};\n","/**\r\n * Enter here the user flows and custom policies for your B2C application\r\n * To learn more about user flows, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview\r\n * To learn more about custom policies, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview\r\n */\r\nlet Policies = {\r\n clientId: process.env.REACT_APP_AZURE_CLIENT_ID,\r\n authorities: {\r\n signUpSignIn: {\r\n authority:process.env.REACT_APP_AZURE_SIGN_UP_SIGN_IN_AUTHORITY,\r\n }\r\n },\r\n authorityDomain: process.env.REACT_APP_AZURE_AUTHORITY_DOMAIN,\r\n redirectUri: process.env.REACT_APP_AZURE_REDIRECT_URI,\r\n scopes: [\r\n process.env.REACT_APP_AZURE_SCOPE,\r\n ],\r\n}\r\n\r\nexport const b2cPolicies = Policies;\r\n\r\n/**\r\n * Configuration object to be passed to MSAL instance on creation.\r\n * For a full list of MSAL.js configuration parameters, visit:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\r\n */\r\n\r\nexport const msalConfig = {\r\n auth: {\r\n clientId: b2cPolicies.clientId, // This is the ONLY mandatory field that you need to supply.\r\n authority: b2cPolicies.authorities.signUpSignIn.authority, // Choose SUSI as your default authority.\r\n knownAuthorities: [b2cPolicies.authorityDomain], // Mark your B2C tenant's domain as trusted.\r\n redirectUri: b2cPolicies.redirectUri, // You must register this URI on Azure Portal/App Registration. Defaults to window.location.origin\r\n postLogoutRedirectUri: \"/\", // Indicates the page to navigate after logout.\r\n navigateToLoginRequestUrl: false, // If \"true\", will navigate back to the original request location before processing the auth code response.\r\n },\r\n cache: {\r\n cacheLocation: process.env.REACT_APP_AZURE_CACHE_LOCATION, // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\r\n storeAuthStateInCookie: true, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n};\r\n\r\n/**\r\n * Scopes you add here will be prompted for user consent during sign-in.\r\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\r\n * For more information about OIDC scopes, visit:\r\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\r\n */\r\n\r\nexport const loginRequest = {\r\n scopes: b2cPolicies.scopes,\r\n};\r\n\r\n/**\r\n * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md\r\n */\r\n// export const protectedResources = {\r\n// apiHello: {\r\n// endpoint: \"http://localhost:5000/hello\",\r\n// scopes: [\"https://codelessonelocal.onmicrosoft.com/2311dff1-f3c3-4c52-bf0d-1f8098bdc3a9/access_as_user\"], // e.g. api://xxxxxx/access_as_user\r\n// },\r\n// }\r\n","import React from 'react';\r\n\r\nconst Loader = () => {\r\n return (\r\n //

\r\n
\r\n
\r\n
\r\n )\r\n}\r\nexport default Loader","import React from \"react\"\r\nimport { useMsal } from \"@azure/msal-react\"\r\nimport { Navigate } from \"react-router\"\r\nimport { b2cPolicies } from \"../Auth/AuthConfig\"\r\nimport Loader from \"./Shared/Loader/loader\"\r\n\r\nconst Welcome = () => {\r\n\r\n\tconst context = useMsal()\r\n\r\n\tif (context.inProgress !== \"none\") {\r\n\t\treturn \r\n\t}\r\n\r\n\tif (context.accounts.length === 0) {\r\n\t\tcontext.instance.loginRedirect(b2cPolicies.authorities.signUpSignIn)\r\n\t\treturn <>\r\n\t}\r\n\r\n\treturn \r\n}\r\n\r\nexport default Welcome\r\n","import React from \"react\"\r\nimport { b2cPolicies } from \"./AuthConfig\"\r\nimport Loader from \"../Components/Shared/Loader/loader\"\r\nimport { Navigate } from 'react-router-dom'\r\nimport { useMsal } from \"@azure/msal-react\"\r\n\r\nconst SignUp = () => {\r\n\r\n const context = useMsal()\r\n // get url params tag from url\r\n const urlParams = new URLSearchParams(window.location.search);\r\n let tag = urlParams.get('tag');\r\n let email = urlParams.get('email');\r\n let isFromCopilot = urlParams.get('isFromCopilot');\r\n\r\n // get urlparams selectedOrganization from url\r\n let selectedOrganization = urlParams.get('selectedOrganization');\r\n \r\n // store tags if defined in local storage else remove item from local storage\r\n\r\n if (selectedOrganization) {\r\n localStorage.setItem(\"selectedOrganizationId\", selectedOrganization);\r\n } else {\r\n localStorage.removeItem(\"selectedOrganizationId\");\r\n }\r\n\r\n if (tag) {\r\n tag = tag.replace(/ /g, ', ');\r\n localStorage.setItem(\"domainTagSelection\", tag);\r\n } else {\r\n localStorage.removeItem(\"domainTagSelection\");\r\n }\r\n\r\n if (context.inProgress !== \"none\") {\r\n return \r\n }\r\n\r\n const loginRequest = {\r\n ...b2cPolicies.authorities.signUpSignIn,\r\n extraQueryParameters: {\r\n signup: true,\r\n email: email || \"\",\r\n isFromCopilot: isFromCopilot\r\n }\r\n }\r\n\r\n if (context.accounts.length === 0) {\r\n context.instance.loginRedirect(loginRequest)\r\n return
\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default SignUp\r\n","import React from \"react\"\r\nimport { b2cPolicies } from \"./AuthConfig\"\r\nimport Loader from \"../Components/Shared/Loader/loader\"\r\nimport { Navigate } from 'react-router-dom'\r\nimport { useMsal } from \"@azure/msal-react\"\r\n\r\nconst SignIn = () => {\r\n\r\n const context = useMsal()\r\n\r\n const urlParams = new URLSearchParams(window.location.search);\r\n\r\n // get urlparams selectedOrganization from url\r\n let selectedOrganization = urlParams.get('selectedOrganization');\r\n \r\n // store selectedOrganization if defined in local storage else remove item from local storage\r\n if (selectedOrganization) {\r\n localStorage.setItem(\"selectedOrganizationId\", selectedOrganization);\r\n } else {\r\n localStorage.removeItem(\"selectedOrganizationId\");\r\n }\r\n\r\n if (context.inProgress !== \"none\") {\r\n return \r\n }\r\n\r\n if (context.accounts.length === 0) {\r\n context.instance.loginRedirect(b2cPolicies.authorities.signUpSignIn)\r\n return <>\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default SignIn\r\n","import React from 'react';\r\n\r\nconst RegistrationLoader = ({\r\n heading,\r\n subheading,\r\n}) => {\r\n return (\r\n
\r\n
\r\n \"Codelessone\"\r\n {heading &&

{heading}

}\r\n {subheading &&

{subheading}

}\r\n
\r\n
\r\n )\r\n}\r\nexport default RegistrationLoader","let logoutUser = null;\r\nlet showErrorDialog = null;\r\n\r\nexport function setLogoutUser(logoutFunction) {\r\n logoutUser = logoutFunction;\r\n}\r\n\r\nexport function setShowErrorDialog(showErrorDialogFunction) {\r\n showErrorDialog = showErrorDialogFunction;\r\n}\r\n\r\nexport async function callApiWithAuthorization(url, options) {\r\n const BASE_URL = process.env.REACT_APP_DESIGNER_API_URL;\r\n const token = localStorage.getItem(\"accessToken\");\r\n const fetchOptions = options || {};\r\n if (!fetchOptions.headers) {\r\n fetchOptions.headers = {};\r\n }\r\n fetchOptions.headers.Authorization = `Bearer ${token}`;\r\n const response = await fetch(`${BASE_URL}` + url, fetchOptions);\r\n if (response.status === 401) {\r\n return logoutUser();\r\n }\r\n if (response.status === 400) {\r\n const json = await response.json();\r\n const error = new Error(json.error);\r\n error.id = json.requestId;\r\n showErrorDialog(error);\r\n throw error;\r\n }\r\n return response;\r\n}\r\n\r\nexport async function callApiWithoutAuthorization(url, options) {\r\n const BASE_URL = process.env.REACT_APP_DESIGNER_API_URL;\r\n const response = await fetch(`${BASE_URL}` + url, options);\r\n return response;\r\n}","const colors = [\r\n \"#FFA87D\",\r\n \"#00B5B8\",\r\n \"#FF7588\",\r\n \"#16D39A\",\r\n \"#6bcafa\",\r\n \"#11264F\",\r\n \"#EF3F28\",\r\n \"#1C7093\",\r\n \"#F46A3B\",\r\n \"#238B98\",\r\n \"#70AEA1\",\r\n];\r\n\r\nexport function Colors(number) { \r\n const colors = [];\r\n for (var i=0;i {\r\n await callApiWithAuthorization(\"/api/v0/sendEmail\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n email: email,\r\n templateId: templateId,\r\n templateProperties: properties\r\n })\r\n });\r\n};","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function storeAppInMongoDB(email, app) {\r\n const request = await callApiWithAuthorization(`/api/v0/integrations/copilot-for-devops/store-app-data`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Skip-Authorization\": true\r\n },\r\n body: JSON.stringify({\r\n email,\r\n app\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function generateDDL(entities, relations) {\r\n const request = await callApiWithAuthorization(`/api/v0/integrations/copilot-for-devops/generate-ddl`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Skip-Authorization\": true\r\n },\r\n body: JSON.stringify({\r\n entities,\r\n relations\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function generateSchemaSpecificationPDF(entities, relations) {\r\n const request = await callApiWithAuthorization(`/api/v0/integrations/copilot-for-devops/generate-schema-specification-pdf`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Skip-Authorization\": true\r\n },\r\n body: JSON.stringify({\r\n entities,\r\n relations\r\n })\r\n });\r\n const response = await request.blob();\r\n return response;\r\n}\r\n\r\nexport async function checkIfUserHasStoredApps(email) {\r\n const request = await callApiWithAuthorization(`/api/v0/integrations/copilot-for-devops/has-stored-apps?email=${email}`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Skip-Authorization\": true\r\n }\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function createAppFromStoredApp(organizationId, organizationName, email) {\r\n const request = await callApiWithAuthorization(`/api/v0/integrations/copilot-for-devops/create-app?language=en`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Skip-Authorization\": true\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n organizationName,\r\n email\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function createContactInHubspot(loggedInUser, user) {\r\n let phoneNumber = loggedInUser.idTokenClaims.extension_Phone || \"\";\r\n let countryCode = loggedInUser.idTokenClaims.extension_Country ? loggedInUser.idTokenClaims.extension_Country.match(/\\(([^)]+)\\)/)?.[1] || \"\" : \"\";\r\n let phone = countryCode + phoneNumber;\r\n let userVerified = loggedInUser.idTokenClaims.extension_IsEmailSameAsCopilot === true;\r\n if (user.invitedUser) {\r\n userVerified = true;\r\n }\r\n const request = await callApiWithAuthorization(\"/api/v0/hubspot/createContact\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n displayName: loggedInUser.name,\r\n email: loggedInUser.username,\r\n firstName: loggedInUser.idTokenClaims.given_name || \"\",\r\n lastName: loggedInUser.idTokenClaims.family_name || \"\",\r\n azureId: loggedInUser.localAccountId,\r\n jobTitle: loggedInUser.idTokenClaims.jobTitle || \"\",\r\n numberOfEmployees: loggedInUser.idTokenClaims.extension_CompanySize || \"\",\r\n domainTagSelection: localStorage.getItem(\"domainTagSelection\") || \"\",\r\n registeredFrom: \"Designer\",\r\n phone: phone.trim() || \"\",\r\n verified: userVerified ? true : false,\r\n invitedUser: user.invitedUser || false,\r\n companyName: loggedInUser.idTokenClaims.extension_CompanyName || \"\",\r\n isFromCopilot: loggedInUser.idTokenClaims.extension_IsEmailSameAsCopilot === true, // check using === to make sure it is true only if the value is present\r\n companyName: loggedInUser.idTokenClaims.extension_CompanyName || \"\"\r\n })\r\n })\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateContactInHubspot(contactId, data) {\r\n await callApiWithAuthorization(`/api/v0/hubspot/updateContact/${contactId}`, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(data)\r\n });\r\n}","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function getLoggedInUserUsingAccessToken() {\r\n const request = await callApiWithAuthorization(\"/api/v0/current-user\");\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getRoleOfUserInProject(projectId, email) {\r\n const request = await callApiWithAuthorization(`/api/v0/user/${email}/projects/${projectId}/role`);\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getUserByEmail(email) {\r\n const request = await callApiWithAuthorization(\"/api/v0/user/\" + email);\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateUser(user) {\r\n const userId = user._id;\r\n delete user._id;\r\n const request = await callApiWithAuthorization(\"/api/v0/user/\" + userId, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(user)\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateAzureIdAndAssignSubscriptionToUser(user) {\r\n const userId = user._id;\r\n delete user._id;\r\n const request = await callApiWithAuthorization(\"/api/v0/updateAzureIdAndAssignSubscriptionToUser/\" + userId, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(user)\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getAzureUser(context) {\r\n let user = {}\r\n if (context.accounts.length === 0) {\r\n user = await getLoggedInUserUsingAccessToken()\r\n } else {\r\n user = context.accounts[0].idTokenClaims\r\n }\r\n return user\r\n}","import React, { useEffect } from 'react';\r\nimport { useState } from 'react';\r\n\r\nconst ShuffleMessage = (props) => {\r\n\r\n const {\r\n data,\r\n interval\r\n } = props\r\n\r\n const [state, setState] = useState({\r\n messageIndex: 0\r\n })\r\n\r\n useEffect(() => {\r\n const messageChangeTimeout = setTimeout(() => {\r\n let currentIdx = state.messageIndex;\r\n setState(prevState => ({ ...prevState, messageIndex: currentIdx + 1 }))\r\n }, interval);\r\n \r\n return () => clearTimeout(messageChangeTimeout);\r\n }, [state.messageIndex]);\r\n\r\n return (\r\n
\r\n

\r\n {data[state.messageIndex % data.length]}\r\n

\r\n
\r\n )\r\n}\r\n\r\nexport default ShuffleMessage","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}","const consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(_ref => {\n let [observer, numTimesAdded] = _ref;\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(_ref2 => {\n let [observer, numTimesAdded] = _ref2;\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nfunction defer() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n}\nconst lastOfPathSeparatorRegExp = /###/g;\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n const stack = typeof path !== 'string' ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper()) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n}\nfunction setPath(object, path, newValue) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n}\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n}\nfunction getCleanedCode(code) {\n if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n return code;\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (typeof key === 'string' && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return {\n ...{},\n ...this.getResource(lng, ns)\n };\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key,\n namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved && resolved.res;\n const resUsedKey = resolved && resolved.usedKey || key;\n const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n const resType = Object.prototype.toString.apply(res);\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = resType === '[object Array]';\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector && this.backendConnector.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, options);\n if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n let p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(part => part.toLowerCase());\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nlet sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nlet _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n const rules = {};\n sets.forEach(set => {\n set.lngs.forEach(l => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(getCleanedCode(code === 'dev' ? 'en' : code), {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (err) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n return rule.numbers.map(number => this.getSuffix(code, number, options));\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n getSuffixRetroCompatible(rule, count) {\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n shouldUseIntlApi() {\n return !nonIntlVersions.includes(this.options.compatibilityJSON);\n }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp && existingRegExp.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nfunction parseFormatStr(formatStr) {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (!opt) return;\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n const cache = {};\n return function invokeFormatter(val, lng, options) {\n const key = lng + JSON.stringify(options);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n const iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n if (this.backend && this.backend.init) {\n this.backend.init(services, options.backend, options);\n }\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initImmediate) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(l => append(l));\n }\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n return this.translator && this.translator.translate(...arguments);\n }\n exists() {\n return this.translator && this.translator.exists(...arguments);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n clone.store = new ResourceStore(this.store.data, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import parseTag from './parse-tag'\n\nconst tagRE = /<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g\nconst whitespaceRE = /^\\s*$/\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null)\n\nexport default function parse(html, options) {\n options || (options = {})\n options.components || (options.components = empty)\n const result = []\n const arr = []\n let current\n let level = -1\n let inComponent = false\n\n // handle text at top level\n if (html.indexOf('<') !== 0) {\n var end = html.indexOf('<')\n result.push({\n type: 'text',\n content: end === -1 ? html : html.substring(0, end),\n })\n }\n\n html.replace(tagRE, function (tag, index) {\n if (inComponent) {\n if (tag !== '') {\n return\n } else {\n inComponent = false\n }\n }\n const isOpen = tag.charAt(1) !== '/'\n const isComment = tag.startsWith('/gi, '');\n text = text.replace(/<\\/?[^>]+?\\/?>/gm, '');\n return text;\n};\nvar createList = function (type, styleType) {\n var list = document.createElement(type);\n list.style.listStyleType = styleType;\n return list;\n};\nvar guessUnorderedListStyle = function (symbol) {\n if (/^[\\u2022\\u00b7\\u00FC\\u00D8\\u002dv-]/.test(symbol)) {\n return null; // return \"disc\"; //default CSS value\n }\n else if (/^o/.test(symbol)) {\n return 'circle';\n }\n else {\n return 'square';\n }\n};\nvar guessOrderedListStyle = function (symbol) {\n var type = null;\n if (!/^\\d/.test(symbol)) {\n type = (/^[a-z]/.test(symbol) ? 'lower-' : 'upper-') +\n (/^[ivxlcdm]/i.test(symbol) ? 'roman' : 'alpha');\n }\n return type;\n};\nvar mapListsCandidates = function (nodes, groups) {\n var group = [];\n Array.from(nodes).forEach(function (node) {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n var element = node;\n if (element.getAttribute('datalist')) {\n group.push(node);\n groups.add(group);\n }\n else if (isPartOfListItem(element) && group.length) {\n group.push(node);\n }\n else {\n group = [];\n if (element.nodeName === 'DIV') {\n mapListsCandidates(element.children, groups);\n }\n else if (element.nodeName === 'TABLE') {\n Array.from(element.querySelectorAll('td,th')).forEach(function (cell) {\n mapListsCandidates(cell.children, groups);\n });\n }\n }\n });\n};\nvar listTypes = function (p) {\n var html = p.innerHTML;\n var trimStartText = function (t) {\n return t.replace(/^(?: |[\\u00a0\\n\\r\\s])+/, '');\n };\n html = html.replace(/<\\/?\\w+[^>]*>/g, '').replace(/ /g, '\\u00a0');\n if ((/^[\\u2022\\u00b7\\u00a7\\u00d8oØüvn][\\u00a0 ]+/.test(html))) {\n return {\n tag: 'ul',\n style: guessUnorderedListStyle(trimStartText(innerText(p)))\n };\n }\n if (/^\\s*\\w+[\\.\\)][\\u00a0 ]{2,}/.test(html)) {\n return {\n tag: 'ol',\n style: guessOrderedListStyle(trimStartText(innerText(p)))\n };\n }\n};\nvar convertToLi = function (p) {\n var content, name = p.nodeName.toLowerCase();\n if (p.firstChild && p.firstChild.nodeType === Node.COMMENT_NODE) {\n p.removeChild(p.firstChild);\n }\n if (p.childNodes.length === 1) {\n content = p.firstChild.nodeType === Node.TEXT_NODE ?\n innerText(p) : p.firstChild.innerHTML.replace(/^\\w+[\\.\\)]( )+ /, '');\n }\n else {\n p.removeChild(p.firstChild);\n // check for Roman numerals\n if (p.firstChild.nodeType === 3) {\n if (/^[ivxlcdm]+\\.$/i.test(p.firstChild.nodeValue)) {\n p.removeChild(p.firstChild);\n }\n }\n if (/^( |\\s)+$/i.test(p.firstChild.innerHTML)) {\n p.removeChild(p.firstChild);\n }\n if (name !== 'p') {\n content = '<' + name + '>' + p.innerHTML + '';\n }\n else {\n content = p.innerHTML;\n }\n }\n p.parentNode.removeChild(p);\n var li = document.createElement('li');\n li.innerHTML = content;\n return li;\n};\nvar toList = function (blockNodes) {\n var lastMargin = -1, levels = {}, li, rootMargin, rootIndex, lastRootLi, isLastRootLi, rootList, items, i, p, type, margin, list, listData;\n for (i = 0; i < blockNodes.length; i++) {\n p = blockNodes[i];\n listData = {\n datalist: p.getAttribute('datalist'),\n datalevel: p.getAttribute('datalevel')\n };\n var listIndex = listData.datalist;\n var listType = listTypes(p);\n type = listType && listType.tag;\n if (!type) {\n if (li && (!isLastRootLi || isPartOfListItem(p))) {\n if (p.style.marginLeft) {\n p.style.marginLeft = '';\n }\n if (p.style.marginLeft) {\n // tests runner/framework fails to delete marginLeft\n p.style.margin = '';\n }\n li.appendChild(p);\n }\n continue;\n }\n margin = listData.datalevel || parseFloat(p.style.marginLeft || 0);\n if (!listData.datalevel && !p.style.marginLeft) {\n continue;\n }\n var levelType = type + listIndex;\n if (!levels[margin]) {\n levels[margin] = {};\n }\n if (!rootMargin || rootMargin < 0) {\n rootMargin = margin;\n rootIndex = listIndex;\n items = blockNodes.filter(function (e) { return e.getAttribute('datalist') === String(rootIndex); });\n lastRootLi = items[items.length - 1];\n rootList = createList(type, listType && listType.style);\n p.parentNode.insertBefore(rootList, p);\n lastMargin = margin;\n levels[margin][levelType] = rootList;\n }\n isLastRootLi = lastRootLi === p;\n list = levels[margin][levelType];\n if (margin > lastMargin || !list) {\n list = createList(type, listType && listType.style);\n levels[margin][levelType] = list;\n li.appendChild(list);\n }\n li = convertToLi(p);\n list.appendChild(li);\n if (isLastRootLi) {\n rootMargin = lastMargin = -1;\n }\n else {\n lastMargin = margin;\n }\n }\n};\nexport var convertMsLists = function (html) {\n var container = document.createElement('div');\n container.innerHTML = extractListLevels(html);\n var groups = new Set();\n mapListsCandidates(container.children, groups);\n groups.forEach(function (listsCandidates) { return toList(listsCandidates); });\n return container.innerHTML;\n};\n","import { __assign } from \"tslib\";\nimport { chainCommands, exitCode, newlineInCode, createParagraphNear, liftEmptyBlock, splitBlockKeepMarks, deleteSelection, joinBackward, selectNodeBackward } from 'prosemirror-commands';\nimport { undo, redo } from 'prosemirror-history';\nimport { undoInputRule } from 'prosemirror-inputrules';\nimport { splitListItemKeepMarks } from '../lists';\nimport { bold, italic, underline } from './commands';\nimport { toggleInlineFormat } from './../inline-style';\nimport { expandToWordWrap } from '../utils';\nvar mac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false;\n// https://github.com/ProseMirror/prosemirror-example-setup/blob/master/src/keymap.js\nexport var buildKeymap = function (schema, options) {\n var keys = {};\n var applyToWord = (options && options.applyToWord) || false;\n keys['Mod-z'] = undo;\n keys['Shift-Mod-z'] = redo;\n // tslint:disable-next-line:no-string-literal\n keys['Backspace'] = chainCommands(undoInputRule, deleteSelection, joinBackward, selectNodeBackward);\n // tslint:disable-next-line:no-string-literal\n keys['Enter'] = chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlockKeepMarks);\n if (!mac) {\n keys['Mod-y'] = redo;\n }\n if (schema.marks.strong) {\n keys['Mod-b'] = expandToWordWrap(toggleInlineFormat, __assign(__assign({}, bold), { applyToWord: applyToWord }));\n }\n if (schema.marks.em) {\n keys['Mod-i'] = expandToWordWrap(toggleInlineFormat, __assign(__assign({}, italic), { applyToWord: applyToWord }));\n }\n if (schema.marks.u) {\n keys['Mod-u'] = expandToWordWrap(toggleInlineFormat, __assign(__assign({}, underline), { applyToWord: applyToWord }));\n }\n if (schema.nodes.hard_break) {\n var br_1 = schema.nodes.hard_break;\n var cmd = chainCommands(exitCode, function (state, dispatch) {\n dispatch(state.tr.replaceSelectionWith(br_1.create()).scrollIntoView());\n return true;\n });\n keys['Shift-Enter'] = cmd;\n }\n return keys;\n};\nexport var buildListKeymap = function (schema) {\n var keys = {};\n if (schema.nodes.list_item) {\n // tslint:disable-next-line:no-string-literal\n keys['Enter'] = splitListItemKeepMarks(schema.nodes.list_item);\n }\n return keys;\n};\n","import { convertMsLists } from './listConvert';\n/**\n * Removes the invalid HTML. Use it as a first step for cleaning the HTML.\n */\nexport var sanitize = function (html) {\n html = html.replace(/^[\\s\\S]+?\\s*([\\s\\S]*?)\\s*[\\s\\S]+$/, '$1');\n html = html.replace(/<\\/?[ovw]:[^>]*?>/gi, ''); // MS elements, e.g. , , ]*>/gi, ''); // XML namespaces\n html = html.replace(/<(?:link|meta) [^>]+?>/ig, '');\n html = html.replace(/]*?>\\s*<\\/style>/ig, '');\n html = html.replace(/<\\/?st1:.*?>/gi, '');\n html = html.replace(/
/gmi, '');\n html = html.replace(/v:shapes?=\"[^\"]+\"/ig, '');\n html = html.replace(//ig, '');\n html = html.replace(//ig, '');\n return html;\n};\n/**\n * Removes comments in HTML.\n */\nexport var removeComments = function (html) {\n return html.replace(//g, '');\n};\n/**\n * Removes the specified tag(s).\n */\nexport var removeTag = function (html, tagPattern) {\n return html.replace(new RegExp('<\\\\/?(' + tagPattern + ')(?:\\\\s[^>]*?)?>', 'gi'), '');\n};\n/**\n * Removes the passed attribute.\n */\nexport var removeAttribute = function (attr) {\n if (attr.ownerElement) {\n attr.ownerElement.removeAttribute(attr.name);\n }\n};\n/**\n * Remove the attribute if its value matches /^Mso/ regex.\n */\nexport var sanitizeClassAttr = function (attr) {\n if (/^Mso/.test(attr.value)) {\n removeAttribute(attr);\n }\n};\nvar stylesSplit = /\\s*;\\s*/;\nvar styleValueSplit = /\\s*:\\s*/;\n/**\n * Removes invalid HTML styles.\n */\nexport var sanitizeStyleAttr = function (attr) {\n var styles = attr.value.split(stylesSplit).filter(function (st) { return Boolean(st); });\n var element = attr.ownerElement;\n var supportedStyles = element.style;\n var result = '', name, value;\n styles.forEach(function (style) {\n var _a;\n _a = style.split(styleValueSplit), name = _a[0], value = _a[1];\n if (supportedStyles[name] !== undefined) {\n result += name + \": \" + value + \"; \";\n }\n });\n result = result.trim();\n if (result) {\n attr.value = result;\n }\n else {\n removeAttribute(attr);\n }\n};\nvar removeNode = function (node) {\n var parentNode = node.parentNode;\n if (parentNode) {\n while (node.firstChild) {\n parentNode.insertBefore(node.firstChild, node);\n }\n parentNode.removeChild(node);\n }\n};\nvar sanitizeNode = function (node, attributes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n for (var i = node.attributes.length - 1; i >= 0; i--) {\n var attr = node.attributes[i];\n if (attributes[attr.name]) {\n attributes[attr.name](attr);\n }\n else if (attributes['*']) {\n attributes['*'](attr);\n }\n }\n if (node.nodeName === 'SPAN' && node.attributes.length === 0) {\n removeNode(node);\n }\n }\n};\n/**\n * Cleans the HTML based on passed settings.\n * Before using it, clean the HTML with the `sanitize` function.\n */\nexport var pasteCleanup = function (html, settings) {\n var result = html;\n if (settings.convertMsLists) {\n result = convertMsLists(result);\n }\n if (settings.stripTags) {\n result = removeTag(result, settings.stripTags);\n }\n if (settings.attributes) {\n var div = document.createElement('div');\n div.innerHTML = result;\n Array.from(div.querySelectorAll('*')).forEach(function (node) { return sanitizeNode(node, settings.attributes); });\n result = div.innerHTML;\n }\n return result;\n};\nfunction convertHexToBase64(hex) {\n var length = hex.length;\n var data = new Array(length / 2);\n for (var i = 0; i < length; i += 2) {\n data[i] = String.fromCharCode(parseInt(hex.substring(i, i + 2), 16));\n }\n return btoa(data.join(''));\n}\nvar reHtmlImg = /]*?src=(?:'|\")file:\\/[^'\"]+(?:'|\")[^>]*>/gi;\nvar reRtfImgHeader = /{\\\\pict[\\s\\S]+?\\\\bliptag-?\\d+(\\\\blipupi-?\\d+)?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s}]*?/;\nvar reRtfImg = new RegExp('(?:(' + reRtfImgHeader.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g');\nvar reNonHex = /[^\\da-fA-F]/g;\nvar reLocalFile = /file:\\/[^'\"]+\\.(jpg|png|gif)/i;\nvar reExtension = /\\\\(png|jpeg)blip\\\\/;\nvar textRtfType = 'text/rtf';\n/**\n * If the input HTML contains images with 'src' pointing to local file system (it happens when pasting images and text from MS Word),\n * the function will extract the image sources form the RTF and replace the image 'src' with extracted base64 format data in `html` string.\n *\n * @param html - The input HTML (pasted HTML).\n * @param clipboardData - The paste event clipboardData object (event.clipboardData).\n * @returns - The html with the replaced images sources.\n */\nexport var replaceImageSourcesFromRtf = function (html, clipboardData) {\n var htmlImages = html.match(reHtmlImg);\n if (!htmlImages || clipboardData.types.indexOf(textRtfType) === -1) {\n return html;\n }\n var rtf = clipboardData.getData(textRtfType);\n var base64Sources = [];\n var rtfImages = rtf.match(reRtfImg);\n if (!rtf || !rtfImages) {\n return html;\n }\n for (var _i = 0, rtfImages_1 = rtfImages; _i < rtfImages_1.length; _i++) {\n var image = rtfImages_1[_i];\n var extension = reExtension.exec(image);\n if (extension) {\n var hex = image.replace(reRtfImgHeader, '').replace(reNonHex, '');\n base64Sources.push(\"data:image/\" + extension[1] + \";base64,\" + convertHexToBase64(hex));\n }\n }\n if (htmlImages.length !== base64Sources.length) {\n return html;\n }\n return html.replace(reHtmlImg, function (img) {\n var src = base64Sources.shift() || '';\n return img.replace(reLocalFile, src);\n });\n};\n","import { __rest } from \"tslib\";\nimport { TextSelection } from 'prosemirror-state';\nexport var findAt = function (doc, searchOptions, start, end, exit) {\n var result = [], exec, text, from, to, childText, nextSibling;\n var nodes = [];\n var matchCase = searchOptions.matchCase, matchWord = searchOptions.matchWord, useRegExp = searchOptions.useRegExp;\n var searchText = searchOptions.text;\n if (useRegExp && (/^\\\\$/.test(searchText) || /[^\\\\]\\\\$/.test(searchText))) {\n // lookbehind doesn't work in Edge -> /((?= start) {\n nodes.length = 0;\n node.nodesBetween(0, node.content.size, function (child, childPos, parent, i) {\n if (exit(result)) {\n return false;\n }\n var posToDoc = 1 + pos + childPos;\n if (child.isText && posToDoc + child.nodeSize >= start) {\n childText = child.text || '';\n nextSibling = parent.childCount - 1 >= i + 1 && parent.child(i + 1);\n nodes.push(start <= posToDoc ?\n { text: childText, start: posToDoc } :\n { text: childText.slice(start - posToDoc), start: start });\n if (nextSibling && nextSibling.isText) {\n return;\n }\n text = nodes.map(function (t) { return t.text; }).join('');\n exec = regExp.exec(text);\n while (exec !== null) {\n from = nodes[0].start + exec.index;\n to = from + exec[0].length;\n if (start <= from && end >= to && shouldMatchWord(exec, matchWord)) {\n result.push(TextSelection.create(doc, from, to));\n }\n if (exit(result)) {\n break;\n }\n exec = regExp.exec(text);\n }\n }\n else {\n nodes.length = 0;\n }\n });\n }\n });\n return result;\n};\nexport var find = function (state, searchOptions) {\n var backward = searchOptions.backward, matchCyclic = searchOptions.matchCyclic, options = __rest(searchOptions, [\"backward\", \"matchCyclic\"]);\n var exit = backward ? function () { return false; } : function (r) { return r.length > 0; };\n var doc = state.doc, selection = state.selection;\n var result = [];\n if (backward) {\n result = findAt(doc, options, 0, selection.from, exit);\n if (!result.length && matchCyclic) {\n result = findAt(doc, options, selection.from, doc.content.size, exit);\n }\n }\n else {\n result = findAt(doc, options, selection.to, doc.content.size, exit);\n if (!result.length && matchCyclic) {\n result = findAt(doc, options, 0, selection.to, exit);\n }\n }\n return result.length ? result[result.length - 1] : null;\n};\nexport var findAll = function (doc, searchOptions) {\n return findAt(doc, searchOptions, 0, doc.content.size, function () { return false; });\n};\nexport var replace = function (selection, text, transaction) {\n var from = selection.from, to = selection.to;\n transaction.insertText(text, from, to)\n .setSelection(TextSelection.create(transaction.doc, from, from + text.length));\n return transaction;\n};\nexport var replaceAll = function (state, replaceText, searchOptions) {\n var result = findAll(state.doc, searchOptions);\n if (result.length === 0) {\n return null;\n }\n var transaction = state.tr;\n for (var i = result.length - 1; i >= 0; i--) {\n transaction.insertText(replaceText, result[i].from, result[i].to);\n }\n return transaction;\n};\nvar notLetter = /^[\\s0-9~`!@#$%\\^&*\\(\\)_\\-=+\\\\|\\[\\]{};:'\"\\?/.,<>]?$/;\nvar shouldMatchWord = function (exec, matchWord) {\n if (!matchWord) {\n return true;\n }\n else if (matchWord === true) {\n var text = exec.input;\n var charBefore = text.charAt(exec.index - 1);\n var charAfter = text.charAt(exec.index + exec[0].length);\n return notLetter.test(charBefore) && notLetter.test(charAfter);\n }\n else {\n return matchWord(exec);\n }\n};\nvar createRegExp = function (inputString, flags) {\n var escaped = inputString\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n .replace(/-/g, '\\\\x2d')\n .replace(/\\s/g, '\\\\s');\n return new RegExp(escaped, flags);\n};\n","import { Plugin, PluginKey } from 'prosemirror-state';\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\n// The plugin resolves the following problems:\n//\n// 1. white-space: pre-wrap does not work with text-align: justify in firefox\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1253840\n// https://bugzilla.mozilla.org/show_bug.cgi?id=299721\n// 2. Align right in pre-wrap doesn't give the expected outcome,\n// as in pre-wrap it will preserve the white-space when the text breaks based on the container width.\n// Additional info here:\n// https://github.com/ProseMirror/prosemirror/issues/651\n// https://github.com/ProseMirror/prosemirror/issues/857\nvar spaces = /\\s+/g;\nvar align = /text-align/;\nvar aligned = function (node) { return align.test((node && node.attrs && node.attrs.style) || ''); };\nexport var spacesFix = function () { return new Plugin({\n key: new PluginKey('spaces-fix'),\n props: {\n decorations: function (state) {\n var decorations = [];\n var doc = state.doc;\n var start, match, length, i;\n doc.nodesBetween(0, doc.content.size, function (node, position, parent) {\n if (node.type.isText && aligned(parent)) {\n match = spaces.exec(node.text || '');\n while (match !== null) {\n start = position + match.index;\n length = match[0].length;\n if (match.index + length < match.input.length) {\n for (i = 0; i <= length - 1; i += 2) {\n decorations.push(Decoration.inline(start + i, start + i + 1, {\n style: 'white-space: normal'\n }));\n }\n }\n match = spaces.exec(node.text || '');\n }\n }\n });\n return DecorationSet.create(doc, decorations);\n }\n }\n}); };\n","import { Plugin, PluginKey } from 'prosemirror-state';\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\n// https://discuss.prosemirror.net/t/passing-data-between-plugins/1843\nexport var textHighlightKey = new PluginKey('highlight');\nexport function textHighlight(key) {\n if (key === void 0) { key = textHighlightKey; }\n return new Plugin({\n key: key,\n state: {\n init: function () { return null; },\n apply: function (tr) { return tr.getMeta(this.spec.key); }\n },\n props: {\n decorations: function (state) {\n var decorations = (this.spec.key.getState(state) || [])\n .map(function (d) { return Decoration.inline(d.from, d.to, d.attrs); });\n return DecorationSet.create(state.doc, decorations);\n }\n }\n });\n}\n","export var directions = {\n 'southeast': { x: 1, y: 1 },\n 'east': { x: 1, y: 0 },\n 'south': { x: 0, y: 1 },\n 'north': { x: 0, y: -1 },\n 'west': { x: -1, y: 0 },\n 'southwest': { x: -1, y: 1 },\n 'northwest': { x: -1, y: -1 },\n 'northeast': { x: 1, y: -1 } // top right\n};\nexport var handles = Object.keys(directions);\n","import { __assign } from \"tslib\";\nimport { NodeSelection, Plugin, PluginKey } from \"prosemirror-state\";\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\nimport { dataResizeDirImage, resizeHandle } from \"../config/constants\";\nimport { changeStylesString } from \"../utils\";\nimport { directions, handles } from './resize-utils';\nexport var imageResizeKey = new PluginKey('image-resize');\nvar setSize = function (domNode, sizeType, value) {\n domNode.style[sizeType] = value + 'px';\n};\nvar reSize = /[^\\-]width:|[^\\-]height:/;\nvar reAnyValue = /^.+$/;\nvar ResizeState = /** @class */ (function () {\n function ResizeState(activeHandle, dragging, rect, nodePosition) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n this.rect = rect;\n this.nodePosition = nodePosition;\n }\n ResizeState.prototype.apply = function (tr) {\n var state = this, next = tr.getMeta(imageResizeKey);\n if (next) {\n return new ResizeState(next.activeHandle, next.setDragging, next.rect, next.nodePosition);\n }\n return state;\n };\n return ResizeState;\n}());\nvar handleMouseMove = function (view, event, options) {\n var state = imageResizeKey.getState(view.state);\n var rect = state.rect, dragging = state.dragging, nodePosition = state.nodePosition, activeHandle = state.activeHandle;\n if (!dragging || !rect) {\n return;\n }\n var img = view.nodeDOM(nodePosition);\n var dir = directions[activeHandle];\n var diffX = (event.clientX - dragging.startX) * dir.x;\n var diffY = (event.clientY - dragging.startY) * dir.y;\n var width = dir.x ? diffX + img.width : rect.width;\n var height = dir.y ? diffY + img.height : rect.height;\n if (options.lockRatio && dir.x && dir.y) {\n var ratio = Math.min(width / img.width, height / img.height);\n var lockWidth = img.width * ratio;\n var lockHeight = img.height * ratio;\n dragging.startX = event.clientX - (width - lockWidth) * dir.x;\n dragging.startY = event.clientY - (height - lockHeight) * dir.y;\n width = lockWidth;\n height = lockHeight;\n }\n else {\n dragging.startX = dir.x ? event.clientX : dragging.startX;\n dragging.startY = dir.y ? event.clientY : dragging.startY;\n }\n setSize(img, 'width', width);\n setSize(img, 'height', height);\n rect.top = img.offsetTop;\n rect.left = img.offsetLeft;\n rect.width = img.offsetWidth;\n rect.height = img.offsetHeight;\n var handlesWrapper = img.nextElementSibling;\n handlesWrapper.style.width = rect.width + 'px';\n handlesWrapper.style.height = rect.height + 'px';\n handlesWrapper.style.top = rect.top + 'px';\n handlesWrapper.style.left = rect.left + 'px';\n};\nvar handleMouseUp = function (view) {\n var _a = imageResizeKey.getState(view.state), rect = _a.rect, dragging = _a.dragging, nodePosition = _a.nodePosition;\n if (dragging && rect) {\n var selection = view.state.selection;\n if (selection instanceof NodeSelection) {\n var currAttrs = selection.node.attrs;\n var width = rect.width;\n var height = rect.height;\n var attrs = void 0;\n if (reSize.test(currAttrs.style || '')) {\n var changedWidth = changeStylesString(currAttrs.style, { style: 'width', value: reAnyValue, newValue: width + 'px' });\n var style = changeStylesString(changedWidth.style || '', { style: 'height', value: reAnyValue, newValue: height + 'px' }).style;\n attrs = __assign(__assign({}, currAttrs), { style: style });\n }\n else {\n attrs = __assign(__assign({}, currAttrs), { width: width, height: height });\n }\n var newImage = selection.node.type.createAndFill(attrs);\n if (newImage) {\n var tr = view.state.tr;\n tr.replaceWith(nodePosition, nodePosition + 1, newImage);\n tr.setSelection(NodeSelection.create(tr.doc, nodePosition));\n tr.setMeta('commandName', 'image-resize');\n tr.setMeta('args', attrs);\n tr.setMeta(imageResizeKey, {\n setDragging: null,\n activeHandle: null,\n rect: rect,\n nodePosition: nodePosition\n });\n view.dispatch(tr);\n }\n }\n }\n};\nvar handleMouseDown = function (view, event, options) {\n var target = event.target;\n var activeHandle = target.getAttribute(dataResizeDirImage);\n if (!activeHandle) {\n return false;\n }\n var resizeState = imageResizeKey.getState(view.state);\n event.preventDefault();\n var transaction = view.state.tr;\n transaction.setMeta(imageResizeKey, {\n setDragging: { startX: event.clientX, startY: event.clientY },\n activeHandle: activeHandle,\n rect: resizeState.rect,\n nodePosition: resizeState.nodePosition\n });\n transaction.setMeta('addToHistory', false);\n view.dispatch(transaction);\n function move(e) {\n handleMouseMove(view, e, options);\n }\n function finish(e) {\n e.view.removeEventListener('mouseup', finish);\n e.view.removeEventListener('mousemove', move);\n handleMouseUp(view);\n }\n event.view.addEventListener('mouseup', finish);\n event.view.addEventListener('mousemove', move);\n return true;\n};\nexport var imageResizing = function (options) {\n if (options === void 0) { options = { node: 'image', lockRatio: true }; }\n return new Plugin({\n key: imageResizeKey,\n view: function (viewObj) { return ({\n resize: function () {\n if (imageResizeKey.getState(viewObj.state).rect) {\n viewObj.dispatch(viewObj.state.tr.setMeta('resize', true));\n }\n },\n get window() {\n return viewObj.dom.ownerDocument && viewObj.dom.ownerDocument.defaultView;\n },\n attachResize: function () {\n var win = this.window;\n if (win) {\n win.removeEventListener('resize', this.resize);\n win.addEventListener('resize', this.resize);\n }\n },\n removeResize: function () {\n var win = this.window;\n if (win) {\n win.removeEventListener('resize', this.resize);\n }\n },\n update: function (view, prevState) {\n var state = view.state;\n var selection = state.selection;\n var nodeType = state.schema.nodes[options.node];\n var pluginState = imageResizeKey.getState(state);\n var prevRect = pluginState.rect;\n if (selection instanceof NodeSelection && nodeType === selection.node.type) {\n var img = view.nodeDOM(selection.from);\n var rect = {\n top: img.offsetTop,\n left: img.offsetLeft,\n width: img.offsetWidth,\n height: img.offsetHeight\n };\n if (!prevState.selection.eq(selection) ||\n (prevRect && (prevRect.width !== rect.width || prevRect.height !== rect.height ||\n prevRect.top !== rect.top || prevRect.left !== rect.left))) {\n var tr = state.tr;\n tr.setMeta(imageResizeKey, { rect: rect, nodePosition: selection.from });\n view.dispatch(tr);\n this.attachResize();\n }\n }\n else if (prevRect) {\n pluginState.rect = null;\n pluginState.nodePosition = -1;\n }\n },\n destroy: function () {\n this.removeResize();\n }\n }); },\n state: {\n init: function () {\n return new ResizeState('', null, null, -1);\n },\n apply: function (tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n handleDOMEvents: {\n mousedown: function (view, event) {\n return handleMouseDown(view, event, options);\n }\n },\n decorations: function (state) {\n var selection = state.selection;\n var nodeType = state.schema.nodes[options.node];\n var rect = imageResizeKey.getState(state).rect;\n if (rect && selection instanceof NodeSelection && nodeType === selection.node.type) {\n var wrapper = document.createElement('div');\n wrapper.className = 'k-editor-resize-handles-wrapper';\n wrapper.style.width = rect.width + 'px';\n wrapper.style.height = rect.height + 'px';\n wrapper.style.top = rect.top + 'px';\n wrapper.style.left = rect.left + 'px';\n for (var i = 0; i < handles.length; i++) {\n var dom = document.createElement('div');\n dom.className = resizeHandle + ' ' + handles[i];\n dom.setAttribute(dataResizeDirImage, handles[i]);\n wrapper.appendChild(dom);\n }\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.from + 1, wrapper)]);\n }\n return DecorationSet.empty;\n }\n }\n });\n};\n","import { Plugin, PluginKey } from 'prosemirror-state';\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\nimport { styleValue } from './../mark';\nexport var caretColorKey = new PluginKey('caret-color');\nexport function caretColor() {\n return new Plugin({\n key: caretColorKey,\n props: {\n decorations: function (state) {\n var doc = state.doc, selection = state.selection, storedMarks = state.storedMarks;\n if (!selection.empty || !storedMarks) {\n return DecorationSet.empty;\n }\n var color = styleValue((storedMarks || []).find(function (m) { return m.type.name === 'style'; }), { name: 'color', value: /^.+$/ });\n if (!color) {\n return DecorationSet.empty;\n }\n var parentNode = selection.$anchor.parent;\n var decorations = [];\n doc.descendants(function (node, pos) {\n if (node.eq(parentNode)) {\n decorations.push(Decoration.node(pos, pos + node.nodeSize, {\n style: 'caret-color: ' + color\n }));\n }\n });\n return DecorationSet.create(doc, decorations);\n }\n }\n });\n}\n","import { colgroupAttr, dataResizeDirTable, resizableAttr, resizableWrap, resizeHandle } from '../../config/constants';\nimport { parseStrColgroup } from '../../config/schema';\nimport { handles } from './../resize-utils';\nvar TableView = /** @class */ (function () {\n function TableView(node, view) {\n this.node = node;\n this.view = view;\n this.dom = document.createElement('div');\n this.dom.className = resizableWrap;\n this.table = this.dom.appendChild(document.createElement('table'));\n if (node.attrs[colgroupAttr]) {\n this.renderColgroup(node.attrs[colgroupAttr]);\n }\n var tBody = this.table.appendChild(document.createElement('tbody'));\n this.setAttributes(this.table, node.attrs);\n this.resizeHandles = handles.map(function (dir) {\n var handle = document.createElement('span');\n handle.className = resizeHandle + ' ' + dir;\n handle.setAttribute(dataResizeDirTable, dir);\n return handle;\n });\n this.contentDOM = tBody;\n }\n TableView.prototype.update = function (node) {\n var _this = this;\n if (node.type !== this.node.type) {\n return false;\n }\n var prev = this.node;\n this.node = node;\n if (node.attrs[resizableAttr]) {\n this.resizeHandles.forEach(function (handle) {\n _this.dom.appendChild(handle);\n });\n }\n else {\n Array.from(this.dom.children)\n .filter(function (e) { return e.classList.contains(resizeHandle); })\n .forEach(function (e) { return e.remove(); });\n }\n this.setAttributes(this.table, node.attrs);\n if (prev.attrs[colgroupAttr] !== node.attrs[colgroupAttr]) {\n this.renderColgroup(node.attrs[colgroupAttr]);\n }\n return true;\n };\n TableView.prototype.ignoreMutation = function (record) {\n var result = record.type === 'attributes' &&\n (record.target === this.table ||\n record.target.firstChild === this.table ||\n (this.colgroup && this.colgroup.contains(record.target)));\n return result;\n };\n TableView.prototype.destroy = function () {\n this.node = undefined;\n this.view = undefined;\n this.table = undefined;\n this.colgroup = undefined;\n this.resizeHandles = undefined;\n };\n TableView.prototype.renderColgroup = function (colgroupStr) {\n if (this.table && this.table.firstChild && this.table.firstChild.nodeName === 'COLGROUP') {\n this.table.removeChild(this.table.firstChild);\n }\n if (colgroupStr) {\n this.colgroup = parseStrColgroup(colgroupStr);\n this.table.insertBefore(this.colgroup, this.table.firstChild);\n }\n };\n TableView.prototype.setAttributes = function (table, attrs) {\n var skip = [colgroupAttr, resizableAttr];\n for (var attrName in attrs) {\n if (attrName && skip.indexOf(attrName) === -1) {\n var current = table.getAttribute(attrName);\n var next = attrs[attrName];\n if (next && next !== current) {\n table.setAttribute(attrName, next);\n }\n else if (!next) {\n table.removeAttribute(attrName);\n }\n }\n }\n };\n return TableView;\n}());\nexport { TableView };\n","import { __assign } from \"tslib\";\nimport { PluginKey } from 'prosemirror-state';\nimport { changeStylesString } from '../../utils';\nexport var reAnyValue = /^.+$/;\nexport var parseStyle = function (styleText) {\n var styles = (styleText || '').split(/\\s*;\\s*/).filter(Boolean).map(function (s) {\n var _a;\n var nameValue = s.split(/\\s*:\\s*/);\n return _a = {}, _a[nameValue[0]] = nameValue[1], _a;\n }).reduce(function (acc, val) { return (__assign(__assign({}, acc), val)); }, {});\n return styles;\n};\nexport function setNodeStyle(nodeAttrs, styleType, value) {\n var attrs;\n if (new RegExp('[^-]?' + styleType + ':').test(nodeAttrs.style || '')) {\n var style = changeStylesString(nodeAttrs.style || '', { style: styleType, value: reAnyValue, newValue: value }).style;\n attrs = __assign(__assign({}, nodeAttrs), { style: style });\n }\n else if (nodeAttrs.style) {\n attrs = __assign(__assign({}, nodeAttrs), { style: nodeAttrs.style.replace(/;$/, '') + '; ' + styleType + ': ' + value + ';' });\n }\n else {\n attrs = __assign(__assign({}, nodeAttrs), { style: styleType + ': ' + value + ';' });\n }\n return attrs;\n}\nexport var tableResizeKey = new PluginKey('table-resize');\nexport var tableColumnResizeKey = new PluginKey('table-column-resizing');\nexport var tableRowResizeKey = new PluginKey('table-row-resizing');\nexport function otherResizing(current, state) {\n var activeResize = false;\n activeResize = activeResize ||\n (current !== tableResizeKey && Boolean(tableResizeKey.get(state)) && tableResizeKey.getState(state).dragging);\n activeResize = activeResize ||\n (current !== tableColumnResizeKey && Boolean(tableColumnResizeKey.get(state)) && tableColumnResizeKey.getState(state).dragging);\n activeResize = activeResize ||\n (current !== tableRowResizeKey && Boolean(tableRowResizeKey.get(state)) && tableRowResizeKey.getState(state).dragging);\n return activeResize;\n}\nexport function otherResizeHandle(current, state) {\n var activeResize = false;\n activeResize = activeResize ||\n (current !== tableColumnResizeKey &&\n Boolean(tableColumnResizeKey.get(state)) &&\n tableColumnResizeKey.getState(state).activeHandle > -1);\n activeResize = activeResize ||\n (current !== tableRowResizeKey && Boolean(tableRowResizeKey.get(state)) && tableRowResizeKey.getState(state).activeHandle > -1);\n return activeResize;\n}\nexport function getTable(dom) {\n if (dom && dom.firstChild && dom.firstChild.nodeName === 'TABLE') {\n return dom.firstChild;\n }\n return dom;\n}\nexport function domCellAround(target) {\n while (target && target.nodeName !== 'TD' && target.nodeName !== 'TH') {\n target = target.classList.contains('ProseMirror') ? null : target.parentNode;\n }\n return target;\n}\nexport function cellIndexes(cell) {\n var row = cell.parentNode;\n return {\n cellIndex: cell.cellIndex,\n rowIndex: row.rowIndex\n };\n}\nexport function parentNode(pos, predicate) {\n for (var depth = pos.depth; depth > 0; depth--) {\n var node = pos.node(depth);\n if (predicate(node)) {\n return { node: node, depth: depth };\n }\n }\n return null;\n}\n","import { __assign } from \"tslib\";\nimport { Plugin } from 'prosemirror-state';\nimport { tableNodeTypes, TableMap } from 'prosemirror-tables-ts';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { colgroupAttr } from '../../config/constants';\nimport { TableView } from './table-view';\nimport { cellIndexes, domCellAround, otherResizeHandle, otherResizing, parentNode, parseStyle, setNodeStyle, tableColumnResizeKey as key } from './utils';\nexport function columnResizing() {\n // tslint:disable-next-line:variable-name\n var View = TableView, handleWidth = 5, cellMinWidth = 25;\n var plugin = new Plugin({\n key: key,\n state: {\n init: function (_, state) {\n this.spec.props.nodeViews[tableNodeTypes(state.schema).table.name] = function (node, view) { return new View(node, view); };\n return new ResizeState(-1, null);\n },\n apply: function (tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n attributes: function (state) {\n if (otherResizeHandle(key, state)) {\n return null;\n }\n var pluginState = key.getState(state);\n return pluginState.activeHandle > -1 ? { class: 'resize-cursor' } : null;\n },\n handleDOMEvents: {\n mousemove: function (view, event) {\n if (!otherResizing(key, view.state)) {\n handleMouseMove(view, event, handleWidth);\n }\n return false;\n },\n mouseleave: function (view) {\n handleMouseLeave(view);\n return false;\n },\n mousedown: function (view, event) {\n return handleMouseDown(view, event, cellMinWidth);\n }\n },\n decorations: function (state) {\n if (!otherResizing(key, state)) {\n var pluginState = key.getState(state);\n if (pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n }\n return DecorationSet.empty;\n },\n nodeViews: {}\n }\n });\n return plugin;\n}\nfunction pointsAtCell($pos) {\n return Boolean($pos.parent.type.spec.tableRole === 'row' && $pos.nodeAfter);\n}\nvar ResizeState = /** @class */ (function () {\n function ResizeState(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n }\n ResizeState.prototype.apply = function (tr) {\n var state = this, action = tr.getMeta(key);\n if (action && action.setHandle != null) {\n return new ResizeState(action.setHandle, null);\n }\n if (action && action.setDragging !== undefined) {\n return new ResizeState(state.activeHandle, action.setDragging);\n }\n if (state.activeHandle > -1 && tr.docChanged) {\n var handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = -1;\n }\n state = new ResizeState(handle, state.dragging);\n }\n return state;\n };\n return ResizeState;\n}());\nfunction handleMouseMove(view, event, handleWidth) {\n var pluginState = key.getState(view.state);\n if (!pluginState.dragging) {\n var target = domCellAround(event.target), cell = -1;\n if (target) {\n var indexes = cellIndexes(target);\n var _a = target.getBoundingClientRect(), left = _a.left, right = _a.right;\n if (Math.abs(event.clientX - left) <= handleWidth && indexes.cellIndex > 0) {\n indexes.cellIndex--;\n cell = edgeCell(view, event, indexes);\n }\n else if (right - event.clientX > 0 && right - event.clientX <= handleWidth) {\n cell = edgeCell(view, event, indexes);\n }\n }\n if (cell !== pluginState.activeHandle) {\n updateHandle(view, cell);\n }\n }\n}\nfunction handleMouseLeave(view) {\n var pluginState = key.getState(view.state);\n if (pluginState.activeHandle > -1 && !pluginState.dragging) {\n updateHandle(view, -1);\n }\n}\nfunction handleMouseDown(view, event, cellMinWidth) {\n var _a;\n var pluginState = key.getState(view.state);\n if (pluginState.activeHandle === -1 || pluginState.dragging) {\n return false;\n }\n var $cell = view.state.doc.resolve(pluginState.activeHandle);\n var row = $cell.parent;\n var cellIndex = $cell.index();\n var colSpan = 0;\n for (var i = 0; i <= cellIndex; i++) {\n colSpan += row.child(i).attrs.colspan;\n }\n var tableNode = $cell.node($cell.depth - 1);\n var dom = view.domAtPos(pluginState.activeHandle);\n var domCell = dom.node.childNodes[dom.offset];\n var tableDom = domCell.closest('table');\n var col, tableAttrs;\n if (tableNode.attrs[colgroupAttr]) {\n var colgroup = tableDom.firstChild;\n col = colgroup.children[colSpan - 1];\n if (!col.style.width) {\n col.style.width = col.offsetWidth + 'px';\n }\n }\n else {\n var total = 0;\n for (var i = 0; i < row.childCount; i++) {\n total += row.child(i).attrs.colspan;\n }\n var colgroup = document.createElement('colgroup');\n var cols = new Array(total);\n for (var i = 0; i < total; i++) {\n cols[i] = document.createElement('col');\n colgroup.appendChild(cols[i]);\n }\n tableDom.insertBefore(colgroup, tableDom.firstChild);\n col = cols[cellIndex];\n col.style.width = col.offsetWidth + 'px';\n tableAttrs = __assign(__assign({}, tableNode.attrs), (_a = {}, _a[colgroupAttr] = '' + cols.reduce(function (acc, cur) { return acc + cur.outerHTML; }, '') + '', _a));\n }\n var width = parseFloat(col.style.width);\n var tr = view.state.tr.setMeta(key, { setDragging: { startX: event.clientX, startWidth: width } });\n if (!tableDom.style.width) {\n var widths = Array.from(col.parentNode.children).map(function (c) { return c.style.width; });\n if (widths.every(Boolean)) {\n var sum = widths.reduce(function (acc, cur) { return acc + parseFloat(cur); }, 0);\n tableAttrs = setNodeStyle(tableAttrs || tableNode.attrs, 'width', sum + 'px');\n }\n }\n if (tableAttrs) {\n var tablePos = $cell.posAtIndex(0, $cell.depth - 1) - 1;\n tr.setNodeMarkup(tablePos, null, tableAttrs);\n }\n view.dispatch(tr);\n function finish(ev) {\n ev.view.removeEventListener('mouseup', finish);\n ev.view.removeEventListener('mousemove', move);\n var curPluginState = key.getState(view.state);\n if (curPluginState.dragging) {\n var transaction = view.state.tr;\n updateColumnWidth(view, transaction, curPluginState.activeHandle, draggedWidth(curPluginState.dragging, ev, cellMinWidth));\n view.dispatch(transaction.setMeta(key, { setDragging: null }));\n }\n }\n function move(ev) {\n if (!ev.which) {\n return finish(ev);\n }\n var curPluginState = key.getState(view.state);\n var dragged = draggedWidth(curPluginState.dragging, ev, cellMinWidth);\n displayColumnWidth(view, curPluginState.activeHandle, dragged, cellMinWidth);\n }\n event.view.addEventListener('mouseup', finish);\n event.view.addEventListener('mousemove', move);\n event.preventDefault();\n return true;\n}\nfunction edgeCell(view, event, indexes) {\n var found = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (!found) {\n return -1;\n }\n var $pos = view.state.doc.resolve(found.pos);\n var parentTable = parentNode($pos, function (n) { return n.type.spec.tableRole === 'table'; });\n if (parentTable === null) {\n return -1;\n }\n var tablePos = $pos.start(parentTable.depth);\n var tableNode = parentTable.node;\n var map = TableMap.get(tableNode);\n var cell = tablePos + map.map[(map.width * indexes.rowIndex) + indexes.cellIndex];\n return cell;\n}\nfunction draggedWidth(dragging, event, cellMinWidth) {\n var offset = event.clientX - dragging.startX;\n return Math.max(cellMinWidth, dragging.startWidth + offset);\n}\nfunction updateHandle(view, value) {\n var tr = view.state.tr;\n tr.setMeta('addToHistory', false);\n tr.setMeta(key, { setHandle: value });\n view.dispatch(tr);\n}\nfunction updateColumnWidth(view, tr, cell, _width) {\n var _a;\n var $cell = view.state.doc.resolve(cell);\n var tableNode = $cell.node(-1), start = $cell.start(-1);\n var tablePos = $cell.posAtIndex(0, $cell.depth - 1) - 1;\n var tableDom = view.nodeDOM(start).closest('table');\n var attrs = tableNode.attrs;\n if (tableNode && attrs[colgroupAttr]) {\n var colgroup = tableDom.firstChild;\n attrs = __assign(__assign({}, attrs), (_a = {}, _a[colgroupAttr] = colgroup.outerHTML, _a));\n }\n var tableDomWidth = tableDom.style.width;\n if (tableDom && tableDomWidth && parseStyle(attrs.style).width !== tableDomWidth) {\n attrs = setNodeStyle(attrs, 'width', tableDomWidth);\n tr.setNodeMarkup(tablePos, null, attrs);\n }\n}\nfunction displayColumnWidth(view, cell, width, _cellMinWidth) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), start = $cell.start(-1);\n var col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n var dom = view.domAtPos($cell.start(-1)).node;\n if (dom.nodeName !== 'TABLE') {\n dom = dom.closest('table');\n }\n var tableDom = dom;\n var colgroup = tableDom.firstChild;\n var cols = Array.from(colgroup.children);\n cols[col].style.width = width + 'px';\n if (tableDom.style.width) {\n var widths = cols.map(function (c) { return c.style.width; });\n if (widths.every(Boolean)) {\n var sum = widths.reduce(function (acc, cur) { return acc + parseFloat(cur); }, 0);\n tableDom.style.width = sum + 'px';\n }\n }\n}\nfunction handleDecorations(state, cell) {\n var decorations = [];\n var $cell = state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan;\n for (var row = 0; row < map.height; row++) {\n var index = col + row * map.width - 1;\n // For positions that are have either a different cell or the end\n // of the table to their right, and either the top of the table or\n // a different cell above them, add a decoration\n if ((col === map.width || map.map[index] !== map.map[index + 1]) &&\n (row === 0 || map.map[index - 1] !== map.map[index - 1 - map.width])) {\n var cellPos = map.map[index];\n var pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;\n var dom = document.createElement('div');\n dom.className = 'column-resize-handle';\n decorations.push(Decoration.widget(pos, dom));\n }\n }\n return DecorationSet.create(state.doc, decorations);\n}\n","import { __assign } from \"tslib\";\nimport { NodeSelection, Plugin } from 'prosemirror-state';\nimport { colgroupAttr, dataResizeDirTable, resizableAttr } from '../../config/constants';\nimport { getTable, parentNode, parseStyle, setNodeStyle, tableResizeKey as key } from './utils';\nimport { directions } from './../resize-utils';\nvar commonDir = {\n 'southeast': true,\n 'southwest': true,\n 'northwest': true,\n 'northeast': true\n};\nvar horizontalDir = __assign({ 'east': true, 'west': true }, commonDir);\nvar verticalDir = __assign({ 'south': true, 'north': true }, commonDir);\nvar ResizeState = /** @class */ (function () {\n function ResizeState(activeHandle, dragging, nodePosition) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n this.nodePosition = nodePosition;\n }\n ResizeState.prototype.apply = function (tr) {\n var state = this, next = tr.getMeta(key);\n if (next) {\n var nextState = new ResizeState(next.activeHandle, next.setDragging, next.nodePosition);\n return nextState;\n }\n return state;\n };\n return ResizeState;\n}());\nvar handleMouseMove = function (view, event) {\n var state = key.getState(view.state);\n var dragging = state.dragging, nodePosition = state.nodePosition, activeHandle = state.activeHandle;\n if (nodePosition < 0 || !dragging) {\n return;\n }\n var tableDom = getTable(view.nodeDOM(nodePosition));\n var rect = tableDom.getBoundingClientRect();\n var dir = directions[activeHandle];\n var diffX = (event.clientX - dragging.startX) * dir.x;\n var diffY = (event.clientY - dragging.startY) * dir.y;\n var win = (tableDom.ownerDocument && tableDom.ownerDocument.defaultView) || window;\n var compStyles = win.getComputedStyle(tableDom);\n var nodeWidth = /px/.test(compStyles.width) ? parseFloat(compStyles.width) : tableDom.offsetWidth;\n var nodeHeight = /px/.test(compStyles.height) ? parseFloat(compStyles.height) : tableDom.offsetHeight;\n var width = dir.x ? diffX + nodeWidth : rect.width;\n var height = dir.y ? diffY + nodeHeight : rect.height;\n dragging.startX = dir.x ? event.clientX : dragging.startX;\n dragging.startY = dir.y ? event.clientY : dragging.startY;\n if (horizontalDir[activeHandle]) {\n tableDom.style.width = width + 'px';\n }\n if (verticalDir[activeHandle]) {\n tableDom.style.height = height + 'px';\n }\n};\nvar toPercents = function (view, tr, tablePos) {\n var tableNode = view.state.doc.nodeAt(tablePos);\n var tableDom = getTable(view.nodeDOM(tablePos));\n var _a = tableSize(tableDom), width = _a.width, height = _a.height, colsWidth = _a.colsWidth, rowsHeight = _a.rowsHeight, offsetWidth = _a.offsetWidth, offsetHeight = _a.offsetHeight;\n var colgroup = tableDom.firstChild;\n var cols = Array.from((colgroup && colgroup.children) || []);\n var widthChanged = false;\n cols.forEach(function (col, i) {\n if (col.style.width && !/%$/.test(col.style.width)) {\n col.style.width = ((colsWidth[i]) * 100 / width) + '%';\n widthChanged = true;\n }\n });\n var heightChange = false;\n tableNode.forEach(function (row, offset, index) {\n var rowHeight = parseStyle(row.attrs.style).height;\n if (rowHeight && !/%$/.test(rowHeight)) {\n tr.setNodeMarkup(tablePos + offset + 1, null, setNodeStyle(row.attrs, 'height', (rowsHeight[index] * 100 / height) + '%'));\n heightChange = true;\n }\n });\n var tableAttrs = tableNode.attrs;\n if (parseStyle(tableAttrs.style).width !== offsetWidth + 'px') {\n tableAttrs = setNodeStyle(tableAttrs, 'width', offsetWidth + 'px');\n }\n if (widthChanged) {\n tableAttrs[colgroupAttr] = colgroup.outerHTML;\n }\n if (heightChange) {\n tableAttrs = setNodeStyle(tableAttrs, 'height', offsetHeight + 'px');\n }\n if (widthChanged || heightChange) {\n tr.setNodeMarkup(tablePos, null, tableAttrs);\n }\n};\nvar toPixels = function (view, tr, tablePos, attrs) {\n var tableNode = view.state.doc.nodeAt(tablePos);\n var tableDom = getTable(view.nodeDOM(tablePos));\n var win = (tableDom.ownerDocument && tableDom.ownerDocument.defaultView) || window;\n var calcStyle = win.getComputedStyle;\n var rows = Array.from(tableDom.rows);\n tableNode.forEach(function (row, offset, index) {\n var rowHeight = parseStyle(row.attrs.style).height;\n if (rowHeight && !/px$/.test(rowHeight)) {\n tr.setNodeMarkup(tablePos + offset + 1, null, setNodeStyle(row.attrs, 'height', calcStyle(rows[index]).height));\n }\n });\n var colgroup = tableDom.firstChild;\n var cols = Array.from((colgroup && colgroup.children) || []);\n var widthChanged = false;\n cols.forEach(function (col, i) {\n if (col.style.width && !/px$/.test(col.style.width)) {\n col.style.width = calcStyle(cols[i]).width;\n widthChanged = true;\n }\n });\n var tableAttrs = __assign({}, attrs);\n if (widthChanged) {\n tableAttrs[colgroupAttr] = colgroup.outerHTML;\n }\n return tableAttrs;\n};\nvar tableSize = function (table) {\n var cols = Array.from(table.firstChild.children);\n var colsWidth = cols.map(function (c) { return c.offsetWidth; });\n var rowsHeight = Array.from(table.rows).map(function (row) { return row.offsetHeight; });\n var width = colsWidth.reduce(function (acc, cur) { return acc + cur; }, 0);\n var height = rowsHeight.reduce(function (acc, cur) { return acc + cur; }, 0);\n var offsetHeight = table.offsetHeight;\n var offsetWidth = table.offsetWidth;\n return { width: width, height: height, colsWidth: colsWidth, rowsHeight: rowsHeight, offsetWidth: offsetWidth, offsetHeight: offsetHeight };\n};\nvar handleMouseUp = function (view) {\n var _a = key.getState(view.state), dragging = _a.dragging, nodePosition = _a.nodePosition, activeHandle = _a.activeHandle;\n if (dragging) {\n var node = view.state.doc.nodeAt(nodePosition);\n var dom = getTable(view.nodeDOM(nodePosition));\n var rect = tableSize(dom);\n if (node) {\n var width = rect.offsetWidth + 'px';\n var height = rect.offsetHeight + 'px';\n var tr = view.state.tr;\n var attrs = node.attrs;\n var parsedStyles = parseStyle(attrs.style);\n if (horizontalDir[activeHandle] && dom.style.width && parsedStyles.width !== width) {\n attrs = setNodeStyle(attrs, 'width', width);\n }\n if (verticalDir[activeHandle] && dom.style.height && parsedStyles.height !== height) {\n attrs = setNodeStyle(attrs, 'height', height);\n }\n attrs = toPixels(view, tr, nodePosition, attrs);\n tr.setNodeMarkup(nodePosition, null, attrs);\n tr.setMeta('commandName', 'node-resize');\n tr.setMeta('args', attrs);\n tr.setMeta(key, {\n setDragging: null,\n activeHandle: null,\n nodePosition: nodePosition\n });\n view.dispatch(tr);\n }\n }\n};\nvar handleMouseDown = function (view, event) {\n var target = event.target;\n var activeHandle = target.getAttribute(dataResizeDirTable);\n if (!activeHandle) {\n return false;\n }\n var resizeState = key.getState(view.state);\n event.preventDefault();\n var transaction = view.state.tr;\n transaction.setMeta(key, {\n setDragging: { startX: event.clientX, startY: event.clientY },\n activeHandle: activeHandle,\n nodePosition: resizeState.nodePosition\n });\n transaction.setMeta('addToHistory', false);\n toPercents(view, transaction, resizeState.nodePosition);\n view.dispatch(transaction);\n var curWindow = event.view || window;\n function move(e) {\n handleMouseMove(view, e);\n }\n function finish(_e) {\n curWindow.removeEventListener('mouseup', finish);\n curWindow.removeEventListener('mousemove', move);\n handleMouseUp(view);\n }\n curWindow.addEventListener('mouseup', finish);\n curWindow.addEventListener('mousemove', move);\n return true;\n};\nexport var tableResizing = function (options) {\n if (options === void 0) { options = { node: 'table' }; }\n return new Plugin({\n key: key,\n view: function (_viewObj) { return ({\n selectedNode: function (state, nodeType) {\n var selection = state.selection;\n var isNodeSelected = selection instanceof NodeSelection && nodeType === selection.node.type;\n if (isNodeSelected && selection instanceof NodeSelection) {\n return { node: selection.node, pos: selection.from };\n }\n var parent = parentNode(selection.$from, function (n) { return n.type === nodeType; });\n var node = parent && parent.node;\n if (node) {\n var tableDepth = new Array(selection.$from.depth + 1).fill(0)\n .findIndex(function (_, i) { return selection.$from.node(i).type.spec.tableRole === 'table'; });\n var pos = selection.$from.start(tableDepth) - 1;\n return { node: node, pos: pos };\n }\n return null;\n },\n update: function (view, prevState) {\n var _a, _b, _c, _d, _f;\n var state = view.state;\n var nodeType = state.schema.nodes[options.node];\n var selected = this.selectedNode(state, nodeType);\n var prevSelected = this.selectedNode(prevState, nodeType);\n if (!selected && prevSelected && !prevState.doc.eq(view.state.doc)) {\n // selected table is deleted\n return;\n }\n if (selected || prevSelected) {\n var tr = state.tr;\n tr.setMeta('addToHistory', false);\n if (selected && prevSelected && selected.pos !== prevSelected.pos) {\n tr.setMeta(key, { nodePosition: selected.pos });\n tr.setNodeMarkup(prevSelected.pos, nodeType, __assign(__assign({}, prevSelected.node.attrs), (_a = {}, _a[resizableAttr] = false, _a)));\n tr.setNodeMarkup(selected.pos, nodeType, __assign(__assign({}, selected.node.attrs), (_b = {}, _b[resizableAttr] = true, _b)));\n view.dispatch(tr);\n }\n else if (selected && prevSelected && selected.pos === prevSelected.pos &&\n !selected.node.attrs[resizableAttr] && !state.selection.eq(prevState.selection)) {\n tr.setMeta(key, { nodePosition: selected.pos });\n view.dispatch(tr.setNodeMarkup(selected.pos, nodeType, __assign(__assign({}, selected.node.attrs), (_c = {}, _c[resizableAttr] = true, _c))));\n }\n else if (selected && !prevSelected) {\n tr.setMeta(key, { nodePosition: selected.pos });\n view.dispatch(tr.setNodeMarkup(selected.pos, nodeType, __assign(__assign({}, selected.node.attrs), (_d = {}, _d[resizableAttr] = true, _d))));\n }\n else if (!selected && prevSelected) {\n tr.setMeta(key, { nodePosition: -1 });\n view.dispatch(tr.setNodeMarkup(prevSelected.pos, nodeType, __assign(__assign({}, prevSelected.node.attrs), (_f = {}, _f[resizableAttr] = false, _f))));\n }\n }\n }\n }); },\n state: {\n init: function () {\n return new ResizeState('', null, -1);\n },\n apply: function (tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n handleDOMEvents: {\n mousedown: function (view, event) {\n return handleMouseDown(view, event);\n }\n }\n }\n });\n};\n","import { Plugin } from 'prosemirror-state';\nimport { TableMap, tableNodeTypes } from 'prosemirror-tables-ts';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { domCellAround, otherResizeHandle, otherResizing, parentNode, parseStyle, setNodeStyle, tableRowResizeKey as key } from './utils';\nvar TableRowView = /** @class */ (function () {\n function TableRowView() {\n }\n TableRowView.prototype.ignoreMutation = function (record) {\n return record.type === 'attributes' && record.attributeName === 'style' && record.target.nodeName === 'TR';\n };\n return TableRowView;\n}());\nexport function rowResizing() {\n var handleWidth = 5;\n var plugin = new Plugin({\n key: key,\n state: {\n init: function (_, state) {\n this.spec.props.nodeViews[tableNodeTypes(state.schema).row.name] = function (_node, _view) { return new TableRowView(); };\n return new ResizeState(-1, null);\n },\n apply: function (tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n attributes: function (state) {\n if (otherResizeHandle(key, state)) {\n return null;\n }\n var pluginState = key.getState(state);\n return pluginState.activeHandle > -1 ? { class: 'resize-cursor-vertical' } : null;\n },\n handleDOMEvents: {\n mousemove: function (view, event) {\n if (!otherResizing(key, view.state)) {\n handleMouseMove(view, event, handleWidth);\n }\n return false;\n },\n mouseleave: function (view) {\n handleMouseLeave(view);\n return false;\n },\n mousedown: function (view, event) {\n return handleMouseDown(view, event);\n }\n },\n decorations: function (state) {\n if (otherResizing(key, state)) {\n return DecorationSet.empty;\n }\n var pluginState = key.getState(state);\n if (pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n },\n nodeViews: {}\n }\n });\n return plugin;\n}\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole === 'row' && $pos.nodeAfter;\n}\nvar ResizeState = /** @class */ (function () {\n function ResizeState(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n }\n ResizeState.prototype.apply = function (tr) {\n var state = this, action = tr.getMeta(key);\n if (action && action.setHandle != null) {\n return new ResizeState(action.setHandle, null);\n }\n if (action && action.setDragging !== undefined) {\n return new ResizeState(state.activeHandle, action.setDragging);\n }\n if (state.activeHandle > -1) {\n var handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = null;\n }\n state = new ResizeState(handle, state.dragging);\n }\n return state;\n };\n return ResizeState;\n}());\nfunction handleMouseMove(view, event, handleWidth) {\n var pluginState = key.getState(view.state);\n if (!pluginState.dragging) {\n var target = domCellAround(event.target), row = -1;\n if (target) {\n var rowDom = target.parentNode;\n var domRect = rowDom.getBoundingClientRect();\n if (Math.abs(event.clientY - domRect.top) <= handleWidth && rowDom.rowIndex > 0) {\n row = edgeRow(view, event, rowDom.rowIndex - 1);\n }\n else if (domRect.bottom - event.clientY > 0 && domRect.bottom - event.clientY <= handleWidth) {\n row = edgeRow(view, event, rowDom.rowIndex);\n }\n }\n if (row !== pluginState.activeHandle) {\n updateHandle(view, row);\n }\n }\n}\nfunction handleMouseLeave(view) {\n var pluginState = key.getState(view.state);\n if (pluginState.activeHandle > -1 && !pluginState.dragging) {\n updateHandle(view, -1);\n }\n}\nfunction handleMouseDown(view, event) {\n var pluginState = key.getState(view.state);\n if (pluginState.activeHandle === -1 || pluginState.dragging) {\n return false;\n }\n var doc = view.state.doc;\n var $pos = doc.resolve(pluginState.activeHandle);\n var row = doc.nodeAt(pluginState.activeHandle);\n var table = $pos.parent;\n var rowHeightStr = parseStyle(row.attrs.style).height;\n var tableHeight = parseStyle(table.attrs.style).height;\n var rowHeight = rowHeightStr ? parseFloat(rowHeightStr) : 0;\n if (!rowHeightStr) {\n var tr = view.nodeDOM(pluginState.activeHandle);\n rowHeight = tr.offsetHeight;\n }\n view.dispatch(view.state.tr.setMeta(key, {\n setDragging: {\n startY: event.clientY,\n startHeight: { rowHeight: rowHeight, tableHeight: tableHeight }\n }\n }));\n function finish(ev) {\n ev.view.removeEventListener('mouseup', finish);\n ev.view.removeEventListener('mousemove', move);\n var curPluginState = key.getState(view.state);\n if (curPluginState.dragging) {\n var tr = view.state.tr.setMeta(key, { setDragging: null });\n updateRowHeight(view, tr, curPluginState.activeHandle);\n view.dispatch(tr);\n }\n }\n function move(ev) {\n if (!ev.which) {\n return finish(ev);\n }\n var curPluginState = key.getState(view.state);\n var dragged = draggedHeight(curPluginState.dragging, ev);\n var offset = ev.clientY - curPluginState.dragging.startY;\n displayRowHeight(view, curPluginState.activeHandle, dragged, offset, tableHeight);\n }\n event.view.addEventListener('mouseup', finish);\n event.view.addEventListener('mousemove', move);\n event.preventDefault();\n return true;\n}\nfunction edgeRow(view, event, rowIndex) {\n var found = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (!found) {\n return -1;\n }\n var $pos = view.state.doc.resolve(found.pos);\n var parentTable = parentNode($pos, function (n) { return n.type.spec.tableRole === 'table'; });\n if (parentTable === null) {\n return -1;\n }\n var tablePos = $pos.start(parentTable.depth);\n var tableNode = parentTable.node;\n var map = TableMap.get(tableNode);\n var row = tablePos + map.map[(map.width * rowIndex)] - 1;\n return row;\n}\nfunction draggedHeight(dragging, event) {\n var offset = event.clientY - dragging.startY;\n return dragging.startHeight.rowHeight + offset;\n}\nfunction updateHandle(view, value) {\n var tr = view.state.tr;\n tr.setMeta('addToHistory', false);\n tr.setMeta(key, { setHandle: value });\n view.dispatch(tr);\n}\nfunction updateRowHeight(view, tr, rowPos) {\n var doc = view.state.doc;\n var row = doc.nodeAt(rowPos);\n var dom = view.nodeDOM(rowPos);\n var win = (dom.ownerDocument && dom.ownerDocument.defaultView) || window;\n dom.style.height = win.getComputedStyle(dom).height;\n tr.setNodeMarkup(rowPos, null, setNodeStyle(row.attrs, 'height', dom.style.height));\n var table = dom && dom.closest('table');\n var tableHeight = table && table.style.height;\n if (tableHeight) {\n var $pos = doc.resolve(rowPos);\n var tablePos = $pos.start($pos.depth) - 1;\n tr.setNodeMarkup(tablePos, null, setNodeStyle($pos.parent.attrs, 'height', tableHeight));\n }\n}\nfunction displayRowHeight(view, rowPos, height, offset, tableHeight) {\n var dom = view.nodeDOM(rowPos);\n if (dom) {\n dom.style.height = height + 'px';\n var win = (dom.ownerDocument && dom.ownerDocument.defaultView) || window;\n dom.style.height = win.getComputedStyle(dom).height;\n var table = dom.closest('table');\n var newHeight = (parseFloat(tableHeight) + offset) + 'px';\n var current = table && table.style.height;\n if (current && current !== newHeight) {\n table.style.height = (parseFloat(tableHeight) + offset) + 'px';\n table.style.height = win.getComputedStyle(table).height;\n }\n }\n}\nfunction handleDecorations(state, pos) {\n var decorations = [];\n if (typeof pos !== 'number') {\n return DecorationSet.empty;\n }\n var $row = state.doc.resolve(pos), table = $row.parent, map = TableMap.get(table), rowIndex = $row.index($row.depth), start = $row.start($row.depth);\n for (var col = 0; col < map.width; col++) {\n var index = col + rowIndex * map.width;\n var cellPos = map.map[index];\n var cell = table.nodeAt(cellPos);\n var widgetPos = start + cellPos + (cell ? cell.nodeSize : 0) - 1;\n var dom = document.createElement('div');\n dom.className = 'row-resize-handle';\n decorations.push(Decoration.widget(widgetPos, dom));\n }\n return DecorationSet.create(state.doc, decorations);\n}\n","import { Plugin } from 'prosemirror-state';\nimport { dropPoint } from 'prosemirror-transform';\n\n/**\nCreate a plugin that, when added to a ProseMirror instance,\ncauses a decoration to show up at the drop position when something\nis dragged over the editor.\n\nNodes may add a `disableDropCursor` property to their spec to\ncontrol the showing of a drop cursor inside them. This may be a\nboolean or a function, which will be called with a view and a\nposition, and should return a boolean.\n*/\nfunction dropCursor(options = {}) {\n return new Plugin({\n view(editorView) { return new DropCursorView(editorView, options); }\n });\n}\nclass DropCursorView {\n constructor(editorView, options) {\n this.editorView = editorView;\n this.cursorPos = null;\n this.element = null;\n this.timeout = -1;\n this.width = options.width || 1;\n this.color = options.color || \"black\";\n this.class = options.class;\n this.handlers = [\"dragover\", \"dragend\", \"drop\", \"dragleave\"].map(name => {\n let handler = (e) => { this[name](e); };\n editorView.dom.addEventListener(name, handler);\n return { name, handler };\n });\n }\n destroy() {\n this.handlers.forEach(({ name, handler }) => this.editorView.dom.removeEventListener(name, handler));\n }\n update(editorView, prevState) {\n if (this.cursorPos != null && prevState.doc != editorView.state.doc) {\n if (this.cursorPos > editorView.state.doc.content.size)\n this.setCursor(null);\n else\n this.updateOverlay();\n }\n }\n setCursor(pos) {\n if (pos == this.cursorPos)\n return;\n this.cursorPos = pos;\n if (pos == null) {\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n }\n else {\n this.updateOverlay();\n }\n }\n updateOverlay() {\n let $pos = this.editorView.state.doc.resolve(this.cursorPos), rect;\n if (!$pos.parent.inlineContent) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter;\n if (before || after) {\n let nodeRect = this.editorView.nodeDOM(this.cursorPos - (before ? before.nodeSize : 0))\n .getBoundingClientRect();\n let top = before ? nodeRect.bottom : nodeRect.top;\n if (before && after)\n top = (top + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2;\n rect = { left: nodeRect.left, right: nodeRect.right, top: top - this.width / 2, bottom: top + this.width / 2 };\n }\n }\n if (!rect) {\n let coords = this.editorView.coordsAtPos(this.cursorPos);\n rect = { left: coords.left - this.width / 2, right: coords.left + this.width / 2, top: coords.top, bottom: coords.bottom };\n }\n let parent = this.editorView.dom.offsetParent;\n if (!this.element) {\n this.element = parent.appendChild(document.createElement(\"div\"));\n if (this.class)\n this.element.className = this.class;\n this.element.style.cssText = \"position: absolute; z-index: 50; pointer-events: none; background-color: \" + this.color;\n }\n let parentLeft, parentTop;\n if (!parent || parent == document.body && getComputedStyle(parent).position == \"static\") {\n parentLeft = -pageXOffset;\n parentTop = -pageYOffset;\n }\n else {\n let rect = parent.getBoundingClientRect();\n parentLeft = rect.left - parent.scrollLeft;\n parentTop = rect.top - parent.scrollTop;\n }\n this.element.style.left = (rect.left - parentLeft) + \"px\";\n this.element.style.top = (rect.top - parentTop) + \"px\";\n this.element.style.width = (rect.right - rect.left) + \"px\";\n this.element.style.height = (rect.bottom - rect.top) + \"px\";\n }\n scheduleRemoval(timeout) {\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => this.setCursor(null), timeout);\n }\n dragover(event) {\n if (!this.editorView.editable)\n return;\n let pos = this.editorView.posAtCoords({ left: event.clientX, top: event.clientY });\n let node = pos && pos.inside >= 0 && this.editorView.state.doc.nodeAt(pos.inside);\n let disableDropCursor = node && node.type.spec.disableDropCursor;\n let disabled = typeof disableDropCursor == \"function\" ? disableDropCursor(this.editorView, pos) : disableDropCursor;\n if (pos && !disabled) {\n let target = pos.pos;\n if (this.editorView.dragging && this.editorView.dragging.slice) {\n target = dropPoint(this.editorView.state.doc, target, this.editorView.dragging.slice);\n if (target == null)\n return this.setCursor(null);\n }\n this.setCursor(target);\n this.scheduleRemoval(5000);\n }\n }\n dragend() {\n this.scheduleRemoval(20);\n }\n drop() {\n this.scheduleRemoval(20);\n }\n dragleave(event) {\n if (event.target == this.editorView.dom || !this.editorView.dom.contains(event.relatedTarget))\n this.setCursor(null);\n }\n}\n\nexport { dropCursor };\n","import { keydownHandler } from 'prosemirror-keymap';\nimport { Selection, NodeSelection, TextSelection, Plugin } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\n\n/**\nGap cursor selections are represented using this class. Its\n`$anchor` and `$head` properties both point at the cursor position.\n*/\nclass GapCursor extends Selection {\n /**\n Create a gap cursor.\n */\n constructor($pos) {\n super($pos, $pos);\n }\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n content() { return Slice.empty; }\n eq(other) {\n return other instanceof GapCursor && other.head == this.head;\n }\n toJSON() {\n return { type: \"gapcursor\", pos: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for GapCursor.fromJSON\");\n return new GapCursor(doc.resolve(json.pos));\n }\n /**\n @internal\n */\n getBookmark() { return new GapBookmark(this.anchor); }\n /**\n @internal\n */\n static valid($pos) {\n let parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))\n return false;\n let override = parent.type.spec.allowGapCursor;\n if (override != null)\n return override;\n let deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock;\n }\n /**\n @internal\n */\n static findGapCursorFrom($pos, dir, mustMove = false) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos))\n return $pos;\n let pos = $pos.pos, next = null;\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break;\n }\n else if (d == 0) {\n return null;\n }\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search;\n }\n break;\n }\n next = inside;\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n return null;\n }\n }\n}\nGapCursor.prototype.visible = false;\nGapCursor.findFrom = GapCursor.findGapCursorFrom;\nSelection.jsonID(\"gapcursor\", GapCursor);\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos;\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos));\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n}\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n // See if the node before (or its first ancestor) is closed\n for (let before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || before.isAtom || before.type.spec.isolating)\n return true;\n if (before.inlineContent)\n return false;\n }\n }\n // Hit start of document\n return true;\n}\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || after.isAtom || after.type.spec.isolating)\n return true;\n if (after.inlineContent)\n return false;\n }\n }\n return true;\n}\n\n/**\nCreate a gap cursor plugin. When enabled, this will capture clicks\nnear and arrow-key-motion past places that don't have a normally\nselectable position nearby, and create a gap cursor selection for\nthem. The cursor is drawn as an element with class\n`ProseMirror-gapcursor`. You can either include\n`style/gapcursor.css` from the package's directory or add your own\nstyles to make it visible.\n*/\nfunction gapCursor() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n createSelectionBetween(_view, $anchor, $head) {\n return $anchor.pos == $head.pos && GapCursor.valid($head) ? new GapCursor($head) : null;\n },\n handleClick,\n handleKeyDown,\n handleDOMEvents: { beforeinput: beforeinput }\n }\n });\n}\nconst handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\nfunction arrow(axis, dir) {\n const dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function (state, dispatch, view) {\n let sel = state.selection;\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0)\n return false;\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n let $found = GapCursor.findGapCursorFrom($start, dir, mustMove);\n if (!$found)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(new GapCursor($found)));\n return true;\n };\n}\nfunction handleClick(view, pos, event) {\n if (!view || !view.editable)\n return false;\n let $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos))\n return false;\n let clickPos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (clickPos && clickPos.inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(clickPos.inside)))\n return false;\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true;\n}\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor))\n return false;\n let { $from } = view.state.selection;\n let insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert)\n return false;\n let frag = Fragment.empty;\n for (let i = insert.length - 1; i >= 0; i--)\n frag = Fragment.from(insert[i].createAndFill(null, frag));\n let tr = view.state.tr.replace($from.pos, $from.pos, new Slice(frag, 0, 0));\n tr.setSelection(TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false;\n}\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor))\n return null;\n let node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, { key: \"gapcursor\" })]);\n}\n\nexport { GapCursor, gapCursor };\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence>) → RopeSequence\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence>) → RopeSequence\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nvar ropeSequence = RopeSequence;\n\nexport default ropeSequence;\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps[tr.steps.length - 1]), history.prevTime);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let newGroup = history.prevTime == 0 || !appended && (history.prevTime < (tr.time || 0) - options.newGroupDelay ||\n !isAdjacentTo(tr, history.prevRanges));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps[tr.steps.length - 1]);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(map) {\n let result = [];\n map.forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, dispatch, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0);\n dispatch(pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist }).scrollIntoView());\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || hist.done.eventCount == 0)\n return false;\n if (dispatch)\n histTransaction(hist, state, dispatch, false);\n return true;\n};\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || hist.undone.eventCount == 0)\n return false;\n if (dispatch)\n histTransaction(hist, state, dispatch, true);\n return true;\n};\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n\nexport { closeHistory, history, redo, redoDepth, undo, undoDepth };\n","import { Plugin } from 'prosemirror-state';\nimport { findWrapping, canJoin } from 'prosemirror-transform';\n\n/**\nInput rules are regular expressions describing a piece of text\nthat, when typed, causes something to happen. This might be\nchanging two dashes into an emdash, wrapping a paragraph starting\nwith `\"> \"` into a blockquote, or something entirely different.\n*/\nclass InputRule {\n // :: (RegExp, union)\n /**\n Create an input rule. The rule applies when the user typed\n something and the text directly in front of the cursor matches\n `match`, which should end with `$`.\n \n The `handler` can be a string, in which case the matched text, or\n the first matched group in the regexp, is replaced by that\n string.\n \n Or a it can be a function, which will be called with the match\n array produced by\n [`RegExp.exec`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec),\n as well as the start and end of the matched range, and which can\n return a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) that describes the\n rule's effect, or null to indicate the input was not handled.\n */\n constructor(\n /**\n @internal\n */\n match, handler) {\n this.match = match;\n this.match = match;\n this.handler = typeof handler == \"string\" ? stringHandler(handler) : handler;\n }\n}\nfunction stringHandler(string) {\n return function (state, match, start, end) {\n let insert = string;\n if (match[1]) {\n let offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n let cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n return state.tr.insertText(insert, start, end);\n };\n}\nconst MAX_MATCH = 500;\n/**\nCreate an input rules plugin. When enabled, it will cause text\ninput that matches any of the given rules to trigger the rule's\naction.\n*/\nfunction inputRules({ rules }) {\n let plugin = new Plugin({\n state: {\n init() { return null; },\n apply(tr, prev) {\n let stored = tr.getMeta(this);\n if (stored)\n return stored;\n return tr.selectionSet || tr.docChanged ? null : prev;\n }\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run(view, from, to, text, rules, plugin);\n },\n handleDOMEvents: {\n compositionend: (view) => {\n setTimeout(() => {\n let { $cursor } = view.state.selection;\n if ($cursor)\n run(view, $cursor.pos, $cursor.pos, \"\", rules, plugin);\n });\n }\n }\n },\n isInputRules: true\n });\n return plugin;\n}\nfunction run(view, from, to, text, rules, plugin) {\n if (view.composing)\n return false;\n let state = view.state, $from = state.doc.resolve(from);\n if ($from.parent.type.spec.code)\n return false;\n let textBefore = $from.parent.textBetween(Math.max(0, $from.parentOffset - MAX_MATCH), $from.parentOffset, null, \"\\ufffc\") + text;\n for (let i = 0; i < rules.length; i++) {\n let match = rules[i].match.exec(textBefore);\n let tr = match && rules[i].handler(state, match, from - (match[0].length - text.length), to);\n if (!tr)\n continue;\n view.dispatch(tr.setMeta(plugin, { transform: tr, from, to, text }));\n return true;\n }\n return false;\n}\n/**\nThis is a command that will undo an input rule, if applying such a\nrule was the last thing that the user did.\n*/\nconst undoInputRule = (state, dispatch) => {\n let plugins = state.plugins;\n for (let i = 0; i < plugins.length; i++) {\n let plugin = plugins[i], undoable;\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n let tr = state.tr, toUndo = undoable.transform;\n for (let j = toUndo.steps.length - 1; j >= 0; j--)\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\n if (undoable.text) {\n let marks = tr.doc.resolve(undoable.from).marks();\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\n }\n else {\n tr.delete(undoable.from, undoable.to);\n }\n dispatch(tr);\n }\n return true;\n }\n }\n return false;\n};\n\n/**\nConverts double dashes to an emdash.\n*/\nconst emDash = new InputRule(/--$/, \"—\");\n/**\nConverts three dots to an ellipsis character.\n*/\nconst ellipsis = new InputRule(/\\.\\.\\.$/, \"…\");\n/**\n“Smart” opening double quotes.\n*/\nconst openDoubleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(\")$/, \"“\");\n/**\n“Smart” closing double quotes.\n*/\nconst closeDoubleQuote = new InputRule(/\"$/, \"”\");\n/**\n“Smart” opening single quotes.\n*/\nconst openSingleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(')$/, \"‘\");\n/**\n“Smart” closing single quotes.\n*/\nconst closeSingleQuote = new InputRule(/'$/, \"’\");\n/**\nSmart-quote related input rules.\n*/\nconst smartQuotes = [openDoubleQuote, closeDoubleQuote, openSingleQuote, closeSingleQuote];\n\n/**\nBuild an input rule for automatically wrapping a textblock when a\ngiven string is typed. The `regexp` argument is\ndirectly passed through to the `InputRule` constructor. You'll\nprobably want the regexp to start with `^`, so that the pattern can\nonly occur at the start of a textblock.\n\n`nodeType` is the type of node to wrap in. If it needs attributes,\nyou can either pass them directly, or pass a function that will\ncompute them from the regular expression match.\n\nBy default, if there's a node with the same type above the newly\nwrapped node, the rule will try to [join](https://prosemirror.net/docs/ref/#transform.Transform.join) those\ntwo nodes. You can pass a join predicate, which takes a regular\nexpression match and the node before the wrapped node, and can\nreturn a boolean to indicate whether a join should happen.\n*/\nfunction wrappingInputRule(regexp, nodeType, getAttrs = null, joinPredicate) {\n return new InputRule(regexp, (state, match, start, end) => {\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n let tr = state.tr.delete(start, end);\n let $start = tr.doc.resolve(start), range = $start.blockRange(), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return null;\n tr.wrap(range, wrapping);\n let before = tr.doc.resolve(start - 1).nodeBefore;\n if (before && before.type == nodeType && canJoin(tr.doc, start - 1) &&\n (!joinPredicate || joinPredicate(match, before)))\n tr.join(start - 1);\n return tr;\n });\n}\n/**\nBuild an input rule that changes the type of a textblock when the\nmatched text is typed into it. You'll usually want to start your\nregexp with `^` to that it is only matched at the start of a\ntextblock. The optional `getAttrs` parameter can be used to compute\nthe new node's attributes, and works the same as in the\n`wrappingInputRule` function.\n*/\nfunction textblockTypeInputRule(regexp, nodeType, getAttrs = null) {\n return new InputRule(regexp, (state, match, start, end) => {\n let $start = state.doc.resolve(start);\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), nodeType))\n return null;\n return state.tr\n .delete(start, end)\n .setBlockType(start, start, nodeType, attrs);\n });\n}\n\nexport { InputRule, closeDoubleQuote, closeSingleQuote, ellipsis, emDash, inputRules, openDoubleQuote, openSingleQuote, smartQuotes, textblockTypeInputRule, undoInputRule, wrappingInputRule };\n","import { addRowAfter as pmAddRowAfter, addRowBefore as pmAddRowBefore } from 'prosemirror-tables-ts';\nimport { rowTypeAttr } from './config/constants';\n/**\n * Creates a table.\n * @returns Node\n */\nexport var createTable = function (nodes, rows, columns) {\n var table = nodes.table, table_row = nodes.table_row, table_cell = nodes.table_cell;\n var tableRows = [];\n var cells;\n for (var r = 0; r < rows + 1; r++) {\n cells = [];\n for (var c = 0; c < columns + 1; c++) {\n cells.push(table_cell.createAndFill());\n }\n tableRows.push(table_row.createAndFill(undefined, cells));\n }\n return table.createAndFill(undefined, tableRows);\n};\nvar closest = function (selection, name) {\n var pos = selection.$head;\n for (var i = pos.depth; i > 0; i--) {\n var node = pos.node(i);\n if (node.type.name === name) {\n return {\n pos: pos.before(i),\n node: node\n };\n }\n }\n return null;\n};\nexport var addRowBefore = function (state, dispatch) {\n var cmdDispatch = dispatch && (function (tr) {\n var _a;\n var row = closest(tr.selection, 'table_row');\n var table = closest(tr.selection, 'table');\n if (row && table && row.node.attrs[rowTypeAttr]) {\n var index = 0;\n for (var i = 0; i < table.node.nodeSize; i++) {\n if (table.node.child(i).eq(row.node)) {\n index = i;\n break;\n }\n }\n var next = table.node.child(index - 1);\n var from = row.pos - next.nodeSize;\n tr.setNodeMarkup(from, undefined, (_a = {}, _a[rowTypeAttr] = row.node.attrs[rowTypeAttr], _a));\n }\n return dispatch(tr);\n });\n return pmAddRowBefore(state, cmdDispatch);\n};\nexport var addRowAfter = function (state, dispatch) {\n var cmdDispatch = dispatch && (function (tr) {\n var _a;\n var row = closest(tr.selection, 'table_row');\n if (row && row.node.attrs[rowTypeAttr]) {\n var from = row.pos + row.node.nodeSize;\n tr.setNodeMarkup(from, undefined, (_a = {}, _a[rowTypeAttr] = row.node.attrs[rowTypeAttr], _a));\n }\n return dispatch(tr);\n });\n return pmAddRowAfter(state, cmdDispatch);\n};\nexport { pmAddRowBefore, pmAddRowAfter };\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};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { keys, messages } from './../messages';\nimport { bold as boldSettings, italic as italicSettings, underline as underlineSettings, strikethrough as strikethroughSettings, subscript as subscriptSettings, superscript as superscriptSettings, link as linkSettings, alignLeftRules, alignRightRules, alignCenterRules, alignJustifyRules, alignRemoveRules, indentRules, outdentRules } from '@progress/kendo-editor-common';\n/**\n * @hidden\n */\nexport var listsTypes = __assign({}, indentRules.listsTypes);\n/**\n * Represents a wrapping namespace for the tool settings of the Editor.\n */\nexport var EditorToolsSettings;\n(function (EditorToolsSettings) {\n /**\n * @hidden\n */\n var buttonCommonProps = {\n type: 'button'\n };\n /**\n * The object of the Bold tool settings.\n */\n EditorToolsSettings.bold = __assign(__assign({}, boldSettings), { props: __assign({ icon: 'bold' }, buttonCommonProps), messages: {\n title: keys.bold\n }, commandName: 'Bold' });\n /**\n * The object of the Italic tool settings.\n */\n EditorToolsSettings.italic = __assign(__assign({}, italicSettings), { props: __assign({ icon: 'italic' }, buttonCommonProps), messages: {\n title: keys.italic\n }, commandName: 'Italic' });\n /**\n * The object of the Underline tool settings.\n */\n EditorToolsSettings.underline = __assign(__assign({}, underlineSettings), { props: __assign({ icon: 'underline' }, buttonCommonProps), messages: {\n title: keys.underline\n }, commandName: 'Underline' });\n /**\n * The object of the Strikethrough tool settings.\n */\n EditorToolsSettings.strikethrough = __assign(__assign({}, strikethroughSettings), { props: __assign({ icon: 'strikethrough' }, buttonCommonProps), messages: {\n title: keys.strikethrough\n }, commandName: 'Strikethrough' });\n /**\n * The object of the Subscript tool settings.\n */\n EditorToolsSettings.subscript = __assign(__assign({}, subscriptSettings), { props: __assign({ icon: 'subscript' }, buttonCommonProps), messages: {\n title: keys.subscript\n }, commandName: 'Subscript' });\n /**\n * The object of the Superscript tool settings.\n */\n EditorToolsSettings.superscript = __assign(__assign({}, superscriptSettings), { props: __assign({ icon: 'superscript' }, buttonCommonProps), messages: {\n title: keys.superscript\n }, commandName: 'Superscript' });\n /**\n * The object of the Link tool settings.\n */\n EditorToolsSettings.link = __assign(__assign({}, linkSettings), { props: __assign({ icon: 'link-horizontal' }, buttonCommonProps), messages: {\n insertHyperlink: keys.insertHyperlink,\n insertHyperlinkDialogTitle: keys.insertHyperlinkDialogTitle,\n insertHyperlinkAddress: keys.insertHyperlinkAddress,\n insertHyperlinkTitle: keys.insertHyperlinkTitle,\n insertHyperlinkNewWindow: keys.insertHyperlinkNewWindow,\n insertHyperlinkCancel: keys.insertHyperlinkCancel,\n insertHyperlinkInsert: keys.insertHyperlinkInsert\n }, commandName: 'Link' });\n /**\n * The object of the Link tool settings.\n */\n EditorToolsSettings.insertFile = __assign(__assign({}, linkSettings), { props: __assign({ icon: 'file-add' }, buttonCommonProps), messages: {\n insertHyperlink: keys.insertFile,\n insertHyperlinkDialogTitle: keys.insertFileDialogTitle,\n insertHyperlinkAddress: keys.insertFileAddress,\n insertHyperlinkTitle: keys.insertFileTitle,\n insertHyperlinkNewWindow: '',\n insertHyperlinkCancel: keys.insertFileCancel,\n insertHyperlinkInsert: keys.insertFileInsert\n }, commandName: 'InsertFile', linkTarget: false });\n /**\n * The object of the InsertTable tool settings.\n */\n EditorToolsSettings.insertTable = {\n props: __assign({ icon: 'table-insert' }, buttonCommonProps),\n messages: {\n createTable: keys.createTable,\n createTableHint: keys.createTableHint\n },\n commandName: 'InsertTable'\n };\n /**\n * The object of the AddRowBefore tool settings.\n */\n EditorToolsSettings.addRowBefore = {\n props: __assign({ icon: 'table-row-insert-above' }, buttonCommonProps),\n messages: {\n title: keys.addRowBefore\n },\n commandName: 'AddRowBefore'\n };\n /**\n * The object of the AddRowAfter tool settings.\n */\n EditorToolsSettings.addRowAfter = {\n props: __assign({ icon: 'table-row-insert-below' }, buttonCommonProps),\n messages: {\n title: keys.addRowAfter\n },\n commandName: 'AddRowAfter'\n };\n /**\n * The object of the AddColumnBefore tool settings.\n */\n EditorToolsSettings.addColumnBefore = {\n props: __assign({ icon: 'table-column-insert-left' }, buttonCommonProps),\n messages: {\n title: keys.addColumnBefore\n },\n commandName: 'AddColumnBefore'\n };\n /**\n * The object of the AddColumnAfter tool settings.\n */\n EditorToolsSettings.addColumnAfter = {\n props: __assign({ icon: 'table-column-insert-right' }, buttonCommonProps),\n messages: {\n title: keys.addColumnAfter\n },\n commandName: 'AddColumnAfter'\n };\n /**\n * The object of the DeleteRow tool settings.\n */\n EditorToolsSettings.deleteRow = {\n props: __assign({ icon: 'table-row-delete' }, buttonCommonProps),\n messages: {\n title: keys.deleteRow\n },\n commandName: 'DeleteRow'\n };\n /**\n * The object of the DeleteColumn tool settings.\n */\n EditorToolsSettings.deleteColumn = {\n props: __assign({ icon: 'table-column-delete' }, buttonCommonProps),\n messages: {\n title: keys.deleteColumn\n },\n commandName: 'DeleteColumn'\n };\n /**\n * The object of the DeleteTable tool settings.\n */\n EditorToolsSettings.deleteTable = {\n props: __assign({ icon: 'table-delete' }, buttonCommonProps),\n messages: {\n title: keys.deleteTable\n },\n commandName: 'DeleteTable'\n };\n /**\n * The object of the MergeCells tool settings.\n */\n EditorToolsSettings.mergeCells = {\n props: __assign({ icon: 'cells-merge' }, buttonCommonProps),\n messages: {\n title: keys.mergeCells\n },\n commandName: 'MergeCells'\n };\n /**\n * The object of the SplitCell tool settings.\n */\n EditorToolsSettings.splitCell = {\n props: __assign({ icon: 'cell-split-horizontally' }, buttonCommonProps),\n messages: {\n title: keys.splitCell\n },\n commandName: 'SplitCell'\n };\n /**\n * The object of the Print tool settings.\n */\n EditorToolsSettings.print = {\n props: __assign({ icon: 'print' }, buttonCommonProps),\n messages: {\n title: keys.print\n }\n };\n /**\n * The object of the Print tool settings.\n */\n EditorToolsSettings.selectAll = {\n props: __assign({ icon: 'select-all' }, buttonCommonProps),\n messages: {\n title: keys.selectAll\n }\n };\n /**\n * The object of the Print tool settings.\n */\n EditorToolsSettings.pdf = {\n props: __assign({ icon: 'pdf' }, buttonCommonProps),\n messages: {\n title: keys.pdf\n }\n };\n /**\n * The PDF export options.\n *\n * const savePdfOptions = {\n * fileName: 'editor.pdf',\n * paperSize: 'A4',\n * margin: '1cm'\n * };\n */\n EditorToolsSettings.savePdfOptions = {\n fileName: 'editor.pdf',\n paperSize: 'A4',\n margin: '1cm'\n };\n /**\n * The object of the CleanFormatting tool settings.\n */\n EditorToolsSettings.cleanFormatting = {\n props: __assign({ icon: 'clear-css' }, buttonCommonProps),\n messages: {\n title: keys.cleanFormatting\n },\n commandName: 'CleanFormatting'\n };\n /**\n * The object of the InsertImage tool settings.\n */\n EditorToolsSettings.image = {\n node: 'image',\n props: __assign({ icon: 'image' }, buttonCommonProps),\n messages: {\n insertImage: keys.insertImage,\n insertImageDialogTitle: keys.insertImageDialogTitle,\n insertImageAddress: keys.insertImageAddress,\n insertImageTitle: keys.insertImageTitle,\n insertImageAltText: keys.insertImageAltText,\n insertImageWidth: keys.insertImageWidth,\n insertImageHeight: keys.insertImageHeight,\n insertImageCancel: keys.insertImageCancel,\n insertImageInsert: keys.insertImageInsert\n },\n commandName: 'InsertImage'\n };\n /**\n * The object of the ViewHtml tool settings.\n */\n EditorToolsSettings.viewHtml = {\n props: __assign({ icon: 'html' }, buttonCommonProps),\n messages: {\n viewHtml: keys.viewHtml,\n viewHtmlDialogTitle: keys.viewHtmlDialogTitle,\n viewHtmlCancel: keys.viewHtmlCancel,\n viewHtmlUpdate: keys.viewHtmlUpdate\n },\n commandName: 'SetContent'\n };\n /**\n * The object of the Find and Replace tool settings.\n */\n EditorToolsSettings.findAndReplace = {\n props: __assign({ icon: 'find' }, buttonCommonProps),\n messages: {\n findReplaceToolTitle: keys.findReplaceToolTitle,\n findReplaceDialogTitle: keys.findReplaceDialogTitle,\n findReplaceTabFind: keys.findReplaceTabFind,\n findReplaceTabReplace: keys.findReplaceTabReplace,\n findReplaceFindWhat: keys.findReplaceFindWhat,\n findReplaceReplaceWith: keys.findReplaceReplaceWith,\n findReplaceReplace: keys.findReplaceReplace,\n findReplaceReplaceAll: keys.findReplaceReplaceAll,\n findReplaceMatchCase: keys.findReplaceMatchCase,\n findReplaceMatchWord: keys.findReplaceMatchWord,\n findReplaceMatchCyclic: keys.findReplaceMatchCyclic,\n findReplaceUseRegExp: keys.findReplaceUseRegExp,\n findReplacePrevMatch: keys.findReplacePrevMatch,\n findReplaceNextMatch: keys.findReplaceNextMatch,\n findReplaceMatches: keys.findReplaceMatches\n }\n };\n /**\n * The object of the Unlink tool settings.\n */\n EditorToolsSettings.unlink = __assign(__assign({}, linkSettings), { props: __assign({ icon: 'unlink-horizontal' }, buttonCommonProps), messages: {\n title: keys.unlink\n }, commandName: 'Unlink' });\n /**\n * The object of the Undo tool settings.\n */\n EditorToolsSettings.undo = {\n props: __assign({ icon: 'undo' }, buttonCommonProps),\n messages: {\n title: keys.undo\n },\n commandName: 'Undo'\n };\n /**\n * The object of the Redo tool settings.\n */\n EditorToolsSettings.redo = {\n props: __assign({ icon: 'redo' }, buttonCommonProps),\n messages: {\n title: keys.redo\n },\n commandName: 'Redo'\n };\n /**\n * The object of the FontSize tool settings.\n */\n EditorToolsSettings.fontSize = {\n style: 'font-size',\n defaultItem: { text: messages[keys.fontSize], value: '', localizationKey: keys.fontSize },\n items: [\n { text: '1 (8pt)', value: 'xx-small' },\n { text: '2 (10pt)', value: 'x-small' },\n { text: '3 (12pt)', value: 'small' },\n { text: '4 (14pt)', value: 'medium' },\n { text: '5 (18pt)', value: 'large' },\n { text: '6 (24pt)', value: 'x-large' },\n { text: '7 (36pt)', value: 'xx-large' }\n ],\n commandName: 'FontSize'\n };\n /**\n * The object of the FontName tool settings.\n */\n EditorToolsSettings.fontName = {\n style: 'font-family',\n defaultItem: { text: messages[keys.fontName], value: '', localizationKey: keys.fontName },\n items: [\n { text: 'Arial', value: 'Arial, Helvetica, sans-serif',\n style: { fontFamily: 'Arial, Helvetica, sans-serif' } },\n { text: 'Courier New', value: '\\'Courier New\\', Courier, monospace',\n style: { fontFamily: '\\'Courier New\\', Courier, monospace' } },\n { text: 'Georgia', value: 'Georgia, serif',\n style: { fontFamily: 'Georgia, serif' } },\n { text: 'Impact', value: 'Impact, Charcoal, sans-serif',\n style: { fontFamily: 'Impact, Charcoal, sans-serif' } },\n { text: 'Lucida Console', value: '\\'Lucida Console\\', Monaco, monospace',\n style: { fontFamily: '\\'Lucida Console\\', Monaco, monospace' } },\n { text: 'Tahoma', value: 'Tahoma, Geneva, sans-serif',\n style: { fontFamily: 'Tahoma, Geneva, sans-serif' } },\n { text: 'Times New Roman', value: '\\'Times New Roman\\', Times,serif',\n style: { fontFamily: '\\'Times New Roman\\', Times,serif' } },\n { text: 'Trebuchet MS', value: '\\'Trebuchet MS\\', Helvetica, sans-serif',\n style: { fontFamily: '\\'Trebuchet MS\\', Helvetica, sans-serif' } },\n { text: 'Verdana', value: 'Verdana, Geneva, sans-serif',\n style: { fontFamily: 'Verdana, Geneva, sans-serif' } }\n ],\n commandName: 'FontName'\n };\n /**\n * The object of the FormatBlock tool settings.\n */\n EditorToolsSettings.formatBlock = {\n defaultItem: { text: messages[keys.format], value: '', localizationKey: keys.format },\n items: [\n { text: 'Paragraph', value: 'p', style: { display: 'block', marginLeft: 0 } },\n { text: 'Heading 1', value: 'h1', style: { display: 'block', fontSize: '2em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 2', value: 'h2', style: { display: 'block', fontSize: '1.5em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 3', value: 'h3', style: { display: 'block', fontSize: '1.17em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 4', value: 'h4', style: { display: 'block', fontSize: '1em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 5', value: 'h5', style: { display: 'block', fontSize: '0.83em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 6', value: 'h6', style: { display: 'block', fontSize: '0.67em', marginLeft: 0, fontWeight: 'bold' } }\n ],\n commandName: 'FormatBlock'\n };\n /**\n * The object of the ForeColor tool settings.\n */\n EditorToolsSettings.foreColor = {\n style: 'color',\n colorPickerProps: {\n icon: 'foreground-color',\n view: 'palette',\n title: keys.foregroundColor\n },\n commandName: 'ForeColor'\n };\n /**\n * The object of the BackColor tool settings.\n */\n EditorToolsSettings.backColor = {\n style: 'background-color',\n colorPickerProps: {\n icon: 'background',\n view: 'palette',\n title: keys.backgroundColor\n },\n commandName: 'BackColor'\n };\n /**\n * The object of the AlignLeft tool settings.\n */\n EditorToolsSettings.alignLeft = {\n actions: __spreadArray([], alignLeftRules, true),\n props: __assign({ icon: 'align-left' }, buttonCommonProps),\n messages: {\n title: keys.alignLeft\n },\n commandName: 'AlignLeft'\n };\n /**\n * The object of the AlignRight tool settings.\n */\n EditorToolsSettings.alignRight = {\n actions: __spreadArray([], alignRightRules, true),\n props: __assign({ icon: 'align-right' }, buttonCommonProps),\n messages: {\n title: keys.alignRight\n },\n commandName: 'AlignRight'\n };\n /**\n * The object of the AlignCenter tool settings.\n */\n EditorToolsSettings.alignCenter = {\n actions: __spreadArray([], alignCenterRules, true),\n props: __assign({ icon: 'align-center' }, buttonCommonProps),\n messages: {\n title: keys.alignCenter\n },\n commandName: 'AlignCenter'\n };\n /**\n * The object of the AlignJustify tool settings.\n */\n EditorToolsSettings.alignJustify = {\n actions: __spreadArray([], alignJustifyRules, true),\n props: __assign({ icon: 'align-justify' }, buttonCommonProps),\n messages: {\n title: keys.alignJustify\n },\n commandName: 'AlignJustify'\n };\n /**\n * The object of the AlignRemove tool settings.\n */\n EditorToolsSettings.alignRemove = {\n actions: __spreadArray([], alignRemoveRules, true),\n props: __assign({ icon: 'align-remove' }, buttonCommonProps),\n messages: {},\n commandName: 'AlignRemove'\n };\n /**\n * The object of the Indent tool settings.\n */\n EditorToolsSettings.indent = {\n actions: indentRules.nodes,\n listsTypes: listsTypes,\n props: __assign({ icon: 'indent-increase' }, buttonCommonProps),\n messages: {\n title: keys.indent\n },\n commandName: 'Indent'\n };\n /**\n * The object of the Outdent tool settings.\n */\n EditorToolsSettings.outdent = {\n actions: outdentRules.nodes,\n listsTypes: listsTypes,\n props: __assign({ icon: 'indent-decrease' }, buttonCommonProps),\n messages: {\n title: keys.outdent\n },\n commandName: 'Outdent'\n };\n /**\n * The object of the OrderedList tool settings.\n */\n EditorToolsSettings.orderedList = {\n listType: listsTypes.orderedList,\n props: __assign({ icon: 'list-ordered' }, buttonCommonProps),\n messages: {\n title: keys.orderedList\n },\n commandName: 'OrderedList',\n types: __assign({}, listsTypes)\n };\n /**\n * The object of the UnorderedList tool settings.\n */\n EditorToolsSettings.bulletList = {\n listType: listsTypes.bulletList,\n props: __assign({ icon: 'list-unordered' }, buttonCommonProps),\n messages: {\n title: keys.bulletList\n },\n commandName: 'UnorderedList',\n types: __assign({}, listsTypes)\n };\n})(EditorToolsSettings || (EditorToolsSettings = {}));\n","import * as React from 'react';\n/**\n * @hidden\n */\nvar onDownPreventDefault = {\n onMouseDown: function (e) { return e.preventDefault(); },\n onPointerDown: function (e) { return e.preventDefault(); }\n};\n/**\n * @hidden\n */\nvar userSelectNone = {\n userSelect: 'none'\n};\n/**\n * @hidden\n */\nvar formatString = function (input) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n args.forEach(function (value, index) {\n input = input.replace('{' + index + '}', String(value));\n });\n return input;\n};\n/**\n * @hidden\n */\nvar itemRender = function (li, itemProps) {\n return itemProps.dataItem.style ? React.cloneElement(li, li.props, (React.createElement(\"span\", { style: itemProps.dataItem.style }, li.props.children))) : li;\n};\nexport { onDownPreventDefault, formatString, itemRender, userSelectNone };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport PopupGrid from './popupGrid';\n/**\n * @hidden\n */\nexport var InsertTablePopupNS;\n(function (InsertTablePopupNS) {\n /**\n * @hidden\n */\n var InsertTablePopup = /** @class */ (function (_super) {\n __extends(InsertTablePopup, _super);\n function InsertTablePopup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pointerdown = false;\n _this.onWindowDown = function (event) {\n var anchor = _this.props.anchor;\n if (anchor && (anchor === event.target || anchor.firstElementChild === event.target)) {\n return;\n }\n if (_this.props.show && !_this.pointerdown) {\n _this.props.onClose();\n }\n _this.pointerdown = false;\n };\n _this.onPointerDown = function () { return _this.pointerdown = true; };\n return _this;\n }\n /**\n * @hidden\n */\n InsertTablePopup.prototype.componentDidUpdate = function (prevProps) {\n // The case when the popup is shown and the view is updated (selection or document is changed).\n if (prevProps.show && this.props.show) {\n this.props.onClose();\n }\n };\n /**\n * @hidden\n */\n InsertTablePopup.prototype.componentDidMount = function () {\n window.addEventListener('mousedown', this.onWindowDown);\n window.addEventListener('pointerdown', this.onWindowDown);\n };\n /**\n * @hidden\n */\n InsertTablePopup.prototype.componentWillUnmount = function () {\n window.removeEventListener('mousedown', this.onWindowDown);\n window.removeEventListener('pointerdown', this.onWindowDown);\n };\n /**\n * @hidden\n */\n InsertTablePopup.prototype.render = function () {\n var _a = this.props, show = _a.show, anchor = _a.anchor, dir = _a.dir, _b = _a.rows, rows = _b === void 0 ? InsertTablePopup.defaultProps.rows : _b, _c = _a.columns, columns = _c === void 0 ? InsertTablePopup.defaultProps.columns : _c;\n var horizontal = dir === 'rtl' ? 'right' : 'left';\n return (React.createElement(Popup, { anchor: anchor, anchorAlign: { horizontal: horizontal, vertical: 'bottom' }, popupAlign: { horizontal: horizontal, vertical: 'top' }, popupClass: \"k-ct-popup k-group k-reset k-state-border-up\", show: show, style: dir === 'rtl' ? { direction: 'rtl' } : undefined },\n React.createElement(PopupGrid, { rows: rows, columns: columns, createTableMessage: this.props.createTableMessage, createTableHintMessage: this.props.createTableHintMessage, onCellClick: this.props.onTableInsert, onDown: this.onPointerDown })));\n };\n /**\n * @hidden\n */\n InsertTablePopup.propTypes = {\n show: PropTypes.bool.isRequired,\n createTableMessage: PropTypes.string.isRequired,\n createTableHintMessage: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n onTableInsert: PropTypes.func.isRequired,\n anchor: PropTypes.any,\n rows: PropTypes.number,\n columns: PropTypes.number,\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n InsertTablePopup.defaultProps = {\n rows: 6,\n columns: 8\n };\n return InsertTablePopup;\n }(React.Component));\n InsertTablePopupNS.InsertTablePopup = InsertTablePopup;\n})(InsertTablePopupNS || (InsertTablePopupNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { formatString } from '../utils';\nvar cellClass = 'k-ct-cell k-disabled';\nvar selectedClass = 'k-selected';\n/**\n * @hidden\n */\nvar PopupGrid = /** @class */ (function (_super) {\n __extends(PopupGrid, _super);\n function PopupGrid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { row: -1, col: -1 };\n return _this;\n }\n PopupGrid.prototype.renderCell = function (index, selRow, selCol) {\n var _this = this;\n var row = Math.floor(index / this.props.columns);\n var col = index % this.props.columns;\n var selected = col <= selCol && row <= selRow;\n return (React.createElement(\"span\", { className: cellClass + (selected ? \" \".concat(selectedClass) : ''), onMouseEnter: function () { return _this.setState({ row: row, col: col }); }, onClick: function () { return _this.props.onCellClick.call(undefined, row, col); }, key: index }));\n };\n PopupGrid.prototype.render = function () {\n var _this = this;\n var cells = [];\n var total = this.props.columns * this.props.rows;\n var _a = this.state, row = _a.row, col = _a.col;\n var onDown = this.props.onDown;\n var message = this.props.createTableMessage;\n if (col > -1) {\n message = formatString(this.props.createTableHintMessage, row + 1, col + 1);\n }\n for (var i = 0; i < total; i++) {\n cells.push(this.renderCell(i, row, col));\n }\n return [(React.createElement(\"div\", { onMouseLeave: function () { return _this.setState({ row: -1, col: -1 }); }, key: \"cells\", style: { borderColor: 'inherit' }, onPointerDown: onDown, onMouseDown: onDown }, cells)), (React.createElement(\"div\", { className: \"k-status\", key: \"status\", onPointerDown: onDown, onMouseDown: onDown }, message))];\n };\n return PopupGrid;\n}(React.Component));\nexport default PopupGrid;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { onDownPreventDefault } from './../utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../../messages';\nimport { InsertTablePopupNS } from './popup';\nimport { canInsert, createTable, insertNode } from '@progress/kendo-editor-common';\n/**\n * @hidden\n */\nexport var InsertTableToolNS;\n(function (InsertTableToolNS) {\n /**\n * @hidden\n */\n InsertTableToolNS.createInsertTableTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(InsertTableTool, _super);\n function InsertTableTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n openedPopup: false\n };\n _this.button = null;\n _this.togglePopup = function () {\n _this.setState({\n openedPopup: !_this.state.openedPopup\n });\n };\n _this.closePopup = function () {\n if (_this.state.openedPopup) {\n _this.togglePopup();\n }\n };\n _this.onTableInsert = function (row, col) {\n var view = _this.props.view;\n if (!view) {\n return;\n }\n var _a = view.state.schema.nodes, table = _a.table, table_row = _a.table_row, table_cell = _a.table_cell;\n var newTable = createTable({ table: table, table_row: table_row, table_cell: table_cell }, row, col);\n if (newTable) {\n insertNode(newTable, true)(view.state, view.dispatch);\n }\n view.focus();\n _this.closePopup();\n };\n return _this;\n }\n InsertTableTool.prototype.render = function () {\n var _this = this;\n var _a = this.props, view = _a.view, render = _a.render, props = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var localization = provideLocalizationService(this);\n var _b = settings.messages, createTableMsgKey = _b.createTable, createTableHint = _b.createTableHint;\n var createTableMsg = localization.toLanguageString(createTableMsgKey, messages[createTableMsgKey]);\n var createTableHintMsg = localization.toLanguageString(createTableHint, messages[createTableHint]);\n var rendering = [(React.createElement(Button, __assign({ onClick: this.togglePopup, ref: function (e) { return _this.button = e && e.element; }, key: \"InsertTable\", disabled: !state || !canInsert(state, state.schema.nodes.table) }, onDownPreventDefault, { title: createTableMsg }, settings.props, props))), (view && (React.createElement(InsertTablePopupNS.InsertTablePopup, { key: \"insertTablePopup\", createTableMessage: createTableMsg, createTableHintMessage: createTableHintMsg, dir: props.dir, anchor: this.button, show: this.state.openedPopup, onClose: this.closePopup, onTableInsert: this.onTableInsert })) || null)];\n return render ? render.call(undefined, rendering, { view: view }) : rendering;\n };\n return InsertTableTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(InsertTableToolNS || (InsertTableToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { EditorToolsSettings } from '../config/toolsSettings';\nimport { alignBlocks, isAligned } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nvar alignRemove = EditorToolsSettings.alignRemove;\n/**\n * @hidden\n */\nexport var createAlignTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(AlignTool, _super);\n function AlignTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AlignTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, props = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var aligned = !!state && isAligned(state, settings.actions);\n var actions = aligned ? alignRemove.actions : settings.actions;\n var commandName = aligned ? alignRemove.commandName : settings.commandName;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var button = (React.createElement(Button, __assign({ onClick: function () { return view && alignBlocks(actions, commandName)(view.state, view.dispatch); }, selected: aligned, togglable: true }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, props)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return AlignTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { getInlineStyles, applyInlineStyle } from '@progress/kendo-editor-common';\nimport { userSelectNone, itemRender } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var FontStyleToolNS;\n(function (FontStyleToolNS) {\n /**\n * @hidden\n */\n FontStyleToolNS.createStyleDropDownList = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(DropDownListTool, _super);\n function DropDownListTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onChange = function (event) {\n var item = event.target.value;\n var view = _this.props.view;\n var style = settings.style;\n if (view) {\n applyInlineStyle({ style: style, value: item.value }, settings.commandName)(view.state, view.dispatch);\n var syntheticEvent = event.syntheticEvent;\n if (syntheticEvent && syntheticEvent.type === 'click') {\n view.focus();\n }\n }\n };\n return _this;\n }\n DropDownListTool.prototype.render = function () {\n var style = settings.style;\n var _a = this.props, view = _a.view, render = _a.render, data = _a.data, defaultItemProps = _a.defaultItem, ddlProps = __rest(_a, [\"view\", \"render\", \"data\", \"defaultItem\"]);\n var items = data || settings.items;\n var defaultItem = defaultItemProps || settings.defaultItem;\n var styles = view ? getInlineStyles(view.state, { name: style, value: /^.+$/ }) : [];\n var localization = provideLocalizationService(this);\n if (defaultItem && defaultItem.localizationKey) {\n defaultItem = __assign({}, defaultItem);\n defaultItem.text = defaultItem.localizationKey ? localization.toLanguageString(defaultItem.localizationKey, messages[defaultItem.localizationKey]) : defaultItem.text;\n }\n var value = new Set(styles).size === 1 ? styles[0] : null;\n var dropdown = (React.createElement(DropDownList, __assign({ value: value ? items.find(function (i) { return i.value === value; }) : value, data: items, defaultItem: defaultItem, itemRender: itemRender, textField: \"text\", dataItemKey: \"value\", onChange: this.onChange, style: userSelectNone, leftRightKeysNavigation: false }, ddlProps)));\n return render ? render.call(undefined, dropdown, { view: view }) : dropdown;\n };\n return DropDownListTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(FontStyleToolNS || (FontStyleToolNS = {}));\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 * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ANCHOR_VERTICAL_ALIGN = 'bottom';\n/**\n * @hidden\n */\nvar POPUP_VERTICAL_ALIGN = 'top';\n/**\n * @hidden\n */\nexport var Picker = function (props) {\n var popupSettings = props.popupSettings || {};\n var horizontalAlign = props.dir === 'rtl' ? 'right' : 'left';\n var anchorAlign = React.useMemo(function () { return ({ horizontal: horizontalAlign, vertical: ANCHOR_VERTICAL_ALIGN }); }, [horizontalAlign]);\n var popupAlign = React.useMemo(function () { return ({ horizontal: horizontalAlign, vertical: POPUP_VERTICAL_ALIGN }); }, [horizontalAlign]);\n return (React.createElement(React.Fragment, null,\n props.input,\n props.button,\n React.createElement(Popup, __assign({ style: __assign(__assign({}, (popupSettings || {}).style), { direction: props.dir }) }, popupSettings, { anchor: props.popupAnchor, anchorAlign: anchorAlign, popupAlign: popupAlign, show: props.open, onOpen: props.onOpen, onClose: props.onClose, className: classNames('k-reset', popupSettings.className) }), props.content)));\n};\nPicker.displayName = 'KendoPickerComponent';\n","/**\n * @hidden\n */\nexport var focusFirstFocusableChild = function (target) {\n if (target) {\n if ((target instanceof HTMLInputElement || target.tabIndex !== -1) && target.focus) {\n target.focus();\n return;\n }\n var element = target.querySelector('input, [tabindex]:not([tabindex=\"-1\"])');\n if (element && element.focus) {\n element.focus();\n }\n }\n};\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 * as React from 'react';\nimport { useDir } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var SLIDER_LABEL_ATTRIBUTE = 'data-slider-label';\n/**\n * Represents the KendoReact SliderLabel component.\n */\nexport var SliderLabel = function (props) {\n var _a, _b;\n var sliderLabelRef = React.useRef(null);\n var dir = useDir(sliderLabelRef);\n var style = props.vertical\n ? { bottom: \"\".concat(props.position, \"%\") }\n : (_a = {}, _a[dir === 'rtl' ? 'right' : 'left'] = \"\".concat(props.position, \"%\"), _a);\n var tickStyle = props.vertical ? 'k-tick-vertical' : 'k-tick-horizontal';\n return (React.createElement(\"li\", { ref: sliderLabelRef, role: \"presentation\", className: \"k-tick k-tick-large \".concat(tickStyle), title: props.title, style: __assign({ zIndex: 1, position: 'absolute' }, style) },\n React.createElement(\"span\", __assign({}, (_b = {}, _b[SLIDER_LABEL_ATTRIBUTE] = true, _b), { className: \"k-label\", onClick: props.onClick }), props.children)));\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent, Keys, classNames, Draggable, getTabIndex, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, sliderIncreaseValue, sliderDecreaseValue, sliderDragTitle } from './../messages';\nimport { SLIDER_LABEL_ATTRIBUTE } from './SliderLabel';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { Button } from '@progress/kendo-react-buttons';\n/** @hidden */\nvar SliderWithoutContext = /** @class */ (function (_super) {\n __extends(SliderWithoutContext, _super);\n function SliderWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n value: _this.props.defaultValue === undefined ? _this.props.min : _this.props.defaultValue,\n focused: false,\n dir: _this.props.dir\n };\n _this._sliderTrack = null;\n _this._element = null;\n /**\n * @hidden\n */\n _this.buttons = function (props) {\n if (!props.enabled) {\n return props.children;\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(Button, { className: \"k-button-decrease k-rounded-full\", \n // rounded={'full'}\n icon: _this.props.vertical ? 'arrow-s' : 'arrow-w', title: props.decrementTitle, onClick: props.decrement }),\n props.children,\n React.createElement(Button, { className: \"k-button-increase k-rounded-full\", \n // rounded={'full'}\n icon: _this.props.vertical ? 'arrow-n' : 'arrow-e', title: props.incrementTitle, onClick: props.increment })));\n };\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._element) {\n _this._element.focus();\n }\n };\n _this.isLabel = function (target) {\n var currentTarget = target;\n while (currentTarget) {\n if (Boolean(currentTarget.getAttribute(SLIDER_LABEL_ATTRIBUTE))) {\n return true;\n }\n currentTarget = currentTarget.parentElement;\n }\n return false;\n };\n _this.onFocus = function () {\n _this.setState({ focused: true });\n };\n _this.onBlur = function () {\n _this.setState({ focused: false });\n };\n _this.onKeyDown = function (e) {\n var newValue = undefined;\n if (e.keyCode === Keys.left || e.keyCode === Keys.down) {\n newValue = _this.state.value - (_this.props.step || 0);\n }\n else if (e.keyCode === Keys.right || e.keyCode === Keys.up) {\n newValue = _this.state.value + (_this.props.step || 0);\n }\n else if (e.keyCode === Keys.home) {\n newValue = _this.props.min;\n }\n else if (e.keyCode === Keys.end) {\n newValue = _this.props.max;\n }\n if (newValue !== undefined) {\n e.preventDefault();\n _this.change(e, newValue);\n }\n };\n _this.decrement = function (e) {\n e.preventDefault();\n _this.change(e, _this.state.value - (_this.props.step || 0));\n };\n _this.increment = function (e) {\n e.preventDefault();\n _this.change(e, _this.state.value + (_this.props.step || 0));\n };\n _this.dragStart = function (e) {\n if (!_this.isLabel(e.event.originalEvent.target)) {\n if (e.event.isTouch) {\n e.event.originalEvent.preventDefault();\n }\n _this.drag(e);\n }\n };\n _this.dragOver = function (e) {\n e.event.originalEvent.preventDefault();\n _this.drag(e);\n };\n _this.drag = function (e) {\n var computed = e.element.getBoundingClientRect();\n var distance = _this.props.vertical\n ? (computed.bottom - e.event.clientY)\n : (_this.state.dir === 'rtl'\n ? computed.right - e.event.clientX\n : e.event.clientX - computed.left);\n var size = _this.props.vertical ? computed.height : computed.width;\n var percentage = (distance / size);\n _this.change(e, _this.props.min + percentage * (_this.props.max - _this.props.min));\n };\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n SliderWithoutContext.getDerivedStateFromProps = function (props, state) {\n var value = props.value !== undefined ? props.value : state.value;\n var min = props.min, max = props.max;\n return value === undefined ? null :\n { value: Math.min(Math.max(value, min), max) };\n };\n /**\n * @hidden\n */\n SliderWithoutContext.prototype.componentDidMount = function () {\n if (!this.state.dir && window && this._element) {\n // Note: getComputedStyle forces reflow\n var direction = window.getComputedStyle(this._element).direction;\n if (direction) {\n this.setState({ dir: direction });\n }\n }\n };\n /**\n * @hidden\n */\n SliderWithoutContext.prototype.render = function () {\n var _a;\n var _this = this;\n var lS = provideLocalizationService(this);\n var percentValue = ((this.state.value - this.props.min) / (this.props.max - this.props.min)) * 100;\n var trackStyles = this.props.vertical\n ? { marginTop: '0.5rem', marginBottom: '0.5rem' }\n : { marginLeft: '0.5rem', marginRight: '0.5rem' };\n var sliderItemsStyle = this.props.vertical\n ? { paddingTop: 0, height: '100%' }\n : {};\n return (React.createElement(\"div\", { ref: function (el) { return _this._element = el; }, \"aria-valuemin\": this.props.min, \"aria-valuemax\": this.props.max, \"aria-valuenow\": this.state.value, \"aria-disabled\": this.props.disabled ? 'true' : undefined, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, dir: this.state.dir, role: \"slider\", id: this.props.id, style: __assign({ gap: 0 }, this.props.style), tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled, undefined), onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, className: classNames('k-slider k-widget', {\n 'k-focus': this.state.focused,\n 'k-disabled': this.props.disabled,\n 'k-slider-horizontal': !this.props.vertical,\n 'k-slider-vertical': this.props.vertical\n }, this.props.className) },\n React.createElement(this.buttons, { enabled: this.props.buttons, decrement: this.decrement, increment: this.increment, incrementTitle: lS.toLanguageString(sliderIncreaseValue, messages[sliderIncreaseValue]), decrementTitle: lS.toLanguageString(sliderDecreaseValue, messages[sliderDecreaseValue]) },\n React.createElement(Draggable, { onDrag: this.dragOver, onPress: this.dragStart },\n React.createElement(\"div\", { className: \"k-slider-track-wrap\", style: __assign({ flexGrow: 1, position: 'relative', touchAction: 'none' }, trackStyles) },\n this.props.children && (React.createElement(\"ul\", { className: \"k-reset k-slider-items\", style: __assign({ margin: 0 }, sliderItemsStyle) }, React.Children.map(this.props.children, function (child) {\n return child && React.cloneElement(child, {\n position: 100 * (child.props.position - _this.props.min) /\n (_this.props.max - _this.props.min),\n vertical: _this.props.vertical\n }, child.props.children);\n }))),\n React.createElement(\"div\", { className: \"k-slider-track\", style: this.props.vertical\n ? { bottom: 0, height: '100%' }\n : (_a = {}, _a[this.state.dir === 'rtl' ? 'right' : 'left'] = 0, _a.width = '100%', _a), ref: function (el) { return _this._sliderTrack = el; } },\n React.createElement(\"div\", { className: \"k-slider-selection\", style: this.props.vertical\n ? { height: percentValue + '%' }\n : { width: percentValue + '%' } }),\n React.createElement(\"a\", { className: \"k-draghandle\", title: lS.toLanguageString(sliderDragTitle, messages[sliderDragTitle]), style: this.props.vertical\n ? { bottom: 'calc(' + percentValue + '%)', zIndex: 1 }\n : this.state.dir === 'rtl' ? { right: 'calc(' + percentValue + '% - 13px)', zIndex: 1 }\n : { left: 'calc(' + percentValue + '%)', zIndex: 1 } })))))));\n };\n Object.defineProperty(SliderWithoutContext.prototype, \"sliderTrack\", {\n /**\n * @hidden\n */\n get: function () {\n return this._sliderTrack;\n },\n enumerable: false,\n configurable: true\n });\n SliderWithoutContext.prototype.change = function (e, value) {\n value = Math.min(Math.max(value, this.props.min), this.props.max);\n this.setState({ value: value });\n dispatchEvent(this.props.onChange, e, this, { value: value });\n };\n SliderWithoutContext.displayName = 'Slider';\n /**\n * @hidden\n */\n SliderWithoutContext.propTypes = {\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired,\n value: PropTypes.number,\n vertical: PropTypes.bool,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string\n // TODO: validation when buttons is set to true, but no step is provided\n };\n return SliderWithoutContext;\n}(React.Component));\nexport { SliderWithoutContext };\n/**\n * Represents the PropsContext of the `Slider` component.\n * Used for global configuration of all `Slider` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var SliderPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Slider component]({% slug overview_slider %}).\n *\n * Accepts properties of type [SliderProps]({% slug api_inputs_sliderprops %}).\n * Obtaining the `ref` returns an object of type [SliderHandle]({% slug api_inputs_sliderhandle %}).\n */\nexport var Slider = withPropsContext(SliderPropsContext, SliderWithoutContext);\nSlider.displayName = 'KendoReactSlider';\nregisterForLocalization(SliderWithoutContext);\n","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n *\n * Fits the contender number into the specified bounds.\n * If the number is NaN or null, the minimum is returned.\n *\n * @param contender Represents the number you want to fit into the specified bounds.\n * @param min The inclusive lower bound number.\n * @param max The inclusive upper bound number.\n */\nexport var fitIntoBounds = function (contender, min, max) {\n if (!isPresent(contender) || isNaN(contender)) {\n return min;\n }\n return contender <= min ? min : contender >= max ? max : contender;\n};\n","var Class = function Class () {};\n\nexport default Class;\n","function matchUserAgent(userAgent) {\n var browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n };\n\n var browser = {};\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n var match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n}\n\nvar browser = null;\n\nvar support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","var namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nvar browser = support.browser;\n\nvar matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n};\n\nvar BaseColor = (function (Class) {\n function BaseColor() { Class.call(this); }\n\n if ( Class ) BaseColor.__proto__ = Class;\n BaseColor.prototype = Object.create( Class && Class.prototype );\n BaseColor.prototype.constructor = BaseColor;\n BaseColor.prototype.toHSV = function toHSV () { return this; };\n\n BaseColor.prototype.toRGB = function toRGB () { return this; };\n\n BaseColor.prototype.toHex = function toHex (options) { return this.toBytes().toHex(options); };\n\n BaseColor.prototype.toBytes = function toBytes () { return this; };\n\n BaseColor.prototype.toCss = function toCss (options) { return \"#\" + this.toHex(options); };\n\n BaseColor.prototype.toCssRgba = function toCssRgba () {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n };\n\n BaseColor.prototype.toDisplay = function toDisplay () {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n };\n\n BaseColor.prototype.equals = function equals (c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n };\n\n BaseColor.prototype.diff = function diff (other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n };\n\n BaseColor.prototype.clone = function clone () {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n };\n\n return BaseColor;\n}(Class));\n\nvar RGB = (function (BaseColor) {\n function RGB(r, g, b, a) {\n BaseColor.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n if ( BaseColor ) RGB.__proto__ = BaseColor;\n RGB.prototype = Object.create( BaseColor && BaseColor.prototype );\n RGB.prototype.constructor = RGB;\n\n RGB.prototype.toHSV = function toHSV () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n };\n\n RGB.prototype.toHSL = function toHSL () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n };\n\n RGB.prototype.toBytes = function toBytes () {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n };\n\n return RGB;\n}(BaseColor));\n\nvar Bytes = (function (RGB) {\n function Bytes(r, g, b, a) {\n RGB.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n if ( RGB ) Bytes.__proto__ = RGB;\n Bytes.prototype = Object.create( RGB && RGB.prototype );\n Bytes.prototype.constructor = Bytes;\n\n Bytes.prototype.toRGB = function toRGB () {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n };\n\n Bytes.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n Bytes.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n Bytes.prototype.toHex = function toHex (options) {\n var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n };\n\n Bytes.prototype.toBytes = function toBytes () {\n return this;\n };\n\n return Bytes;\n}(RGB));\n\nfunction hex(n, width, pad) {\n if ( pad === void 0 ) pad = \"0\";\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nvar HSV = (function (BaseColor) {\n function HSV(h, s, v, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n if ( BaseColor ) HSV.__proto__ = BaseColor;\n HSV.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSV.prototype.constructor = HSV;\n\n HSV.prototype.toRGB = function toRGB () {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSV.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n HSV.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSV;\n}(BaseColor));\n\nvar HSL = (function (BaseColor) {\n function HSL(h, s, l, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n if ( BaseColor ) HSL.__proto__ = BaseColor;\n HSL.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSL.prototype.constructor = HSL;\n\n HSL.prototype.toRGB = function toRGB () {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSL.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n HSL.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSL;\n}(BaseColor));\n\nfunction hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n var m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nvar DARK_TRESHOLD = 180;\n\nvar Color = (function (Class) {\n function Color(value) {\n var this$1 = this;\n\n Class.call(this);\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1.r = channels[0];\n this$1.g = channels[1];\n this$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n if ( Class ) Color.__proto__ = Class;\n Color.prototype = Object.create( Class && Class.prototype );\n Color.prototype.constructor = Color;\n\n Color.prototype.toHex = function toHex () {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n };\n\n Color.prototype.resolveColor = function resolveColor (value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n };\n\n Color.prototype.normalizeByte = function normalizeByte (value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n };\n\n Color.prototype.padDigit = function padDigit (value) {\n return (value.length === 1) ? \"0\" + value : value;\n };\n\n Color.prototype.brightness = function brightness (value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n };\n\n Color.prototype.percBrightness = function percBrightness () {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n };\n\n Color.prototype.isDark = function isDark () {\n return this.percBrightness() < DARK_TRESHOLD;\n };\n\n Color.fromBytes = function fromBytes (r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function fromRGB (r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function fromHSV (h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function fromHSL (h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n return Color;\n}(Class));\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","import { parseColor as parse, Color } from '@progress/kendo-drawing';\nimport { isPresent, fitIntoBounds } from './misc';\n/**\n * @hidden\n *\n * Returns the hex or RGBA string representation of the color.\n */\nexport var parseColor = function (value, format, safe) {\n if (safe === void 0) { safe = true; }\n var allowedFormats = ['hex', 'rgba']; // TODO: constant?\n // Angular supports third type: name : const allowedFormats: Array = ['hex', 'rgba', 'name'];\n if (allowedFormats.indexOf(format) === -1) {\n throw new Error(\"Unsupported color output format '\".concat(format, \"'. The available options are 'hex' or 'rgba'.\"));\n }\n if (!isPresent(value)) {\n return;\n }\n var parsedColor = parse(value.trim(), safe);\n if (!isPresent(parsedColor)) {\n return;\n }\n return format === 'hex' ? parsedColor.toCss() : parsedColor.toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns an HSV object representation of the color string.\n */\nexport var getHSV = function (value, safe) {\n if (safe === void 0) { safe = true; }\n var parsed = parse(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toHSV();\n};\n/**\n * @hidden\n *\n * Returns an RGBA object representation of the color string.\n */\nexport var getRGBA = function (value, safe) {\n if (safe === void 0) { safe = true; }\n var parsed = parse(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toBytes();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nexport var getColorFromHSV = function (hsva) {\n var hue = fitIntoBounds(hsva.h, 0, 359.9);\n var saturation = fitIntoBounds(hsva.s, 0, 1);\n var value = fitIntoBounds(hsva.v, 0, 1);\n var alpha = fitIntoBounds(hsva.a, 0, 1);\n return Color.fromHSV(hue, saturation, value, alpha).toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color based on the `hue` and\n * assuming the `value`, `saturation`, and `alpha` have a value of `1`.\n */\nexport var getColorFromHue = function (hue) {\n return getColorFromHSV({ h: hue, s: 1, v: 1, a: 1 });\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nexport var getColorFromRGBA = function (rgba) {\n var red = fitIntoBounds(rgba.r, 0, 255);\n var green = fitIntoBounds(rgba.g, 0, 255);\n var blue = fitIntoBounds(rgba.b, 0, 255);\n var alpha = fitIntoBounds(rgba.a, 0, 1);\n return Color.fromBytes(red, green, blue, alpha).toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the RGB object representation of the color based on the background color.\n */\nexport var getRGBFromRGBA = function (foregroundColor, backgroundColor) {\n var r1 = fitIntoBounds(foregroundColor.r, 0, 255);\n var g1 = fitIntoBounds(foregroundColor.g, 0, 255);\n var b1 = fitIntoBounds(foregroundColor.b, 0, 255);\n var a1 = fitIntoBounds(foregroundColor.a, 0, 1);\n var r2 = fitIntoBounds(backgroundColor.r, 0, 255);\n var g2 = fitIntoBounds(backgroundColor.g, 0, 255);\n var b2 = fitIntoBounds(backgroundColor.b, 0, 255);\n return {\n r: Math.round(((1 - a1) * r2) + (a1 * r1)),\n g: Math.round(((1 - a1) * g2) + (a1 * g1)),\n b: Math.round(((1 - a1) * b2) + (a1 * b1))\n };\n};\n/**\n * @hidden\n *\n * Returns the relative luminance.\n */\nexport var getLuminance = function (rgb) {\n var a = [rgb.r || 0, rgb.g || 0, rgb.b || 0].map(function (v) {\n v /= 255;\n return v <= 0.03928\n ? v / 12.92\n : Math.pow((v + 0.055) / 1.055, 2.4);\n });\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\n};\n/**\n * @hidden\n *\n * Returns the color contrast.\n */\nexport var getContrast = function (luminance1, luminance2) {\n var brightest = Math.max(luminance1, luminance2);\n var darkest = Math.min(luminance1, luminance2);\n return (brightest + 0.05)\n / (darkest + 0.05);\n};\n/**\n * @hidden\n *\n * Returns the color contrast from two RGBA colors.\n */\nexport var getContrastFromTwoRGBAs = function (a, b) {\n return getContrast(getLuminance(getRGBFromRGBA(a, b)), getLuminance(getRGBFromRGBA(b, { r: 0, g: 0, b: 0, a: 1 })));\n};\n","var cache = {};\n/**\n * @hidden\n */\nexport function cacheHsva(componentGuid, value, hsva) {\n cache[componentGuid] = { value: value, hsva: hsva };\n}\n/**\n * @hidden\n */\nexport function cacheRgba(componentGuid, value, rgba) {\n cache[componentGuid] = { value: value, rgba: rgba };\n}\n/**\n * @hidden\n */\nexport function cacheHex(componentGuid, value, hex) {\n cache[componentGuid] = { value: value, hex: hex };\n}\n/**\n * @hidden\n */\nexport function removeCachedColor(componentGuid) {\n delete cache[componentGuid];\n}\n/**\n * @hidden\n */\nexport function getCachedHex(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.hex : undefined;\n }\n else {\n return undefined;\n }\n}\n/**\n * @hidden\n */\nexport function getCachedHsva(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.hsva : undefined;\n }\n else {\n return undefined;\n }\n}\n/**\n * @hidden\n */\nexport function getCachedRgba(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.rgba : undefined;\n }\n else {\n return undefined;\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { parseColor } from './utils/color-parser';\nimport { isPresent } from './utils/misc';\nimport { Input } from '../input/Input';\n/**\n * @hidden\n */\nvar HexInput = /** @class */ (function (_super) {\n __extends(HexInput, _super);\n function HexInput(props) {\n var _this = _super.call(this, props) || this;\n _this.onChange = function (event) {\n var hex = event.target.value;\n var value = parseColor(hex, 'rgba');\n _this.setState({ hex: hex });\n if (isPresent(value)) {\n _this.props.onHexChange(hex, value, event);\n }\n };\n _this.onBlur = function () {\n if (!isPresent(parseColor(_this.state.hex, 'rgba'))) {\n _this.setState({ hex: _this.state.originalHex });\n }\n };\n _this.state = { hex: _this.props.hex, originalHex: _this.props.hex };\n return _this;\n }\n HexInput.prototype.render = function () {\n return (React.createElement(Input, { value: this.state.hex, onChange: this.onChange, onBlur: this.onBlur, disabled: this.props.disabled }));\n };\n HexInput.getDerivedStateFromProps = function (props, state) {\n if (props.hex !== state.originalHex) {\n return { hex: props.hex, originalHex: props.hex };\n }\n return null;\n };\n return HexInput;\n}(React.Component));\nexport default HexInput;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { labelsOptional, messages } from './messages';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * Represents the KendoReact Label component.\n *\n * @example\n * ```jsx\n * const sizes = [\"X-Small\", \"Small\", \"Medium\", \"Large\", \"X-Large\", \"2X-Large\"];\n * const App = () => {\n * const ddlRef = React.useRef(null);\n * const labelId = 'ddl-sizes-label';\n * const editorId = 'ddl-sizes';\n *\n * return (\n *
\n * \n * \n *
\n *
\n * );\n * };\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Label = function (props) {\n validatePackage(packageMetadata);\n var id = props.id, editorId = props.editorId, editorRef = props.editorRef, editorDisabled = props.editorDisabled, children = props.children, editorValid = props.editorValid, style = props.style, className = props.className, optional = props.optional;\n var localizationService = useLocalization();\n var localizedOptional = optional ? localizationService\n .toLanguageString(labelsOptional, messages[labelsOptional]) : '';\n var optionalElement = localizedOptional && (React.createElement(\"span\", { className: 'k-label-optional' }, localizedOptional));\n var onLabelClick = React.useCallback(function (e) {\n if (editorRef && editorRef.current && !editorDisabled) {\n if (editorRef.current.focus) {\n e.preventDefault();\n editorRef.current.focus();\n }\n var editorActionElement = editorRef.current.actionElement;\n if (editorActionElement) {\n e.preventDefault();\n editorActionElement.click();\n }\n }\n }, [editorRef]);\n var labelClassName = classNames({\n 'k-label': true,\n 'k-label-empty': !children,\n 'k-text-error': editorValid === false,\n 'k-text-disabled': editorDisabled === true\n }, className);\n return (React.createElement(\"label\", { id: id, htmlFor: editorId, onClick: onLabelClick, style: style, className: labelClassName },\n children,\n optionalElement));\n};\nLabel.propTypes = {\n id: PropTypes.string,\n editorId: PropTypes.string,\n editorRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]),\n editorValid: PropTypes.bool,\n editorDisabled: PropTypes.bool,\n style: PropTypes.object,\n className: PropTypes.string,\n optional: PropTypes.bool\n};\nLabel.displayName = 'KendoReactLabel';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { NumericTextBox } from '../main';\nimport HexInput from './HexInput';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { Label } from '@progress/kendo-react-labels';\nimport { registerForIntl, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, colorGradientR, colorGradientHex, colorGradientA, colorGradientB, colorGradientG } from '../messages';\n/**\n * @hidden\n */\nvar modes = ['rgba', 'rgb', 'hex'];\n/**\n * @hidden\n */\nvar ColorInput = /** @class */ (function (_super) {\n __extends(ColorInput, _super);\n function ColorInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n inputMode: modes[1]\n };\n _this.onRgbaRChange = function (event) {\n _this.dispatchRgbaChange({ r: event.value }, event);\n };\n _this.onRgbaGChange = function (event) {\n _this.dispatchRgbaChange({ g: event.value }, event);\n };\n _this.onRgbaBChange = function (event) {\n _this.dispatchRgbaChange({ b: event.value }, event);\n };\n _this.onRgbaAChange = function (event) {\n _this.dispatchRgbaChange({ a: event.value }, event);\n };\n return _this;\n }\n ColorInput.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var hexMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientHex]);\n var rMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientR]);\n var gMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientG]);\n var bMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientB]);\n var aMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientA]);\n return (React.createElement(\"div\", { className: \"k-colorgradient-inputs k-hstack\" },\n React.createElement(\"div\", { className: \"k-vstack\" },\n React.createElement(Button, { fillMode: 'flat', icon: 'arrows-kpi', className: \"k-colorgradient-toggle-mode k-icon-button\", onClick: this.onToggleModeChange.bind(this) })),\n this.state.inputMode === 'hex' &&\n React.createElement(\"div\", { className: \"k-vstack k-flex-1\" },\n React.createElement(\"span\", { className: \"k-hex-value k-textbox k-input\" },\n React.createElement(HexInput, { hex: this.props.hex, onHexChange: this.props.onHexChange, disabled: this.props.disabled })),\n React.createElement(Label, { className: \"k-colorgradient-input-label\" }, hexMessage)),\n (this.state.inputMode === 'rgb' || this.state.inputMode === 'rgba') &&\n React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"k-vstack\" },\n React.createElement(NumericTextBox, { value: this.props.rgba.r, min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaRChange, disabled: this.props.disabled }),\n React.createElement(Label, { className: \"k-colorgradient-input-label\" }, rMessage)),\n React.createElement(\"div\", { className: \"k-vstack\" },\n React.createElement(NumericTextBox, { value: this.props.rgba.g, min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaGChange, disabled: this.props.disabled }),\n React.createElement(Label, { className: \"k-colorgradient-input-label\" }, gMessage)),\n React.createElement(\"div\", { className: \"k-vstack\" },\n React.createElement(NumericTextBox, { value: this.props.rgba.b, min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaBChange, disabled: this.props.disabled }),\n React.createElement(Label, { className: \"k-colorgradient-input-label\" }, bMessage))),\n this.state.inputMode === 'rgba' &&\n React.createElement(\"div\", { className: \"k-vstack\" },\n this.props.opacity &&\n React.createElement(NumericTextBox, { value: this.props.rgba.a, min: 0, max: 1, step: 0.01, spinners: false, format: \"n2\", onChange: this.onRgbaAChange, disabled: this.props.disabled }),\n this.props.opacity && (React.createElement(Label, { className: \"k-colorgradient-input-label\" }, aMessage)))));\n };\n ColorInput.prototype.dispatchRgbaChange = function (newValue, event) {\n var rgba = __assign({}, this.props.rgba);\n if (newValue.r !== undefined) {\n rgba.r = newValue.r;\n }\n if (newValue.g !== undefined) {\n rgba.g = newValue.g;\n }\n if (newValue.b !== undefined) {\n rgba.b = newValue.b;\n }\n if (newValue.a !== undefined) {\n rgba.a = newValue.a;\n }\n this.props.onRgbaChange(rgba, event);\n };\n ;\n ColorInput.prototype.onToggleModeChange = function () {\n var index = modes.length - 1 === modes.indexOf(this.state.inputMode) ? 0 : modes.indexOf(this.state.inputMode) + 1;\n if (!this.props.opacity) {\n var nextIndex = modes[index] === 'rgba' ? index + 1 : index;\n this.setState({ inputMode: modes[nextIndex] });\n }\n else {\n this.setState({ inputMode: modes[index] });\n }\n };\n return ColorInput;\n}(React.Component));\nexport default ColorInput;\nregisterForIntl(ColorInput);\nregisterForLocalization(ColorInput);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, colorGradientContrastRatio, colorGradientAALevel, colorGradientAAALevel, colorGradientPass, colorGradientFail } from '../messages';\nimport { getContrastFromTwoRGBAs } from './utils/color-parser';\n/**\n * @hidden\n */\nvar ColorContrastLabels = /** @class */ (function (_super) {\n __extends(ColorContrastLabels, _super);\n function ColorContrastLabels() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColorContrastLabels.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var contrastRatioMessage = localizationService.toLanguageString(colorGradientContrastRatio, messages[colorGradientContrastRatio]);\n var AALevelMessage = localizationService.toLanguageString(colorGradientAALevel, messages[colorGradientAALevel]);\n var AAALevelMessage = localizationService.toLanguageString(colorGradientAAALevel, messages[colorGradientAAALevel]);\n var passMessage = localizationService.toLanguageString(colorGradientPass, messages[colorGradientPass]);\n var failMessage = localizationService.toLanguageString(colorGradientFail, messages[colorGradientFail]);\n var contrast = getContrastFromTwoRGBAs(this.props.rgba, this.props.bgColor);\n var requiredAAContrast = (4.5).toFixed(1);\n var requiredAAAContrast = (7.0).toFixed(1);\n var contrastText = \"\".concat(contrastRatioMessage, \": \").concat(contrast.toFixed(2));\n var aaText = \"\".concat(AALevelMessage, \": \").concat(requiredAAContrast);\n var aaaText = \"\".concat(AAALevelMessage, \": \").concat(requiredAAAContrast);\n var success = (React.createElement(\"span\", { className: \"k-contrast-validation k-text-success\" },\n passMessage,\n \" \",\n React.createElement(\"span\", { className: \"k-icon k-i-check\" })));\n var error = (React.createElement(\"span\", { className: \"k-contrast-validation k-text-error\" },\n failMessage,\n \" \",\n React.createElement(\"span\", { className: \"k-icon k-i-close\" })));\n return (React.createElement(\"div\", { className: \"k-vbox k-colorgradient-color-contrast\" },\n React.createElement(\"div\", { className: \"k-contrast-ratio\" },\n React.createElement(\"span\", { className: \"k-contrast-ratio-text\" }, contrastText),\n contrast >= 4.5 ? (React.createElement(\"span\", { className: \"k-contrast-validation k-text-success\" },\n React.createElement(\"span\", { className: \"k-icon k-i-check\" }),\n contrast >= 7 && React.createElement(\"span\", { className: \"k-icon k-i-check\" }))) : (React.createElement(\"span\", { className: \"k-contrast-validation k-text-error\" },\n React.createElement(\"span\", { className: \"k-icon k-i-close\" })))),\n React.createElement(\"div\", null,\n React.createElement(\"span\", null, aaText),\n contrast >= 4.5 ? success : error),\n React.createElement(\"div\", null,\n React.createElement(\"span\", null, aaaText),\n contrast >= 7 ? success : error)));\n };\n return ColorContrastLabels;\n}(React.Component));\nexport { ColorContrastLabels };\nregisterForLocalization(ColorContrastLabels);\n","/**\n * @hidden\n *\n * Render the svg element.\n *\n * @param points (array) Represents the points coordinates as an array of tuples.\n * @param command (function) The command that is used (bezierCommand, lineCommand).\n * @param point (array) [x,y] Represents the current point coordinates.\n * @param i (integer) Represents the index of 'point' in the array 'a'.\n * @param a (array) Represents the complete array of points coordinates.\n * @output (string) a svg path command.\n * @output (string) a Svg element\n */\nexport var svgPath = function (points, command) {\n if (points.length === 0) {\n return '';\n }\n // build the d attributes by looping over the points\n var d = points.reduce(function (acc, point, i, a) {\n return i === 0 ?\n // if first point\n \"M \".concat(point[0], \",\").concat(point[1]) :\n // else\n \"\".concat(acc, \" \").concat(command(point, i, a));\n }, '');\n return \"\");\n};\n/**\n * @hidden\n *\n * Returns the properties of a line.\n *\n * @param pointA (array) [x,y] Represents the start point coordinates.\n * @param pointB (array) [x,y] Represents the end point coordinates.\n * @output (object) { length: (integer), angle: (integer) }\n */\nexport var line = function (pointA, pointB) {\n var lengthX = pointB[0] - pointA[0];\n var lengthY = pointB[1] - pointA[1];\n return {\n length: Math.sqrt(Math.pow(lengthX, 2) + Math.pow(lengthY, 2)),\n angle: Math.atan2(lengthY, lengthX)\n };\n};\n/**\n * @hidden\n *\n * Create a function to calculate the position of the control point.\n *\n * @param lineCalc (function) Represents the line function.\n * @param pointA (array) [x,y] Represents the start point coordinates.\n * @param pointB (array) [x,y] Represents the end point coordinates.\n * @output (object) { length: (integer), angle: (integer) }\n * @output (function) closure.\n * @param current (array) [x, y] Represents the current point coordinates.\n * @param previous (array) [x, y] Represents the previous point coordinates.\n * @param next (array) [x, y] ]Represents the next point coordinates.\n * @param reverse (boolean, optional) Sets the direction.\n * @output (array) [x, y] coordinates of a control point.\n */\nexport var controlPoint = function (lineCalc) {\n return function (current, previous, next, reverse) {\n // when 'current' is the first or last point of the array\n // 'previous' and 'next' are undefined \n // replace with 'current'\n var p = previous || current;\n var n = next || current;\n var smooth = 0.1;\n // properties of the line between previous and next \n var l = lineCalc(p, n);\n // If is end-control-point, add PI to the angle to go backward\n var angle = l.angle + (reverse ? Math.PI : 0);\n var length = l.length * smooth;\n // The control point position is relative to the current point\n var x = current[0] + Math.cos(angle) * length;\n var y = current[1] + Math.sin(angle) * length;\n return [x, y];\n };\n};\n/**\n * @hidden\n *\n * Create a function to calculate a bezier curve command.\n *\n * @param controlPointCalc (function) Represents the controlPoint function.\n * @param current (array) [x, y] Represents the current point coordinates.\n * @param previous (array) [x, y] Represents the previous point coordinates.\n * @param next (array) [x, y] ]Represents the next point coordinates.\n * @param reverse (boolean, optional) Sets the direction.\n * @output (array) [x, y] coordinates of a control point.\n * @output (function) closure.\n * @param point (array) [x,y] Represents the current point coordinates.\n * @param i (integer) Represents the index of 'point' in the array 'a'.\n * @param a (array) Represents the complete array of points coordinates.\n * @output (string) 'C x2,y2 x1,y1 x,y' Cubic bezier command.\n */\nexport var bezierCommand = function (controlPointCalc) { return function (point, i, a) {\n // start control point\n var _a = controlPointCalc(a[i - 1], a[i - 2], point), cpsX = _a[0], cpsY = _a[1];\n // end control point\n var _b = controlPointCalc(point, a[i - 1], a[i + 1], true), cpeX = _b[0], cpeY = _b[1];\n return \"C \".concat(cpsX, \",\").concat(cpsY, \" \").concat(cpeX, \",\").concat(cpeY, \" \").concat(point[0], \",\").concat(point[1]);\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { bezierCommand, controlPoint, line, svgPath } from './utils/svg-calc';\nimport { getColorFromHSV, getRGBA, getContrastFromTwoRGBAs } from './utils/color-parser';\nvar AA_CONTRAST = 4.5;\nvar AAA_CONTRAST = 7;\nvar STEP_COUNT = 16;\n;\n/**\n * @hidden\n */\nvar ColorContrastSvg = /** @class */ (function (_super) {\n __extends(ColorContrastSvg, _super);\n function ColorContrastSvg() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColorContrastSvg.prototype.renderSvgCurveLine = function () {\n var _this = this;\n var gradientRectMetrics = this.props.metrics;\n var findValue = function (contrast, saturation, low, high, comparer) {\n var mid = (low + high) / 2;\n var hsva = Object.assign({}, _this.props.hsva, { s: saturation / gradientRectMetrics.width, v: 1 - mid / gradientRectMetrics.height });\n var currentContrast = getContrastFromTwoRGBAs(getRGBA(getColorFromHSV(hsva)), getRGBA(_this.props.backgroundColor || ''));\n if (low + 0.5 > high) {\n if (currentContrast < contrast + 1 && currentContrast > contrast - 1) {\n return mid;\n }\n else {\n return null;\n }\n }\n if (comparer(currentContrast, contrast)) {\n return findValue(contrast, saturation, low, high - (high - low) / 2, comparer);\n }\n return findValue(contrast, saturation, low + (high - low) / 2, high, comparer);\n };\n var getPaths = function (contrast, stepCount, reversed) {\n if (reversed === void 0) { reversed = false; }\n var points = [];\n for (var i = 0; i <= gradientRectMetrics.width; i += gradientRectMetrics.width / stepCount) {\n var value = findValue(contrast, i, 0, gradientRectMetrics.height, reversed ? (function (a, b) { return a < b; }) : (function (a, b) { return a > b; }));\n if (value !== null) {\n points.push([i, value]);\n }\n }\n return points;\n };\n var bezierCommandCalc = bezierCommand(controlPoint(line));\n return svgPath(getPaths(AA_CONTRAST, STEP_COUNT), bezierCommandCalc) +\n svgPath(getPaths(AA_CONTRAST, STEP_COUNT, true), bezierCommandCalc) +\n svgPath(getPaths(AAA_CONTRAST, STEP_COUNT), bezierCommandCalc) +\n svgPath(getPaths(AAA_CONTRAST, STEP_COUNT, true), bezierCommandCalc);\n };\n ColorContrastSvg.prototype.shouldComponentUpdate = function (nextProps) {\n if (nextProps.hsva.h === this.props.hsva.h &&\n nextProps.hsva.a === this.props.hsva.a &&\n this.props.backgroundColor === nextProps.backgroundColor) {\n return false;\n }\n return true;\n };\n ColorContrastSvg.prototype.render = function () {\n return (React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", className: 'k-color-contrast-svg', dangerouslySetInnerHTML: { __html: this.renderSvgCurveLine() }, style: {\n position: 'absolute',\n overflow: 'visible',\n pointerEvents: 'none',\n left: 0,\n top: 0,\n zIndex: 3\n } }));\n };\n return ColorContrastSvg;\n}(React.Component));\nexport { ColorContrastSvg };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * as PropTypes from 'prop-types';\nimport { Draggable, guid, classNames, focusFirstFocusableChild, getTabIndex, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { Slider } from './../main';\nimport { fitIntoBounds, isPresent } from './utils/misc';\nimport { getColorFromHue, parseColor, getHSV, getColorFromHSV, getRGBA, getColorFromRGBA } from './utils/color-parser';\nimport { cacheHsva, removeCachedColor, getCachedHsva, getCachedRgba, getCachedHex, cacheRgba, cacheHex } from './utils/color-cache';\nimport ColorInput from './ColorInput';\nimport { ColorContrastLabels } from './ColorContrastLabels';\nimport { ColorContrastSvg } from './ColorContrastSvg';\nvar FORMAT = 'rgba';\nvar DEFAULT_SELECTED_COLOR = 'rgba(255, 255, 255, 1)';\n/** @hidden */\nvar ColorGradientWithoutContext = /** @class */ (function (_super) {\n __extends(ColorGradientWithoutContext, _super);\n function ColorGradientWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.wrapper = null;\n /**\n * @hidden\n */\n _this.onHexChange = function (hex, value, event) {\n if (_this.isUncontrolled) {\n var hsva = getHSV(value);\n _this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: getRGBA(value), hex: hex });\n }\n else {\n cacheHex(_this.state.guid, value, hex);\n }\n _this.dispatchChangeEvent(value, event, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onRgbaChange = function (rgba, event) {\n var value = getColorFromRGBA(rgba);\n if (_this.isUncontrolled) {\n var hsva = getHSV(value);\n var hex = parseColor(value, 'hex');\n _this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: rgba, hex: hex });\n }\n else {\n cacheRgba(_this.state.guid, value, rgba);\n }\n _this.dispatchChangeEvent(value, event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onAlphaSliderChange = function (event) {\n _this.handleHsvaChange(Object.assign({}, _this.state.hsva, { a: event.value / 100 }), event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onHueSliderChange = function (event) {\n _this.handleHsvaChange(Object.assign({}, _this.state.hsva, { h: event.value }), event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onDrag = function (e) {\n _this.gradientWrapper.classList.add('k-dragging');\n _this.changePosition(e.event);\n };\n /**\n * @hidden\n */\n _this.onRelease = function () {\n _this.gradientWrapper.classList.remove('k-dragging');\n };\n /**\n * @hidden\n */\n _this.onGradientWrapperClick = function (event) {\n _this.changePosition(event);\n };\n /**\n * @hidden\n */\n _this.changePosition = function (event) {\n var gradientRectMetrics = _this.getGradientRectMetrics();\n var deltaX = event.clientX - gradientRectMetrics.left;\n var deltaY = event.clientY - gradientRectMetrics.top;\n var left = fitIntoBounds(deltaX, 0, gradientRectMetrics.width);\n var top = fitIntoBounds(deltaY, 0, gradientRectMetrics.height);\n var hsva = Object.assign({}, _this.state.hsva, { s: left / gradientRectMetrics.width, v: 1 - top / gradientRectMetrics.height });\n _this.handleHsvaChange(hsva, event, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onFocus = function (nativeEvent) {\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, { nativeEvent: nativeEvent, target: _this });\n }\n };\n /**\n * @hidden\n */\n _this.focus = function () {\n focusFirstFocusableChild(_this.wrapper);\n };\n validatePackage(packageMetadata);\n var value = props.value || props.defaultValue || parseColor(DEFAULT_SELECTED_COLOR, FORMAT);\n _this.state = Object.assign({}, ColorGradientWithoutContext.getStateFromValue(value), { isFirstRender: true, guid: guid() });\n return _this;\n }\n /**\n * @hidden\n */\n ColorGradientWithoutContext.getDerivedStateFromProps = function (props, state) {\n if (props.value && !state.isFirstRender) {\n // The component is in controlled mode.\n return ColorGradientWithoutContext.getStateFromValue(props.value, state.guid);\n }\n return null;\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.componentDidMount = function () {\n this.setAlphaSliderBackground(this.state.backgroundColor);\n if (this.state.isFirstRender) {\n this.setState({ isFirstRender: false });\n }\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.componentWillUnmount = function () {\n removeCachedColor(this.state.guid);\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.componentDidUpdate = function (_, prevState) {\n if (prevState.backgroundColor !== this.state.backgroundColor) {\n this.setAlphaSliderBackground(this.state.backgroundColor);\n }\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.renderRectangleDragHandle = function () {\n var style = {};\n if (!this.state.isFirstRender) {\n var gradientRectMetrics = this.getGradientRectMetrics();\n var top_1 = (1 - this.state.hsva.v) * gradientRectMetrics.height;\n var left = this.state.hsva.s * gradientRectMetrics.width;\n style.top = \"\".concat(top_1, \"px\");\n style.left = \"\".concat(left, \"px\");\n }\n return React.createElement(\"div\", { className: \"k-hsv-draghandle k-draghandle\", style: style });\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.handleHsvaChange = function (hsva, syntheticEvent, nativeEvent) {\n var value = getColorFromHSV(hsva);\n if (this.isUncontrolled) {\n var hex = parseColor(value, 'hex');\n this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: getRGBA(value), hex: hex });\n }\n else {\n cacheHsva(this.state.guid, value, hsva);\n }\n this.dispatchChangeEvent(value, syntheticEvent, nativeEvent);\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.dispatchChangeEvent = function (value, syntheticEvent, nativeEvent) {\n if (this.props.onChange) {\n this.props.onChange.call(undefined, { syntheticEvent: syntheticEvent, nativeEvent: nativeEvent, target: this, value: value });\n }\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.getStateFromValue = function (value, componentGuid) {\n if (!isPresent(parseColor(value, 'hex'))) {\n // Validate/sanitize the input.\n value = DEFAULT_SELECTED_COLOR;\n }\n var hsva = getCachedHsva(componentGuid, value) || getHSV(value);\n var rgba = getCachedRgba(componentGuid, value) || getRGBA(value);\n var hex = getCachedHex(componentGuid, value) || parseColor(value, 'hex');\n var backgroundColor = getColorFromHue(hsva.h);\n return { hsva: hsva, backgroundColor: backgroundColor, rgba: rgba, hex: hex };\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.setAlphaSliderBackground = function (backgroundColor) {\n if (this.props.opacity && this.alphaSlider && this.alphaSlider.sliderTrack) {\n this.alphaSlider.sliderTrack.style.background = \"linear-gradient(to top, transparent, \".concat(backgroundColor, \")\");\n }\n };\n Object.defineProperty(ColorGradientWithoutContext.prototype, \"isUncontrolled\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.value === undefined;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.getGradientRectMetrics = function () {\n return this.gradientWrapper.getBoundingClientRect();\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.render = function () {\n var _this = this;\n var className = classNames('k-colorgradient', { 'k-disabled': this.props.disabled });\n return (React.createElement(\"div\", { id: this.props.id, className: className, \"aria-disabled\": this.props.disabled ? 'true' : undefined, style: this.props.style, ref: function (el) { return _this.wrapper = el; }, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled), \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, onFocus: this.onFocus },\n React.createElement(\"div\", { className: \"k-colorgradient-canvas k-hstack\" },\n React.createElement(\"div\", { className: \"k-hsv-rectangle\", style: { background: this.state.backgroundColor } },\n React.createElement(Draggable, { onDrag: this.onDrag, onRelease: this.onRelease, ref: function (el) { return _this.gradientWrapper = el ? el.element : undefined; } },\n React.createElement(\"div\", { className: \"k-hsv-gradient\", style: { touchAction: 'none' }, onClick: this.onGradientWrapperClick }, this.renderRectangleDragHandle())),\n this.props.backgroundColor && !this.state.isFirstRender &&\n React.createElement(ColorContrastSvg, { metrics: this.gradientWrapper ? this.getGradientRectMetrics() : undefined, hsva: this.state.hsva, backgroundColor: this.props.backgroundColor })),\n React.createElement(\"div\", { className: \"k-hsv-controls k-hstack\" },\n React.createElement(Slider, { value: this.state.hsva.h, buttons: false, vertical: true, min: 0, max: 360, step: 5, onChange: this.onHueSliderChange, className: \"k-hue-slider k-colorgradient-slider\", disabled: this.props.disabled }),\n this.props.opacity &&\n React.createElement(Slider, { value: isPresent(this.state.hsva.a) ? this.state.hsva.a * 100 : 100, buttons: false, vertical: true, min: 0, max: 100, step: 1, onChange: this.onAlphaSliderChange, className: \"k-alpha-slider k-colorgradient-slider\", disabled: this.props.disabled, ref: function (el) { return _this.alphaSlider = el; } }))),\n React.createElement(ColorInput, { rgba: this.state.rgba, onRgbaChange: this.onRgbaChange, hex: this.state.hex, onHexChange: this.onHexChange, opacity: this.props.opacity, disabled: this.props.disabled }),\n this.props.backgroundColor && (React.createElement(ColorContrastLabels, { bgColor: getRGBA(this.props.backgroundColor), rgba: this.state.rgba }))));\n };\n ColorGradientWithoutContext.displayName = 'ColorGradient';\n /**\n * @hidden\n */\n ColorGradientWithoutContext.propTypes = {\n defaultValue: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n opacity: PropTypes.bool,\n backgroundColor: PropTypes.string,\n disabled: PropTypes.bool,\n style: PropTypes.any,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.defaultProps = {\n opacity: true\n };\n return ColorGradientWithoutContext;\n}(React.Component));\nexport { ColorGradientWithoutContext };\n/**\n * Represents the PropsContext of the `ColorGradient` component.\n * Used for global configuration of all `ColorGradient` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var ColorGradientPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact ColorGradient component]({% slug overview_colorgradient %}).\n *\n * Accepts properties of type [ColorGradientProps]({% slug api_inputs_colorgradientprops %}).\n * Obtaining the `ref` returns an object of type [ColorGradientHandle]({% slug api_inputs_colorgradienthandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var ColorGradient = withPropsContext(ColorGradientPropsContext, ColorGradientWithoutContext);\nColorGradient.displayName = 'KendoReactColorGradient';\n","import { isPresent } from './misc';\nimport { parseColor } from '@progress/kendo-drawing';\n/**\n * @hidden\n */\nvar ColorPaletteService = /** @class */ (function () {\n function ColorPaletteService() {\n this.colorRows = [];\n }\n ColorPaletteService.prototype.setColorMatrix = function (palette, columns) {\n this.colorRows = [];\n if (!(isPresent(palette) && palette.length)) {\n return;\n }\n columns = columns || palette.length;\n for (var start = 0; start < palette.length; start += columns) {\n var row = palette.slice(start, columns + start);\n this.colorRows.push(row);\n }\n };\n ColorPaletteService.prototype.getCellCoordsFor = function (color) {\n var _this = this;\n if (!isPresent(color)) {\n return;\n }\n var parsedColor = color ? parseColor(color, true) : color;\n var colors = [color];\n if (isPresent(parsedColor)) {\n colors.push(parsedColor.toCss(), parsedColor.toCssRgba());\n }\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n if (colors.some(function (c) { return c === _this.colorRows[row][col]; })) {\n return { value: { row: row, col: col } };\n }\n };\n for (var col = 0; col < this_1.colorRows[row].length; col++) {\n var state_2 = _loop_2(col);\n if (typeof state_2 === \"object\")\n return state_2;\n }\n };\n var this_1 = this;\n for (var row = 0; row < this.colorRows.length; row++) {\n var state_1 = _loop_1(row);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n ColorPaletteService.prototype.getColorAt = function (cellCoords) {\n if (!(isPresent(cellCoords) && isPresent(this.colorRows[cellCoords.row]))) {\n return;\n }\n return this.colorRows[cellCoords.row][cellCoords.col];\n };\n ColorPaletteService.prototype.getNextCell = function (current, horizontalStep, verticalStep) {\n if (!(isPresent(current) && isPresent(current.row) && isPresent(current.col))) {\n return { row: 0, col: 0 };\n }\n var row = this.clampIndex(current.row + verticalStep, this.colorRows.length - 1);\n var col = this.clampIndex(current.col + horizontalStep, this.colorRows[row].length - 1);\n return { row: row, col: col };\n };\n ColorPaletteService.prototype.clampIndex = function (index, max) {\n var minArrayIndex = 0;\n if (index < minArrayIndex) {\n return minArrayIndex;\n }\n if (index > max) {\n return max;\n }\n return index;\n };\n return ColorPaletteService;\n}());\nexport { ColorPaletteService };\n","/* eslint-disable max-len */\n/**\n * @hidden\n */\nexport var PALETTEPRESETS = {\n basic: {\n colors: ['#000000', '#7f7f7f', '#880015', '#ed1c24', '#ff7f27', '#fff200', '#22b14c', '#00a2e8', '#3f48cc', '#a349a4', ' ffffff', '#c3c3c3', '#b97a57', '#ffaec9', '#ffc90e', '#efe4b0', '#b5e61d', '#99d9ea', '#7092be', '#c8bfe7'],\n columns: 10\n },\n office: {\n colors: ['#ffffff', '#000000', '#e6e6e6', '#435569', '#4371c4', '#ed7e32', '#a5a4a5', '#febf04', '#5a9bd5', '#71ae48', '#f2f2f3', '#7f7f7f', '#d1cece', '#d5dde3', '#dae1f4', '#fce5d4', '#deeded', '#fff2cc', '#deeaf6', '#e1efd9', '#d7d8d8', '#585959', '#aeabab', '#adbaca', '#b4c5e7', '#f6caac', '#dbdbdb', '#ffe498', '#bcd6ee', '#c5e0b2', '#bfbfc0', '#3f3f3f', '#767070', '#8595b1', '#8fabdb', '#f5b183', '#c9c8c9', '#fed965', '#9bc4e5', '#a8d08d', '#a5a5a6', '#262625', '#393939', '#334050', '#2e5496', '#c45a11', '#7b7b7a', '#bf9000', '#2f75b5', '#548235', '#7f7f7f', '#0b0c0c', '#161616', '#222a34', '#203764', '#843d0b', '#525252', '#7f6000', '#1d4d79', '#375623'],\n columns: 10\n },\n apex: {\n colors: ['#ffffff', '#000000', '#c9c2d1', '#69676d', '#ceb966', '#9cb084', '#6bb1c9', '#6585cf', '#7e6bc9', '#a379bb', '#f2f2f2', '#7f7f7f', '#f4f2f5', '#e0e0e2', '#f5f1e0', '#ebefe6', '#e1eff4', '#e0e6f5', '#e5e1f4', '#ece4f1', '#d8d8d8', '#595959', '#e9e6ec', '#c2c1c5', '#ebe3c1', '#d7dfcd', '#c3dfe9', '#c1ceeb', '#cbc3e9', '#dac9e3', '#bfbfbf', '#3f3f3f', '#dedae3', '#a4a3a8', '#e1d5a3', '#c3cfb5', '#a6d0de', '#a2b5e2', '#b1a6de', '#c7aed6', '#a5a5a5', '#262626', '#9688a5', '#4e4d51', '#ae9638', '#758c5a', '#3d8da9', '#365bb0', '#533da9', '#7d4d99', '#7f7f7f', '#0c0c0c', '#635672', '#343336', '#746425', '#4e5d3c', '#295e70', '#243c75', '#372970', '#533366'],\n columns: 10\n },\n austin: {\n colors: ['#ffffff', '#000000', '#caf278', '#3e3d2d', '#94c600', '#71685a', '#ff6700', '#909465', '#956b43', '#fea022', '#f2f2f2', '#7f7f7f', '#f4fce4', '#dddcd0', '#efffc0', '#e3e1dc', '#ffe0cb', '#e8e9df', '#ece1d6', '#feecd2', '#d8d8d8', '#595959', '#e9f9c9', '#bbb9a1', '#dfff82', '#c8c3ba', '#ffc299', '#d2d4c0', '#dac3ad', '#fed9a6', '#bfbfbf', '#3f3f3f', '#dff7ae', '#ada598', '#cfff43', '#ada598', '#ffa365', '#bcbfa1', '#c8a585', '#fec67a', '#a5a5a5', '#262626', '#a9ea25', '#2e2d21', '#6f9400', '#544e43', '#bf4d00', '#6c6f4b', '#6f5032', '#d77b00', '#7f7f7f', '#0c0c0c', '#74a50f', '#1f1e16', '#4a6300', '#38342d', '#7f3300', '#484a32', '#4a3521', '#8f5200'],\n columns: 10\n },\n clarity: {\n colors: ['#ffffff', '#292934', '#f3f2dc', '#d2533c', '#93a299', '#ad8f67', '#726056', '#4c5a6a', '#808da0', '#79463d', '#f2f2f2', '#e7e7ec', '#e7e5b9', '#f6dcd8', '#e9ecea', '#eee8e0', '#e4dedb', '#d8dde3', '#e5e8ec', '#e9d6d3', '#d8d8d8', '#c4c4d1', '#d5d185', '#edbab1', '#d3d9d6', '#ded2c2', '#c9beb8', '#b2bcc8', '#ccd1d9', '#d3aea7', '#bfbfbf', '#8a8aa3', '#aca73b', '#e4978a', '#bec7c1', '#cdbba3', '#af9e94', '#8c9bac', '#b2bac6', '#bd857c', '#a5a5a5', '#56566e', '#56531d', '#a43925', '#6b7c72', '#866b48', '#554840', '#39434f', '#5c697b', '#5a342d', '#7f7f7f', '#3b3b4b', '#22210b', '#6d2619', '#47534c', '#594730', '#39302b', '#262d35', '#3d4652', '#3c231e'],\n columns: 10\n },\n slipstream: {\n colors: ['#ffffff', '#000000', '#b4dcfa', '#212745', '#4e67c8', '#5eccf3', '#a7ea52', '#5dceaf', '#ff8021', '#f14124', '#f2f2f2', '#7f7f7f', '#8bc9f7', '#c7cce4', '#dbe0f4', '#def4fc', '#edfadc', '#def5ef', '#ffe5d2', '#fcd9d3', '#d8d8d8', '#595959', '#4facf3', '#909aca', '#b8c2e9', '#beeafa', '#dbf6b9', '#beebdf', '#ffcca6', '#f9b3a7', '#bfbfbf', '#3f3f3f', '#0d78c9', '#5967af', '#94a3de', '#9ee0f7', '#caf297', '#9de1cf', '#ffb279', '#f68d7b', '#a5a5a5', '#262626', '#063c64', '#181d33', '#31479f', '#11b2eb', '#81d319', '#34ac8b', '#d85c00', '#c3260c', '#7f7f7f', '#0c0c0c', '#021828', '#101322', '#202f6a', '#0b769c', '#568c11', '#22725c', '#903d00', '#821908'],\n columns: 10\n },\n metro: {\n colors: ['#ffffff', '#000000', '#d6ecff', '#4e5b6f', '#7fd13b', '#ea157a', '#feb80a', '#00addc', '#738ac8', '#1ab39f', '#f2f2f2', '#7f7f7f', '#a7d6ff', '#d9dde4', '#e5f5d7', '#fad0e4', '#fef0cd', '#c5f2ff', '#e2e7f4', '#c9f7f1', '#d8d8d8', '#595959', '#60b5ff', '#b3bcca', '#cbecb0', '#f6a1c9', '#fee29c', '#8be6ff', '#c7d0e9', '#94efe3', '#bfbfbf', '#3f3f3f', '#007dea', '#8d9baf', '#b2e389', '#f272af', '#fed46b', '#51d9ff', '#aab8de', '#5fe7d5', '#a5a5a5', '#262626', '#003e75', '#3a4453', '#5ea226', '#af0f5b', '#c58c00', '#0081a5', '#425ea9', '#138677', '#7f7f7f', '#0c0c0c', '#00192e', '#272d37', '#3f6c19', '#750a3d', '#835d00', '#00566e', '#2c3f71', '#0c594f'],\n columns: 10\n },\n flow: {\n colors: ['#ffffff', '#000000', '#dbf5f9', '#04617b', '#0f6fc6', '#009dd9', '#0bd0d9', '#10cf9b', '#7cca62', '#a5c249', '#f2f2f2', '#7f7f7f', '#b2e9f2', '#b4ecfc', '#c7e2fa', '#c4eeff', '#c9fafc', '#c9faed', '#e4f4df', '#edf2da', '#d8d8d8', '#595959', '#76d9e8', '#6adafa', '#90c6f6', '#89deff', '#93f5f9', '#94f6db', '#cae9c0', '#dbe6b6', '#bfbfbf', '#3f3f3f', '#21b2c8', '#20c8f7', '#59a9f2', '#4fceff', '#5df0f6', '#5ff2ca', '#b0dfa0', '#c9da91', '#a5a5a5', '#262626', '#105964', '#02485c', '#0b5394', '#0075a2', '#089ca2', '#0b9b74', '#54a838', '#7e9532', '#7f7f7f', '#0c0c0c', '#062328', '#01303d', '#073763', '#004e6c', '#05686c', '#07674d', '#387025', '#546321'],\n columns: 10\n },\n hardcover: {\n colors: ['#ffffff', '#000000', '#ece9c6', '#895d1d', '#873624', '#d6862d', '#d0be40', '#877f6c', '#972109', '#aeb795', '#f2f2f2', '#7f7f7f', '#e1dca5', '#f2e0c6', '#f0d0c9', '#f6e6d5', '#f5f2d8', '#e7e5e1', '#fbc7bc', '#eef0e9', '#d8d8d8', '#595959', '#d0c974', '#e6c28d', '#e2a293', '#eeceaa', '#ece5b2', '#cfccc3', '#f78f7a', '#dee2d4', '#bfbfbf', '#3f3f3f', '#a29a36', '#daa454', '#d4735e', '#e6b681', '#e2d88c', '#b7b2a5', '#f35838', '#ced3bf', '#a5a5a5', '#262626', '#514d1b', '#664515', '#65281a', '#a2641f', '#a39428', '#655f50', '#711806', '#879464', '#7f7f7f', '#0c0c0c', '#201e0a', '#442e0e', '#431b11', '#6c4315', '#6d621a', '#433f35', '#4b1004', '#5a6243'],\n columns: 10\n },\n trek: {\n colors: ['#ffffff', '#000000', '#fbeec9', '#4e3b30', '#f0a22e', '#a5644e', '#b58b80', '#c3986d', '#a19574', '#c17529', '#f2f2f2', '#7f7f7f', '#f7e09e', '#e1d6cf', '#fcecd5', '#eddfda', '#f0e7e5', '#f3eae1', '#ece9e3', '#f5e3d1', '#d8d8d8', '#595959', '#f3cc5f', '#c4ad9f', '#f9d9ab', '#dcc0b6', '#e1d0cc', '#e7d5c4', '#d9d4c7', '#ebc7a3', '#bfbfbf', '#3f3f3f', '#d29f0f', '#a78470', '#f6c781', '#cba092', '#d2b9b2', '#dbc1a7', '#c6bfab', '#e1ac76', '#a5a5a5', '#262626', '#694f07', '#3a2c24', '#c87d0e', '#7b4b3a', '#926255', '#a17242', '#7b7153', '#90571e', '#7f7f7f', '#0c0c0c', '#2a1f03', '#271d18', '#855309', '#523226', '#614138', '#6b4c2c', '#524b37', '#603a14'],\n columns: 10\n },\n verve: {\n colors: ['#ffffff', '#000000', '#d2d2d2', '#666666', '#ff388c', '#e40059', '#9c007f', '#68007f', '#005bd3', '#00349e', '#f2f2f2', '#7f7f7f', '#bdbdbd', '#e0e0e0', '#ffd7e8', '#ffc6dc', '#ffb8f1', '#f1b2ff', '#c3dcff', '#b8cfff', '#d8d8d8', '#595959', '#9d9d9d', '#c1c1c1', '#ffafd1', '#ff8eba', '#ff71e4', '#e365ff', '#87baff', '#72a0ff', '#bfbfbf', '#3f3f3f', '#696969', '#a3a3a3', '#ff87ba', '#ff5597', '#ff2ad7', '#d519ff', '#4b98ff', '#2b71ff', '#a5a5a5', '#262626', '#343434', '#4c4c4c', '#e90062', '#ab0042', '#75005f', '#4e005f', '#00449e', '#002676', '#7f7f7f', '#0c0c0c', '#151515', '#333333', '#9b0041', '#72002c', '#4e003f', '#34003f', '#002d69', '#00194f'],\n columns: 10\n },\n monochrome: {\n colors: ['#000000', '#1a1a1a', '#333333', '#4d4d4d', '#666666', '#808080', '#999999', '#b3b3b3', '#cccccc', '#e6e6e6', '#f2f2f2', '#ffffff'],\n columns: 12\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * as PropTypes from 'prop-types';\nimport { ColorPaletteService } from './utils/color-palette.service';\nimport { classNames, Keys, dispatchEvent, guid, getTabIndex, withPropsContext, createPropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { PALETTEPRESETS } from './models/palette-presets';\nimport { isPresent } from './utils/misc';\nimport { parseColor } from './utils/color-parser';\n/**\n * @hidden\n */\nexport var DEFAULT_TILE_SIZE = 24;\n/**\n * @hidden\n */\nexport var DEFAULT_COLUMNS_COUNT = 10;\n/**\n * @hidden\n */\nexport var DEFAULT_PRESET = 'office';\n/** @hidden */\nvar ColorPaletteWithoutContext = /** @class */ (function (_super) {\n __extends(ColorPaletteWithoutContext, _super);\n function ColorPaletteWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.wrapper = null;\n _this.paletteService = null;\n _this.guid = guid();\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.wrapper) {\n _this.wrapper.focus();\n }\n };\n _this.onKeyDown = function (event) {\n switch (event.keyCode) {\n case Keys.down:\n _this.handleCellNavigation(0, 1);\n break;\n case Keys.up:\n _this.handleCellNavigation(0, -1);\n break;\n case Keys.right:\n _this.handleCellNavigation(1, 0);\n break;\n case Keys.left:\n _this.handleCellNavigation(-1, 0);\n break;\n case Keys.enter:\n _this.handleEnter(event);\n break;\n default: return;\n }\n event.preventDefault();\n };\n _this.onColorClick = function (color, event) {\n if (_this.isUncontrolled) {\n _this.setState({ selectedColor: color, focusedColor: color });\n }\n else {\n _this.setState({ focusedColor: color });\n }\n _this.dispatchChangeEvent(color, event);\n };\n _this.onFocus = function (nativeEvent) {\n if (!_this.paletteService) {\n return;\n }\n _this.setState({ focusedColor: _this.state.selectedColor || _this.paletteService.colorRows[0][0] });\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, nativeEvent);\n }\n };\n _this.onBlur = function () {\n _this.setState({ focusedColor: undefined });\n };\n validatePackage(packageMetadata);\n // The empty string for the `value` prop means no selection but controlled mode.\n _this.state = {\n selectedColor: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue,\n isFirstRender: true\n };\n return _this;\n }\n /**\n * @hidden\n */\n ColorPaletteWithoutContext.prototype.render = function () {\n var _this = this;\n var paletteInfo = this.getPaletteInfo();\n var svc = this.paletteService = new ColorPaletteService();\n svc.setColorMatrix(paletteInfo.colors, paletteInfo.columns);\n var selectedCellCoords = svc.getCellCoordsFor(this.state.selectedColor);\n var focusedCellCoords = svc.getCellCoordsFor(this.state.focusedColor);\n var className = classNames('k-colorpalette', { 'k-disabled': this.props.disabled });\n if (paletteInfo.colors.length) {\n return (React.createElement(\"div\", { id: this.props.id, className: className, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, \"aria-disabled\": this.props.disabled ? 'true' : undefined, \"aria-activedescendant\": selectedCellCoords && this.createCellId(selectedCellCoords), \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled), ref: function (el) { return _this.wrapper = el; } },\n React.createElement(\"div\", { className: \"k-colorpalette-table-wrap\", role: \"grid\" },\n React.createElement(\"table\", { className: \"k-colorpalette-table k-palette\", role: \"presentation\" },\n React.createElement(\"tbody\", null, this.renderRows(svc.colorRows, selectedCellCoords, focusedCellCoords))))));\n }\n else {\n // In this way, the code prevents an eventual focus of the component when no cells are available.\n // This is needed because upon focus the first cell gets focused.\n return '';\n }\n };\n /**\n * @hidden\n */\n ColorPaletteWithoutContext.getDerivedStateFromProps = function (props, state) {\n if (!state.isFirstRender && props.value !== undefined) {\n // The component is in controlled mode.\n if (props.value === '' && state.selectedColor !== undefined) {\n // The selection has to be removed.\n return { selectedColor: undefined };\n }\n else if (props.value !== '' && props.value !== state.selectedColor) {\n return { selectedColor: props.value };\n }\n }\n else if (state.isFirstRender) {\n return { isFirstRender: false };\n }\n return null;\n };\n ColorPaletteWithoutContext.prototype.handleCellNavigation = function (horizontalStep, verticalStep) {\n if (!this.paletteService) {\n return;\n }\n if (this.focusedColorCooridanates) {\n var newCoords = this.paletteService.getNextCell(this.focusedColorCooridanates, horizontalStep, verticalStep);\n this.setState({ focusedColor: this.paletteService.getColorAt(newCoords) });\n }\n else {\n this.setState({ focusedColor: this.paletteService.colorRows[0][0] });\n }\n };\n ColorPaletteWithoutContext.prototype.handleEnter = function (event) {\n if (this.isUncontrolled) {\n this.setState({ selectedColor: this.state.focusedColor });\n }\n this.dispatchChangeEvent(this.state.focusedColor, event);\n };\n ColorPaletteWithoutContext.prototype.dispatchChangeEvent = function (value, event) {\n dispatchEvent(this.props.onChange, event, this, { value: value, rgbaValue: parseColor(value, 'rgba') });\n };\n Object.defineProperty(ColorPaletteWithoutContext.prototype, \"focusedColorCooridanates\", {\n get: function () {\n return this.state.focusedColor && this.paletteService ? this.paletteService.getCellCoordsFor(this.state.focusedColor) : undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ColorPaletteWithoutContext.prototype, \"isUncontrolled\", {\n get: function () {\n return this.props.value === undefined;\n },\n enumerable: false,\n configurable: true\n });\n ColorPaletteWithoutContext.prototype.getPaletteInfo = function () {\n if (typeof this.props.palette === 'string') {\n var preset = PALETTEPRESETS[this.props.palette];\n if (isPresent(preset)) {\n return {\n colors: preset.colors,\n columns: this.props.columns || preset.columns || DEFAULT_COLUMNS_COUNT\n };\n }\n else {\n return { colors: [], columns: 0 };\n }\n }\n else {\n return { colors: this.props.palette || [], columns: this.props.columns || DEFAULT_COLUMNS_COUNT };\n }\n };\n ColorPaletteWithoutContext.prototype.renderRows = function (rows, selectedCellCoords, focusedCellCoords) {\n var _this = this;\n return rows.map(function (row, i) {\n return React.createElement(\"tr\", { role: \"row\", key: i }, _this.renderColumns(row, i, selectedCellCoords, focusedCellCoords));\n });\n };\n ColorPaletteWithoutContext.prototype.renderColumns = function (columns, rowIndex, selectedCellCoords, focusedCellCoords) {\n var _this = this;\n var rowIsSelected = selectedCellCoords !== undefined && selectedCellCoords.row === rowIndex;\n var selectedColumn = selectedCellCoords && selectedCellCoords.col;\n var rowIsFocused = focusedCellCoords !== undefined && focusedCellCoords.row === rowIndex;\n var focusedColumn = focusedCellCoords && focusedCellCoords.col;\n var tileSize = typeof this.props.tileSize !== 'number' ?\n this.props.tileSize : { width: this.props.tileSize, height: this.props.tileSize };\n var width = tileSize.width + 'px';\n var height = tileSize.height + 'px';\n return columns.map(function (color, i) {\n var isSelected = rowIsSelected && selectedColumn === i;\n var className = classNames('k-colorpalette-tile', {\n 'k-selected': isSelected,\n 'k-focus': rowIsFocused && focusedColumn === i\n });\n return (React.createElement(\"td\", { className: className, \"aria-label\": color, \"aria-selected\": isSelected ? true : _this.props.disabled ? undefined : false, style: { backgroundColor: color, width: width, height: height, minWidth: width }, onClick: function (event) { return _this.onColorClick(color, event); }, id: _this.createCellId({ row: rowIndex, col: i }), key: i }));\n });\n };\n ColorPaletteWithoutContext.prototype.createCellId = function (cellCoords) {\n return \"\".concat(this.guid, \"_\").concat(cellCoords.row, \"_\").concat(cellCoords.col);\n };\n ColorPaletteWithoutContext.displayName = 'ColorPalette';\n /**\n * @hidden\n */\n ColorPaletteWithoutContext.propTypes = {\n palette: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.string]),\n columns: PropTypes.number,\n tileSize: PropTypes.any,\n defaultValue: PropTypes.string,\n value: PropTypes.string,\n disabled: PropTypes.bool,\n tabIndex: PropTypes.number,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string\n };\n /**\n * @hidden\n */\n ColorPaletteWithoutContext.defaultProps = {\n palette: DEFAULT_PRESET,\n tileSize: DEFAULT_TILE_SIZE\n };\n return ColorPaletteWithoutContext;\n}(React.Component));\nexport { ColorPaletteWithoutContext };\n/**\n * Represents the PropsContext of the `ColorPalette` component.\n * Used for global configuration of all `ColorPalette` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var ColorPalettePropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact ColorPalette component]({% slug overview_colorpalette %}).\n *\n * Accepts properties of type [ColorPaletteProps]({% slug api_inputs_colorpaletteprops %}).\n * Obtaining the `ref` returns an object of type [ColorPaletteHandle]({% slug api_inputs_colorpalettehandle %}).\n *\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var ColorPalette = withPropsContext(ColorPalettePropsContext, ColorPaletteWithoutContext);\nColorPalette.displayName = 'KendoReactColorPalette';\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 * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, useDir, getTabIndex, createPropsContext, usePropsContext, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { Picker } from './Picker';\nimport { ColorGradient } from './ColorGradient';\nimport { ColorPalette, DEFAULT_PRESET, DEFAULT_TILE_SIZE } from './ColorPalette';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { messages, colorPickerDropdownButtonAriaLabel } from '../messages';\nimport { useLocalization } from '@progress/kendo-react-intl';\n/**\n * @hidden\n */\nvar DEFAULT_GRADIENT_SETTINGS = {\n opacity: true\n};\n/**\n * @hidden\n */\nvar DEFAULT_PALETTE_SETTINGS = {\n palette: DEFAULT_PRESET,\n tileSize: DEFAULT_TILE_SIZE\n};\n/**\n * @hidden\n */\nvar isControlled = function (prop) {\n return prop !== undefined;\n};\n/**\n * Represents the PropsContext of the `ColorPicker` component.\n * Used for global configuration of all `ColorPicker` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var ColorPickerPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact ColorPicker component]({% slug overview_colorpicker %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var ColorPicker = React.forwardRef(function (directProps, target) {\n var _a, _b;\n validatePackage(packageMetadata);\n var props = usePropsContext(ColorPickerPropsContext, directProps);\n var localization = useLocalization();\n var _c = props.size, size = _c === void 0 ? defaultProps.size : _c, _d = props.rounded, rounded = _d === void 0 ? defaultProps.rounded : _d, _e = props.fillMode, fillMode = _e === void 0 ? defaultProps.fillMode : _e, popupSettings = props.popupSettings, gradientSettings = props.gradientSettings, paletteSettings = props.paletteSettings, valid = props.valid, disabled = props.disabled, tabIndex = props.tabIndex, view = props.view, icon = props.icon, iconClassName = props.iconClassName, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onActiveColorClick = props.onActiveColorClick;\n var focusableElementRef = React.useRef(null);\n var gradientRef = React.useRef(null);\n var paletteRef = React.useRef(null);\n var blurTimeoutRef = React.useRef();\n var buttonRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (focusableElementRef.current) {\n focusableElementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n // we agreed that each element will have focus method exposed\n element: focusableElementRef.current,\n actionElement: buttonRef.current,\n focus: focusElement\n }); });\n var _f = React.useState(false), focused = _f[0], setFocused = _f[1];\n var _g = React.useState(props.defaultValue), stateValue = _g[0], setStateValue = _g[1];\n var _h = React.useState(false), stateOpen = _h[0], setStateOpen = _h[1];\n var isValueControlled = isControlled(props.value);\n var isOpenControlled = isControlled(props.open);\n var value = isValueControlled ? props.value : stateValue;\n var open = isOpenControlled ? props.open : stateOpen;\n var setOpen = React.useCallback(function (nextOpen, isBlur) {\n if (!isOpenControlled) {\n if (!nextOpen && !isBlur && focusableElementRef && focusableElementRef.current) {\n focusableElementRef.current.focus();\n }\n setStateOpen(nextOpen);\n }\n }, [isOpenControlled]);\n var onKeyDownHandler = React.useCallback(function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n setOpen(false);\n return;\n }\n if (keyCode === Keys.enter && !isOpenControlled) {\n event.preventDefault();\n event.stopPropagation();\n setOpen(!open);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n if (keyCode === Keys.up && focusableElementRef && focusableElementRef.current) {\n focusableElementRef.current.focus();\n setOpen(false);\n }\n if (keyCode === Keys.down) {\n setOpen(true);\n }\n }\n }, [open, isOpenControlled]);\n var onOpenHandler = React.useCallback(function () {\n // Skip content autofocus when in controlled mode\n if (!isOpenControlled) {\n if (gradientRef.current) {\n gradientRef.current.focus();\n }\n else if (paletteRef.current) {\n paletteRef.current.focus();\n }\n }\n }, [isOpenControlled]);\n var onClickHandler = React.useCallback(function () {\n setOpen(!open, true);\n }, [open]);\n var onActiveColorClickHandler = React.useCallback(function (event) {\n if (onActiveColorClick) {\n onActiveColorClick.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: value\n });\n }\n }, [onActiveColorClick, value]);\n var onFocusHandler = React.useCallback(function (event) {\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = undefined;\n // case where moving back to input from popup\n // if (event.target === focusableElementRef.current) {\n // setOpen(false); // in this case we should focus input on keydown\n // }\n }\n else {\n setFocused(true);\n }\n if (onFocus) {\n onFocus.call(undefined, {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n });\n }\n }, [onFocus]);\n var onBlurTimeout = React.useCallback(function () {\n setOpen(false, true);\n setFocused(false);\n blurTimeoutRef.current = undefined;\n }, []);\n var onBlurHandler = React.useCallback(function (event) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = window.setTimeout(onBlurTimeout);\n if (onBlur) {\n onBlur.call(undefined, {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n });\n }\n }, [onBlur]);\n var onChangeHandler = React.useCallback(function (event, isPalette) {\n var currentValue = isPalette ? event.rgbaValue : event.value;\n if (!isValueControlled) {\n setStateValue(currentValue);\n }\n if (isPalette) {\n setOpen(false);\n }\n if (onChange) {\n onChange.call(undefined, {\n value: currentValue,\n nativeEvent: event.nativeEvent,\n syntheticEvent: event.syntheticEvent\n });\n }\n }, [isValueControlled, onChange]);\n var onPaletteChangeHandler = React.useCallback(function (event) { return onChangeHandler(event, true); }, [isControlled, onChangeHandler]);\n var dir = useDir(focusableElementRef, props.dir);\n var isValid = valid !== false;\n return (React.createElement(\"span\", { id: props.id, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy, className: classNames('k-colorpicker', 'k-picker', 'k-icon-picker', (_a = {},\n _a[\"k-picker-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a[\"k-picker-\".concat(fillMode)] = fillMode,\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _a['k-invalid'] = !isValid,\n _a['k-disabled'] = disabled,\n _a['k-focus'] = focused,\n _a)), ref: focusableElementRef, tabIndex: getTabIndex(tabIndex, disabled), title: props.title, onKeyDown: onKeyDownHandler, onFocus: onFocusHandler, onBlur: onBlurHandler, dir: dir },\n React.createElement(Picker, { dir: dir, open: open, onOpen: onOpenHandler, popupAnchor: focusableElementRef.current || undefined, popupSettings: __assign({}, popupSettings), input: (React.createElement(\"span\", { onClick: onActiveColorClickHandler, className: 'k-input-inner' },\n React.createElement(\"span\", { className: classNames('k-value-icon', 'k-color-preview', {\n 'k-no-color': !value,\n 'k-icon-color-preview': (icon || iconClassName)\n }) },\n (iconClassName || icon) && React.createElement(\"span\", { className: classNames('k-color-preview-icon', iconClassName, (_b = {},\n _b[\"k-icon k-i-\".concat(icon)] = (icon && !iconClassName),\n _b)) }),\n React.createElement(\"span\", { className: \"k-color-preview-mask\", style: { backgroundColor: value } })))), button: (React.createElement(Button, { tabIndex: -1, type: \"button\", onClick: onClickHandler, className: \"k-input-button\", rounded: null, icon: 'arrow-s', \"aria-label\": localization.toLanguageString(colorPickerDropdownButtonAriaLabel, messages[colorPickerDropdownButtonAriaLabel]) })), content: (React.createElement(React.Fragment, null,\n (view === 'combo' || view === 'gradient') && (React.createElement(ColorGradient, __assign({}, gradientSettings, { tabIndex: 0, ref: gradientRef, value: value, onChange: onChangeHandler }))),\n (view === 'combo' || view === 'palette') && (React.createElement(ColorPalette, __assign({}, paletteSettings, { ref: paletteRef, value: value, onChange: onPaletteChangeHandler }))))) })));\n});\nColorPicker.propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n disabled: PropTypes.bool,\n view: PropTypes.oneOf(['gradient', 'palette', 'combo']),\n dir: PropTypes.string,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n};\nvar defaultProps = {\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid',\n view: 'palette',\n gradientSettings: DEFAULT_GRADIENT_SETTINGS,\n paletteSettings: DEFAULT_PALETTE_SETTINGS\n};\nColorPicker.defaultProps = defaultProps;\nColorPicker.displayName = 'KendoColorPicker';\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 * as React from 'react';\nimport { ColorPicker } from '@progress/kendo-react-inputs';\nimport { applyInlineStyle } from '@progress/kendo-editor-common';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages } from '../messages';\n/**\n * @hidden\n */\nexport var ApplyColorTool = function (props) {\n var view = props.view, style = props.style, colorPickerProps = props.colorPickerProps, commandName = props.commandName;\n var titleKey = colorPickerProps.title;\n var _a = colorPickerProps.view, paletteView = _a === void 0 ? 'palette' : _a;\n var onChange = React.useCallback(function (event) {\n if (view) {\n applyInlineStyle({ style: style, value: event.value }, commandName)(view.state, view.dispatch);\n if (paletteView === 'palette') {\n view.focus();\n }\n }\n }, [view, style, paletteView, commandName]);\n return (React.createElement(ColorPicker, __assign({ onChange: onChange, onActiveColorClick: onChange }, colorPickerProps, { title: titleKey ? useLocalization().toLanguageString(titleKey, messages[titleKey]) : titleKey })));\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { getBlockFormats, formatBlockElements } from '@progress/kendo-editor-common';\nimport { userSelectNone, itemRender } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var FormatBlockToolNS;\n(function (FormatBlockToolNS) {\n /**\n * @hidden\n */\n FormatBlockToolNS.createFormatBlockDropDownList = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(FormatBlockDropDownList, _super);\n function FormatBlockDropDownList() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onChange = function (event) {\n var item = event.target.value;\n var view = _this.props.view;\n if (view && formatBlockElements(item.value, settings.commandName)(view.state, view.dispatch)) {\n var syntheticEvent = event.syntheticEvent;\n if (syntheticEvent && syntheticEvent.type === 'click') {\n view.focus();\n }\n }\n };\n return _this;\n }\n FormatBlockDropDownList.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, data = _a.data, defaultItemProps = _a.defaultItem, ddlProps = __rest(_a, [\"view\", \"render\", \"data\", \"defaultItem\"]);\n var items = data || settings.items;\n var defaultItem = defaultItemProps || settings.defaultItem;\n var state = view && view.state;\n var formats = state ? getBlockFormats(state) : [];\n var localization = provideLocalizationService(this);\n if (defaultItem && defaultItem.localizationKey) {\n defaultItem = __assign({}, defaultItem);\n defaultItem.text = defaultItem.localizationKey ? localization.toLanguageString(defaultItem.localizationKey, messages[defaultItem.localizationKey]) : defaultItem.text;\n }\n var value = new Set(formats).size === 1 ? formats[0] : null;\n var dropdown = (React.createElement(DropDownList, __assign({ value: value ? items.find(function (i) { return i.value === value; }) : value, onChange: this.onChange, itemRender: itemRender, data: items, defaultItem: defaultItem, textField: \"text\", dataItemKey: \"value\", style: userSelectNone, leftRightKeysNavigation: false }, ddlProps)));\n return render ? render.call(undefined, dropdown, { view: view }) : dropdown;\n };\n return FormatBlockDropDownList;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(FormatBlockToolNS || (FormatBlockToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var createProseMirrorTool = function (settings, command) {\n var Tool = /** @class */ (function (_super) {\n __extends(ProseMirrorTool, _super);\n function ProseMirrorTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ProseMirrorTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var state = view && view.state;\n var disabled = state ? !command(state) : false;\n var button = (React.createElement(Button, __assign({ onClick: function () { return view &&\n command(view.state, function (tr) { return view.dispatch(tr.setMeta('commandName', settings.commandName)); }); }, disabled: disabled }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, buttonProps)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return ProseMirrorTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n};\n","import { undo, redo } from '@progress/kendo-editor-common';\nimport { createProseMirrorTool } from './proseMirrorTool';\n/**\n * @hidden\n */\nexport var HistoryToolNS;\n(function (HistoryToolNS) {\n /**\n * @hidden\n */\n HistoryToolNS.createUndoTool = function (settings) { return createProseMirrorTool(settings, undo); };\n /**\n * @hidden\n */\n HistoryToolNS.createRedoTool = function (settings) { return createProseMirrorTool(settings, redo); };\n})(HistoryToolNS || (HistoryToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { indentBlocks, isIndented, canIndentAsListItem, hasNode, sinkListItem } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var IndentToolNS;\n(function (IndentToolNS) {\n /**\n * @hidden\n */\n IndentToolNS.createIndentTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(IndentTool, _super);\n function IndentTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IndentTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var dir = buttonProps.dir;\n var state = view && view.state;\n var nodes = state && state.schema.nodes;\n var listItem = nodes && nodes[settings.listsTypes.listItem];\n var actions = settings.actions;\n var canIndented = !!state && !!listItem &&\n (isIndented(state, actions, dir) ||\n actions.some(function (a) { return nodes && nodes[a.node] && hasNode(state, nodes[a.node]); })) &&\n !hasNode(state, listItem);\n var canListIndent = !!state && canIndentAsListItem(state, listItem);\n var canIndent = canIndented || canListIndent;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var button = (React.createElement(Button, __assign({ onClick: function () {\n if (view && canListIndent && listItem) {\n sinkListItem(listItem)(view.state, view.dispatch);\n }\n else if (view && canIndented) {\n indentBlocks(actions, settings.commandName, dir)(view.state, view.dispatch);\n }\n }, title: localization.toLanguageString(titleKey, messages[titleKey]), disabled: !canIndent }, onDownPreventDefault, settings.props, buttonProps)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return IndentTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(IndentToolNS || (IndentToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { toggleInlineFormat, hasMark } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from '../messages';\n/**\n * @hidden\n */\nexport var InlineFormatToolNS;\n(function (InlineFormatToolNS) {\n /**\n * @hidden\n */\n InlineFormatToolNS.createInlineFormatTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(InlineTool, _super);\n function InlineTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var mark = settings.mark, altMarks = settings.altMarks, altStyle = settings.altStyle;\n var options = { mark: mark, altMarks: altMarks, altStyle: altStyle };\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var button = (React.createElement(Button, __assign({ onClick: function () {\n return view && toggleInlineFormat(options, state && state.tr.setMeta('commandName', settings.commandName))(view.state, view.dispatch);\n }, selected: !!state && hasMark(state, options), togglable: true }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, buttonProps)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return InlineTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(InlineFormatToolNS || (InlineFormatToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { getMark, applyLink } from '@progress/kendo-editor-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nvar InsertLinkDialog = /** @class */ (function (_super) {\n __extends(InsertLinkDialog, _super);\n function InsertLinkDialog() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.href = null;\n _this.title = null;\n _this.target = null;\n _this.onClose = function () {\n _this.props.view.focus();\n _this.props.onClose();\n };\n _this.onInsert = function () {\n var view = _this.props.view;\n var mark = _this.props.settings.mark;\n var attrs = {\n href: _this.href ? _this.href.value : undefined,\n title: _this.title ? _this.title.value : undefined,\n target: _this.target && _this.target.checked ? '_blank' : undefined\n };\n applyLink({ mark: mark, attrs: attrs }, _this.props.settings.commandName)(view.state, view.dispatch);\n _this.onClose();\n };\n return _this;\n }\n /**\n * @hidden\n */\n InsertLinkDialog.prototype.render = function () {\n var _this = this;\n var _a = this.props, view = _a.view, settings = _a.settings, dir = _a.dir, render = _a.render;\n var localization = provideLocalizationService(this);\n var _b = settings.messages, insertHyperlinkDialogTitle = _b.insertHyperlinkDialogTitle, insertHyperlinkAddress = _b.insertHyperlinkAddress, insertHyperlinkTitle = _b.insertHyperlinkTitle, insertHyperlinkNewWindow = _b.insertHyperlinkNewWindow, insertHyperlinkCancel = _b.insertHyperlinkCancel, insertHyperlinkInsert = _b.insertHyperlinkInsert;\n var linkMark = view ?\n getMark(view.state, view.state.schema.marks[settings.mark])\n : false;\n var content = (React.createElement(\"div\", { className: \"k-edit-form-container\" },\n React.createElement(\"div\", { className: \"k-edit-label\" },\n React.createElement(\"label\", { htmlFor: \"k-editor-link-url\" }, localization.toLanguageString(insertHyperlinkAddress, messages[insertHyperlinkAddress]))),\n React.createElement(\"div\", { className: \"k-edit-field\" },\n React.createElement(\"input\", { type: \"text\", className: \"k-input\", id: \"k-editor-link-url\", ref: function (e) { return _this.href = e; }, defaultValue: (linkMark && linkMark.attrs.href) || undefined, autoFocus: true })),\n React.createElement(\"div\", { className: \"k-edit-label k-editor-link-text-row\" },\n React.createElement(\"label\", { htmlFor: \"k-editor-link-text\" }, localization.toLanguageString(insertHyperlinkTitle, messages[insertHyperlinkTitle]))),\n React.createElement(\"div\", { className: \"k-edit-field k-editor-link-text-row\" },\n React.createElement(\"input\", { type: \"text\", className: \"k-input\", id: \"k-editor-link-text\", ref: function (e) { return _this.title = e; }, defaultValue: (linkMark && linkMark.attrs.title) || undefined })),\n settings.linkTarget !== false && React.createElement(\"div\", { className: \"k-edit-field\" },\n React.createElement(\"input\", { type: \"checkbox\", className: \"k-checkbox k-checkbox-md k-rounded-md\", id: \"k-editor-link-target\", ref: function (e) { return _this.target = e; }, defaultChecked: (linkMark && !!linkMark.attrs.target) || undefined }),\n React.createElement(\"label\", { htmlFor: \"k-editor-link-target\", className: \"k-checkbox-label\" }, localization.toLanguageString(insertHyperlinkNewWindow, messages[insertHyperlinkNewWindow])))));\n var actionButtons = [(React.createElement(Button, { onClick: this.onClose, dir: dir, key: \"cancel\" }, localization.toLanguageString(insertHyperlinkCancel, messages[insertHyperlinkCancel]))), (React.createElement(Button, { onClick: this.onInsert, themeColor: 'primary', dir: dir, key: \"insert\" }, localization.toLanguageString(insertHyperlinkInsert, messages[insertHyperlinkInsert])))\n ];\n var dialog = (React.createElement(Dialog, { title: localization.toLanguageString(insertHyperlinkDialogTitle, messages[insertHyperlinkDialogTitle]), onClose: this.onClose, closeIcon: true, dir: dir, style: dir === 'rtl' ? { textAlign: 'right' } : undefined, appendTo: document.body },\n content,\n React.createElement.apply(React, __spreadArray([DialogActionsBar, null], actionButtons, false))));\n return render ? render(dialog, { content: content, actionButtons: actionButtons }) : dialog;\n };\n return InsertLinkDialog;\n}(React.Component));\nexport { InsertLinkDialog };\nregisterForLocalization(InsertLinkDialog);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { NodeSelection, insertNode } from '@progress/kendo-editor-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nvar InsertImageDialog = /** @class */ (function (_super) {\n __extends(InsertImageDialog, _super);\n function InsertImageDialog() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.src = null;\n _this.altText = null;\n _this.title = null;\n _this.width = null;\n _this.height = null;\n _this.onClose = function () {\n _this.props.view.focus();\n _this.props.onClose();\n };\n _this.onInsert = function () {\n var _a = _this.props, view = _a.view, settings = _a.settings;\n var nodes = view.state.schema.nodes;\n var nodeType = nodes[settings.node];\n var data = {\n src: _this.src ? _this.src.value : null,\n title: _this.title ? _this.title.value : null,\n alt: _this.altText ? _this.altText.value : null,\n width: _this.width ? _this.width.value : null,\n height: _this.height ? _this.height.value : null\n };\n var attrs = Object.keys(data)\n .filter(function (key) { return data[key] !== null && data[key] !== ''; })\n .reduce(function (acc, curr) {\n var _a;\n return Object.assign(acc, (_a = {}, _a[curr] = data[curr], _a));\n }, {});\n var newImage = nodeType.createAndFill(attrs);\n if (newImage) {\n var insertImageCmd = insertNode(newImage, true);\n insertImageCmd(view.state, function (tr) { return view.dispatch(tr.setMeta('commandName', settings.commandName).setMeta('args', attrs)); });\n }\n _this.onClose();\n };\n return _this;\n }\n /**\n * @hidden\n */\n InsertImageDialog.prototype.render = function () {\n var _this = this;\n var _a = this.props, view = _a.view, settings = _a.settings, dir = _a.dir, render = _a.render;\n var _b = settings.messages, insertImageDialogTitle = _b.insertImageDialogTitle, insertImageAddress = _b.insertImageAddress, insertImageTitle = _b.insertImageTitle, insertImageAltText = _b.insertImageAltText, insertImageWidth = _b.insertImageWidth, insertImageHeight = _b.insertImageHeight, insertImageCancel = _b.insertImageCancel, insertImageInsert = _b.insertImageInsert;\n var localization = provideLocalizationService(this);\n var state = view && view.state;\n var attrs = {};\n if (state && state.selection instanceof NodeSelection &&\n state.selection.node.type === state.schema.nodes[settings.node]) {\n attrs = state.selection.node.attrs;\n }\n var content = (React.createElement(\"div\", { className: \"k-edit-form-container\" },\n React.createElement(\"div\", { className: \"k-edit-label\" },\n React.createElement(\"label\", { htmlFor: \"k-editor-image-url\" }, localization.toLanguageString(insertImageAddress, messages[insertImageAddress]))),\n React.createElement(\"div\", { className: \"k-edit-field\" },\n React.createElement(\"input\", { type: \"text\", className: \"k-input\", id: \"k-editor-image-url\", defaultValue: attrs.src, ref: function (e) { return _this.src = e; }, autoFocus: true })),\n React.createElement(\"div\", { className: \"k-edit-label\" },\n React.createElement(\"label\", { htmlFor: \"k-editor-image-alt\" }, localization.toLanguageString(insertImageAltText, messages[insertImageAltText]))),\n React.createElement(\"div\", { className: \"k-edit-field\" },\n React.createElement(\"input\", { type: \"text\", className: \"k-input\", id: \"k-editor-image-alt\", defaultValue: attrs.alt, ref: function (e) { return _this.altText = e; } })),\n React.createElement(\"div\", { className: \"k-edit-label\" },\n React.createElement(\"label\", { htmlFor: \"k-editor-image-title\" }, localization.toLanguageString(insertImageTitle, messages[insertImageTitle]))),\n React.createElement(\"div\", { className: \"k-edit-field\" },\n React.createElement(\"input\", { type: \"text\", className: \"k-input\", id: \"k-editor-image-title\", defaultValue: attrs.title, ref: function (e) { return _this.title = e; } })),\n React.createElement(\"div\", { className: \"k-edit-label\" },\n React.createElement(\"label\", { htmlFor: \"k-editor-image-width\" }, localization.toLanguageString(insertImageWidth, messages[insertImageWidth]))),\n React.createElement(\"div\", { className: \"k-edit-field\" },\n React.createElement(\"input\", { type: \"text\", className: \"k-input\", id: \"k-editor-image-width\", defaultValue: attrs.width, ref: function (e) { return _this.width = e; } })),\n React.createElement(\"div\", { className: \"k-edit-label\" },\n React.createElement(\"label\", { htmlFor: \"k-editor-image-height\" }, localization.toLanguageString(insertImageHeight, messages[insertImageHeight]))),\n React.createElement(\"div\", { className: \"k-edit-field\" },\n React.createElement(\"input\", { type: \"text\", className: \"k-input\", id: \"k-editor-image-height\", defaultValue: attrs.height, ref: function (e) { return _this.height = e; } }))));\n var actionButtons = [(React.createElement(Button, { onClick: this.onClose, dir: dir, key: \"cancel\" }, localization.toLanguageString(insertImageCancel, messages[insertImageCancel]))), (React.createElement(Button, { onClick: this.onInsert, themeColor: 'primary', dir: dir, key: \"insert\" }, localization.toLanguageString(insertImageInsert, messages[insertImageInsert])))];\n var dialog = (React.createElement(Dialog, { title: localization.toLanguageString(insertImageDialogTitle, messages[insertImageDialogTitle]), onClose: this.onClose, key: \"dialog\", closeIcon: true, dir: dir, style: dir === 'rtl' ? { textAlign: 'right' } : undefined, appendTo: document.body },\n content,\n React.createElement.apply(React, __spreadArray([DialogActionsBar, null], actionButtons, false))));\n return render ? render(dialog, { content: content, actionButtons: actionButtons }) : dialog;\n };\n return InsertImageDialog;\n}(React.Component));\nexport { InsertImageDialog };\nregisterForLocalization(InsertImageDialog);\n","import { PluginKey } from '@progress/kendo-editor-common';\n/**\n * @hidden\n */\nexport var editorPropsKey = new PluginKey('editor-props');\n","export var windowStage;\n(function (windowStage) {\n windowStage[\"DEFAULT\"] = \"DEFAULT\";\n windowStage[\"FULLSCREEN\"] = \"FULLSCREEN\";\n windowStage[\"MINIMIZED\"] = \"MINIMIZED\";\n})(windowStage || (windowStage = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { getHtml, setHtml, indentHtml, trimWhitespace } from '@progress/kendo-editor-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { editorPropsKey } from './../utils/props-key';\n/**\n * @hidden\n */\nvar ViewHtmlDialog = /** @class */ (function (_super) {\n __extends(ViewHtmlDialog, _super);\n function ViewHtmlDialog() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.htmlArea = null;\n _this.onUpdate = function () {\n var _a = _this.props, view = _a.view, settings = _a.settings;\n var html = trimWhitespace(_this.htmlArea ? _this.htmlArea.value : '');\n var preserveWhitespace = editorPropsKey.getState(view.state).preserveWhitespace;\n setHtml(html, settings.commandName, { preserveWhitespace: preserveWhitespace })(view.state, view.dispatch);\n _this.onClose();\n };\n _this.onClose = function () {\n _this.props.view.focus();\n _this.props.onClose();\n };\n return _this;\n }\n /**\n * @hidden\n */\n ViewHtmlDialog.prototype.render = function () {\n var _this = this;\n var _a = this.props, view = _a.view, settings = _a.settings, dir = _a.dir, render = _a.render;\n var localization = provideLocalizationService(this);\n var _b = settings.messages, viewHtmlDialogTitle = _b.viewHtmlDialogTitle, viewHtmlCancel = _b.viewHtmlCancel, viewHtmlUpdate = _b.viewHtmlUpdate;\n var content = (React.createElement(\"textarea\", { className: \"k-textarea k-editor-textarea\", style: {\n height: '280px',\n width: '490px'\n }, ref: function (e) { return _this.htmlArea = e; }, defaultValue: indentHtml(getHtml(view.state)), autoFocus: true }));\n var actionButtons = [(React.createElement(Button, { onClick: this.onClose, dir: dir, key: \"cancel\" }, localization.toLanguageString(viewHtmlCancel, messages[viewHtmlCancel]))), (React.createElement(Button, { onClick: this.onUpdate, themeColor: 'primary', dir: dir, key: \"update\" }, localization.toLanguageString(viewHtmlUpdate, messages[viewHtmlUpdate])))\n ];\n var dialog = (React.createElement(Dialog, { title: localization.toLanguageString(viewHtmlDialogTitle, messages[viewHtmlDialogTitle]), onClose: this.onClose, key: \"dialog\", closeIcon: true, dir: dir, style: dir === 'rtl' ? { textAlign: 'right' } : undefined, appendTo: document.body },\n content,\n React.createElement.apply(React, __spreadArray([DialogActionsBar, null], actionButtons, false))));\n return render ? render(dialog, { content: content, actionButtons: actionButtons }) : dialog;\n };\n return ViewHtmlDialog;\n}(React.Component));\nexport { ViewHtmlDialog };\nregisterForLocalization(ViewHtmlDialog);\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 * as React from 'react';\nimport { windowStage } from './StageEnum';\nimport { Button } from '@progress/kendo-react-buttons';\n/**\n * @hidden\n */\nvar WindowTitleBarComponent = function (props) {\n var children = props.children, onCloseButtonClick = props.onCloseButtonClick, onMinimizeButtonClick = props.onMinimizeButtonClick, onFullScreenButtonClick = props.onFullScreenButtonClick, onRestoreButtonClick = props.onRestoreButtonClick, onDoubleClick = props.onDoubleClick, stage = props.stage, forwardedRef = props.forwardedRef;\n var minimizeButtonRender = props.minimizeButton ?\n React.createElement(props.minimizeButton, { onClick: onMinimizeButtonClick, stage: stage }) :\n (React.createElement(Button, { fillMode: \"flat\", icon: \"window-minimize\", onClick: onMinimizeButtonClick }));\n var maximizeButtonRender = props.maximizeButton ?\n React.createElement(props.maximizeButton, { onClick: onFullScreenButtonClick, stage: stage }) :\n (React.createElement(Button, { fillMode: \"flat\", icon: \"window-maximize\", onClick: onFullScreenButtonClick }));\n var restoreButtonRender = props.restoreButton ?\n React.createElement(props.restoreButton, { onClick: onRestoreButtonClick, stage: stage }) :\n (React.createElement(Button, { fillMode: \"flat\", icon: \"window-restore\", onClick: onRestoreButtonClick }));\n var closeButtonRender = props.closeButton ?\n React.createElement(props.closeButton, { onClick: onCloseButtonClick, stage: stage }) :\n (React.createElement(Button, { fillMode: \"flat\", icon: \"close\", onClick: onCloseButtonClick }));\n return (React.createElement(\"div\", { className: \"k-window-titlebar k-dialog-titlebar\", style: { touchAction: 'none' }, ref: forwardedRef, onDoubleClick: onDoubleClick },\n React.createElement(\"div\", { className: \"k-window-title\" }, children ? children : ''),\n React.createElement(\"div\", { className: \"k-window-actions\" },\n (stage === windowStage.DEFAULT) && minimizeButtonRender,\n (stage === windowStage.DEFAULT) && maximizeButtonRender,\n (stage !== windowStage.DEFAULT) && restoreButtonRender,\n closeButtonRender)));\n};\n/**\n * @hidden\n */\nexport var WindowTitleBar = React.forwardRef(function (props, ref) { return (React.createElement(WindowTitleBarComponent, __assign({}, props, { forwardedRef: ref }))); });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar keys = ['n', 'e', 's', 'w', 'se', 'sw', 'ne', 'nw'];\n/**\n * @hidden\n */\nvar ResizeHandlers = /** @class */ (function (_super) {\n __extends(ResizeHandlers, _super);\n function ResizeHandlers() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ResizeHandlers.prototype.render = function () {\n var _this = this;\n return (React.createElement(\"div\", null,\n \" \",\n keys.map(function (key, index) {\n return (React.createElement(Draggable, { key: index, onDrag: function (data) {\n var event = data.event;\n event.originalEvent.preventDefault();\n _this.props.onResize(event, { end: false, direction: key });\n }, onRelease: function (data) {\n var event = data.event;\n event.originalEvent.preventDefault();\n _this.props.onResize(event, { end: true, direction: key });\n } },\n React.createElement(\"div\", { className: 'k-resize-handle k-resize-' + key, style: { display: 'block', touchAction: 'none' } })));\n })));\n };\n return ResizeHandlers;\n}(React.Component));\nexport { ResizeHandlers };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * @hidden\n */\nvar MiddleLayerOptimization = /** @class */ (function (_super) {\n __extends(MiddleLayerOptimization, _super);\n function MiddleLayerOptimization() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MiddleLayerOptimization.prototype.shouldComponentUpdate = function (nextProps) {\n return nextProps.shouldUpdateOnDrag || !nextProps.isDragging;\n };\n MiddleLayerOptimization.prototype.render = function () {\n return this.props.children;\n };\n return MiddleLayerOptimization;\n}(React.Component));\nexport { MiddleLayerOptimization };\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Returns the action bar of the Window.\n *\n * @returns React.ReactElement\n */\nexport var WindowActionsBar = function (props) {\n var _a = props.layout, layout = _a === void 0 ? defaultProps.layout : _a, children = props.children;\n var wrapperClasses = classNames('k-window-buttongroup', 'k-actions', 'k-hstack', {\n 'k-justify-content-start': layout === 'start',\n 'k-justify-content-center': layout === 'center',\n 'k-justify-content-end': layout === 'end',\n 'k-justify-content-stretch': layout === 'stretched'\n });\n return (React.createElement(\"div\", { className: wrapperClasses }, children));\n};\nWindowActionsBar.propTypes = {\n children: PropTypes.any,\n layout: PropTypes.oneOf(['start', 'center', 'end', 'stretched'])\n};\nvar defaultProps = {\n layout: 'end'\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { WindowTitleBar } from './WindowTitlebar';\nimport { dispatchEvent, Keys, classNames, guid, ZIndexContext, canUseDOM } from '@progress/kendo-react-common';\nimport { Draggable, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { ResizeHandlers } from './WindowResizeHandlers';\nimport { MiddleLayerOptimization } from './MiddleLayerOptimization';\nimport { windowStage } from './StageEnum';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { WindowActionsBar } from './WindowActionsBar';\nimport { DATA_DIALOGS_ID, DEFAULT_DIALOGS_ZINDEX, ZINDEX_DIALOGS_STEP } from './constants';\nimport { getMaxZIndex } from './utils';\nvar DEFAULT_WIDTH = 300;\nvar DEFAULT_HEIGHT = 300;\nvar DEFAULT_MIN_WIDTH = 120;\nvar DEFAULT_MIN_HEIGHT = 100;\nvar DEFAULT_STEP = 5;\n/** @hidden */\nvar WindowWithoutContext = /** @class */ (function (_super) {\n __extends(WindowWithoutContext, _super);\n function WindowWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.context = 0;\n _this.draggable = null;\n _this.offSetCoordinates = { x: 0, y: 0 };\n _this._id = guid();\n /**\n * @hidden\n */\n _this.onKeyDown = function (event) {\n if (event.target !== event.currentTarget) {\n return;\n }\n var minWidth = _this.props.minWidth || DEFAULT_MIN_WIDTH;\n var minHeight = _this.props.minHeight || DEFAULT_MIN_HEIGHT;\n if (event.ctrlKey && _this.props.resizable) {\n switch (event.keyCode) {\n case Keys.up:\n event.preventDefault();\n if (minHeight <= (_this.height - DEFAULT_STEP)) {\n _this.setState({ height: _this.height - DEFAULT_STEP });\n }\n break;\n case Keys.down:\n event.preventDefault();\n _this.setState({ height: _this.height + DEFAULT_STEP });\n break;\n case Keys.left:\n if (minWidth <= (_this.width - DEFAULT_STEP)) {\n _this.setState({ width: _this.width - DEFAULT_STEP });\n }\n break;\n case Keys.right:\n _this.setState({ width: _this.width + DEFAULT_STEP });\n break;\n default: return;\n }\n _this.dispatchMoveEvent(_this.props.onResize, event, false, undefined);\n return;\n }\n if (event.altKey) {\n switch (event.keyCode) {\n case Keys.up:\n if (_this.windowStage === windowStage.MINIMIZED) {\n _this.handleRestore(event);\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.DEFAULT });\n }\n else if (_this.windowStage === windowStage.DEFAULT) {\n _this.handleFullscreen(event);\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.FULLSCREEN });\n }\n break;\n case Keys.down:\n if (_this.windowStage === windowStage.FULLSCREEN) {\n _this.handleRestore(event);\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.DEFAULT });\n }\n else if (_this.windowStage === windowStage.DEFAULT) {\n _this.handleMinimize(event);\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.MINIMIZED });\n }\n break;\n default:\n }\n return;\n }\n if (!event.ctrlKey) {\n switch (event.keyCode) {\n case Keys.esc:\n if (_this.props.onClose) {\n _this.handleCloseWindow(event);\n }\n return;\n case Keys.up:\n _this.setState({ top: _this.state.top - DEFAULT_STEP });\n break;\n case Keys.down:\n _this.setState({ top: _this.state.top + DEFAULT_STEP });\n break;\n case Keys.left:\n _this.setState({ left: _this.state.left - DEFAULT_STEP });\n break;\n case Keys.right:\n _this.setState({ left: _this.state.left + DEFAULT_STEP });\n break;\n default: return;\n }\n }\n _this.dispatchMoveEvent(_this.props.onMove, event, false, undefined);\n };\n /**\n * @hidden\n */\n _this.onPress = function (data) {\n var e = data.event;\n _this.windowCoordinatesState.differenceLeft = e.pageX - _this.left;\n _this.windowCoordinatesState.differenceTop = e.pageY - _this.top;\n };\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var e = data.event;\n e.originalEvent.preventDefault();\n if (_this.windowStage !== windowStage.FULLSCREEN && _this.props.draggable) {\n _this.setState({\n top: Math.max(e.pageY - _this.windowCoordinatesState.differenceTop, 0),\n left: e.pageX - _this.windowCoordinatesState.differenceLeft,\n isDragging: true\n });\n if (_this.props.onMove) {\n // eslint-disable-next-line max-len\n _this.dispatchMoveEvent(_this.props.onMove, e, true, false);\n }\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var e = data.event;\n if (_this.windowStage !== windowStage.FULLSCREEN && _this.props.draggable) {\n if (_this.props.onMove) {\n _this.dispatchMoveEvent(_this.props.onMove, e, true, true);\n }\n }\n _this.setState({\n isDragging: false\n });\n };\n /**\n * @hidden\n */\n _this.onFocus = function () {\n if (_this._blurTimeout) {\n clearTimeout(_this._blurTimeout);\n _this._blurTimeout = undefined;\n }\n else {\n _this.setState({\n focused: true,\n zIndex: getMaxZIndex(_this.getCurrentZIndex(), _this.getDocument(), _this._id)\n });\n }\n };\n /**\n * @hidden\n */\n _this.onBlur = function () {\n clearTimeout(_this._blurTimeout);\n var currentWindow = _this.getWindow();\n if (currentWindow) {\n _this._blurTimeout = currentWindow.setTimeout(function () {\n _this.setState({ focused: false });\n _this._blurTimeout = undefined;\n });\n }\n };\n // Get initial coordinates of the Window\n _this.getInitialTop = function () {\n if (_this.props.top !== undefined) {\n return _this.props.top;\n }\n if (_this.props.initialTop !== undefined) {\n return _this.props.initialTop;\n }\n var height = DEFAULT_HEIGHT;\n if (_this.props.height !== undefined) {\n height = _this.props.height;\n }\n else if (_this.props.initialHeight !== undefined) {\n height = _this.props.initialHeight;\n }\n if (_this.props.appendTo) {\n return (_this.props.appendTo.offsetHeight / 2) - (height / 2);\n }\n var currentWindow = _this.getWindow();\n return currentWindow ? (currentWindow.innerHeight / 2) - (height / 2) : 0;\n };\n _this.getInitialLeft = function () {\n if (_this.props.left !== undefined) {\n return _this.props.left;\n }\n if (_this.props.initialLeft !== undefined) {\n return _this.props.initialLeft;\n }\n var width = DEFAULT_WIDTH;\n if (_this.props.width !== undefined) {\n width = _this.props.width;\n }\n else if (_this.props.initialWidth !== undefined) {\n width = _this.props.initialWidth;\n }\n if (_this.props.appendTo) {\n return (_this.props.appendTo.offsetWidth / 2) - (width / 2);\n }\n var currentWindow = _this.getWindow();\n return currentWindow ? (currentWindow.innerWidth / 2) - (width / 2) : 0;\n };\n _this.getInitialWidth = function () {\n var width = DEFAULT_WIDTH;\n if (_this.props.width !== undefined) {\n width = _this.props.width;\n }\n else if (_this.props.initialWidth !== undefined) {\n width = _this.props.initialWidth;\n }\n return width;\n };\n _this.getInitialHeight = function () {\n var height = DEFAULT_HEIGHT;\n if (_this.props.height !== undefined) {\n height = _this.props.height;\n }\n else if (_this.props.initialHeight !== undefined) {\n height = _this.props.initialHeight;\n }\n return height;\n };\n // Handle actions\n _this.handleMinimize = function (event) {\n event.preventDefault();\n _this.windowCoordinatesState.leftBeforeAction = _this.left;\n _this.windowCoordinatesState.topBeforeAction = _this.top;\n _this.windowCoordinatesState.widthBeforeAction = _this.width;\n _this.windowCoordinatesState.heightBeforeAction = _this.height;\n _this.setState({\n stage: windowStage.MINIMIZED,\n height: 0\n });\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.MINIMIZED });\n };\n _this.handleFullscreen = function (event) {\n event.preventDefault();\n _this.windowCoordinatesState.leftBeforeAction = _this.left;\n _this.windowCoordinatesState.topBeforeAction = _this.top;\n _this.windowCoordinatesState.widthBeforeAction = _this.width;\n _this.windowCoordinatesState.heightBeforeAction = _this.height;\n var currentWindow = _this.getWindow();\n var innerWidth = currentWindow ? currentWindow.innerWidth : 0;\n var innerHeight = currentWindow ? currentWindow.innerHeight : 0;\n _this.setState({\n left: 0,\n top: 0,\n width: _this.props.appendTo ? _this.props.appendTo.offsetWidth : innerWidth,\n height: _this.props.appendTo ? _this.props.appendTo.offsetHeight : innerHeight,\n stage: windowStage.FULLSCREEN\n });\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.FULLSCREEN });\n };\n _this.handleRestore = function (event) {\n event.preventDefault();\n if (_this.windowStage === windowStage.FULLSCREEN) {\n _this.setState({\n stage: windowStage.DEFAULT,\n left: _this.windowCoordinatesState.leftBeforeAction,\n top: _this.windowCoordinatesState.topBeforeAction,\n width: _this.windowCoordinatesState.widthBeforeAction,\n height: _this.windowCoordinatesState.heightBeforeAction\n });\n }\n else if (_this.windowStage === windowStage.MINIMIZED) {\n _this.setState({\n stage: windowStage.DEFAULT,\n height: _this.windowCoordinatesState.heightBeforeAction\n });\n }\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.DEFAULT });\n };\n _this.handleCloseWindow = function (event) {\n event.preventDefault();\n dispatchEvent(_this.props.onClose, event, _this, { state: undefined });\n };\n _this.handleDoubleClick = function (e) {\n if (_this.windowStage === windowStage.FULLSCREEN || _this.windowStage === windowStage.MINIMIZED) {\n _this.handleRestore(e);\n }\n else {\n _this.handleFullscreen(e);\n }\n };\n // Handle resizing\n _this.handleResize = function (event, props) {\n var x = _this.props.appendTo ? event.pageX - _this.offSetCoordinates.x : event.pageX;\n var y = _this.props.appendTo ? event.pageY - _this.offSetCoordinates.y : event.pageY;\n var currentWidth = _this.width;\n var currentHeight = _this.height;\n var minWidth = _this.props.minWidth || DEFAULT_MIN_WIDTH;\n var minHeight = _this.props.minHeight || DEFAULT_MIN_HEIGHT;\n var heightDifference = _this.top - y;\n var widthDifference = _this.left - x;\n var newWidth = x - _this.left;\n var newHeight = y - _this.top;\n var newState = Object.assign({}, _this.state, { isDragging: !props.end });\n if (props.direction.indexOf('n') >= 0 && minHeight - (currentHeight + heightDifference) < 0) {\n if (_this.top > 0) {\n newState.height = currentHeight + heightDifference;\n }\n newState.top = y;\n }\n if (props.direction.indexOf('s') >= 0 && (minHeight - newHeight < 0)) {\n newState.height = newHeight;\n }\n if (props.direction.indexOf('w') >= 0 && minWidth - (currentWidth + widthDifference) < 0) {\n if (_this.left > 0) {\n newState.width = currentWidth + widthDifference;\n }\n newState.left = x;\n }\n if (props.direction.indexOf('e') >= 0 && (minWidth - newWidth < 0)) {\n newState.width = newWidth;\n }\n _this.setState(newState);\n _this.dispatchMoveEvent(_this.props.onResize, event, true, props.end);\n };\n // Dispatcher for the resize and move events\n _this.dispatchMoveEvent = function (callback, event, drag, end) {\n if (!callback) {\n return;\n }\n callback.call(undefined, {\n nativeEvent: event.nativeEvent ? event.nativeEvent : event.originalEvent,\n drag: drag,\n end: end,\n target: _this,\n left: _this.state.left,\n top: _this.state.top,\n width: _this.state.width,\n hight: _this.state.height,\n height: _this.state.height\n });\n };\n _this.handleBrowserWindowResize = function () {\n if (_this.windowStage === windowStage.FULLSCREEN) {\n var currentWindow = _this.getWindow();\n var innerWidth_1 = currentWindow ? currentWindow.innerWidth : 0;\n var innerHeight_1 = currentWindow ? currentWindow.innerHeight : 0;\n _this.setState({\n width: _this.props.appendTo ? _this.props.appendTo.offsetWidth : innerWidth_1,\n height: _this.props.appendTo ? _this.props.appendTo.offsetHeight : innerHeight_1\n });\n }\n };\n _this.getCurrentZIndex = function () {\n if (!_this.state || _this.context === undefined) {\n return _this.context ? _this.context : DEFAULT_DIALOGS_ZINDEX;\n }\n return _this.state.zIndex > (_this.context ? _this.context + ZINDEX_DIALOGS_STEP : 0) ? _this.state.zIndex : _this.context + ZINDEX_DIALOGS_STEP;\n };\n _this.getDocument = function () {\n return _this.props.appendTo ? _this.props.appendTo.ownerDocument : document;\n };\n _this.getWindow = function () {\n var currentDocument = _this.getDocument();\n return currentDocument && currentDocument.defaultView;\n };\n validatePackage(packageMetadata);\n _this.state = {\n stage: _this.props.stage || windowStage.DEFAULT,\n isDragging: false,\n top: _this.getInitialTop(),\n left: _this.getInitialLeft(),\n width: _this.getInitialWidth(),\n height: _this.getInitialHeight(),\n focused: true,\n zIndex: getMaxZIndex(_this.getCurrentZIndex(), _this.getDocument(), _this._id)\n };\n _this.windowCoordinatesState = {\n leftBeforeAction: _this.getInitialLeft(),\n topBeforeAction: _this.getInitialTop(),\n widthBeforeAction: _this.getInitialWidth(),\n heightBeforeAction: _this.getInitialHeight()\n };\n return _this;\n }\n /**\n * @hidden\n */\n WindowWithoutContext.prototype.componentDidMount = function () {\n var currentWindow = this.getWindow();\n if (currentWindow) {\n currentWindow.addEventListener('resize', this.handleBrowserWindowResize);\n }\n var currentDocument = this.getDocument();\n if (this.props.appendTo && currentDocument) {\n var containerCoordinates = this.props.appendTo.getBoundingClientRect();\n var bodyRect = currentDocument.body.getBoundingClientRect();\n this.offSetCoordinates.x = containerCoordinates.left - bodyRect.left;\n this.offSetCoordinates.y = containerCoordinates.top - bodyRect.top;\n }\n };\n /**\n * @hidden\n */\n WindowWithoutContext.prototype.componentWillUnmount = function () {\n var currentWindow = this.getWindow();\n if (currentWindow) {\n currentWindow.removeEventListener('resize', this.handleBrowserWindowResize);\n }\n };\n /**\n * @hidden\n */\n WindowWithoutContext.prototype.componentDidUpdate = function () {\n var currentDocument = this.getDocument();\n if (this.props.appendTo && currentDocument) {\n var containerCoordinates = this.props.appendTo.getBoundingClientRect();\n var bodyRect = currentDocument.body.getBoundingClientRect();\n this.offSetCoordinates.x = containerCoordinates.left - bodyRect.left;\n this.offSetCoordinates.y = containerCoordinates.top - bodyRect.top;\n }\n };\n /**\n * @hidden\n */\n WindowWithoutContext.prototype.render = function () {\n var _a;\n var _this = this;\n var elementsArray = React.Children.toArray(this.props.children);\n var content = this.getContent(elementsArray);\n var actions = this.getActionBar(elementsArray);\n var currentZIndex = this.getCurrentZIndex();\n var classNamesWindow = classNames('k-widget', 'k-window', this.props.className, { 'k-window-minimized': this.state.stage === 'MINIMIZED' }, { 'k-window-focused': this.state.focused });\n var windowElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n React.createElement(React.Fragment, null,\n this.props.modal && (React.createElement(\"div\", { className: \"k-overlay\", style: __assign({ zIndex: currentZIndex }, this.props.overlayStyle) })),\n React.createElement(\"div\", __assign({}, (_a = {}, _a[DATA_DIALOGS_ID] = this._id, _a), { tabIndex: 0, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, ref: function (el) {\n _this.windowElement = el;\n _this.element = el;\n }, className: classNamesWindow, style: __assign({ top: this.top, left: this.left, width: this.width, height: this.height || '', zIndex: currentZIndex }, this.props.style) }),\n React.createElement(MiddleLayerOptimization, { shouldUpdateOnDrag: this.props.shouldUpdateOnDrag || false, isDragging: this.state.isDragging },\n React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { return _this.draggable = component; } },\n React.createElement(WindowTitleBar, { stage: this.windowStage, onDoubleClick: this.props.doubleClickStageChange ? this.handleDoubleClick : undefined, onMinimizeButtonClick: this.handleMinimize, onFullScreenButtonClick: this.handleFullscreen, onRestoreButtonClick: this.handleRestore, onCloseButtonClick: this.handleCloseWindow, closeButton: this.props.closeButton, minimizeButton: this.props.minimizeButton, maximizeButton: this.props.maximizeButton, restoreButton: this.props.restoreButton }, this.props.title)),\n this.windowStage !== windowStage.MINIMIZED\n ? (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"k-window-content\" }, content),\n actions))\n : null,\n this.windowStage === windowStage.DEFAULT &&\n this.props.resizable\n ? React.createElement(ResizeHandlers, { onResize: this.handleResize })\n : null)))));\n if (canUseDOM) {\n return this.props.appendTo !== null ?\n ReactDOM.createPortal(windowElement, this.props.appendTo || document.body) :\n windowElement;\n }\n return null;\n };\n Object.defineProperty(WindowWithoutContext.prototype, \"top\", {\n // Getters\n get: function () {\n if (this.windowStage !== windowStage.FULLSCREEN) {\n return Math.max(this.props.top || this.state.top, 0);\n }\n return 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WindowWithoutContext.prototype, \"left\", {\n get: function () {\n if (this.windowStage !== windowStage.FULLSCREEN) {\n return Math.max(this.props.left || this.state.left, 0);\n }\n return 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WindowWithoutContext.prototype, \"width\", {\n get: function () {\n var width = this.props.width || this.state.width;\n if (this.windowStage === windowStage.FULLSCREEN) {\n if (this.props.appendTo) {\n width = this.props.appendTo.offsetWidth;\n return width;\n }\n var currentWindow = this.getWindow();\n width = currentWindow ? currentWindow.innerWidth : 0;\n }\n return width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WindowWithoutContext.prototype, \"height\", {\n get: function () {\n var height = this.props.height || this.state.height;\n if (this.windowStage === windowStage.FULLSCREEN) {\n if (this.props.appendTo) {\n height = this.props.appendTo.offsetHeight;\n return height;\n }\n var currentWindow = this.getWindow();\n height = currentWindow ? currentWindow.innerHeight : 0;\n }\n else if (this.windowStage === windowStage.MINIMIZED) {\n height = 0;\n }\n return height;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WindowWithoutContext.prototype, \"windowStage\", {\n get: function () {\n return this.props.stage || this.state.stage;\n },\n enumerable: false,\n configurable: true\n });\n WindowWithoutContext.prototype.getActionBar = function (children) {\n return children.filter(function (child) { return child && child.type === WindowActionsBar; });\n };\n WindowWithoutContext.prototype.getContent = function (children) {\n return children.filter(function (child) {\n return child && child.type !== WindowActionsBar;\n });\n };\n WindowWithoutContext.displayName = 'Window';\n /**\n * @hidden\n */\n WindowWithoutContext.propTypes = {\n width: PropTypes.number,\n height: PropTypes.number,\n left: PropTypes.number,\n top: PropTypes.number,\n initialWidth: PropTypes.number,\n initialHeight: PropTypes.number,\n initialLeft: PropTypes.number,\n initialTop: PropTypes.number,\n minWidth: PropTypes.number,\n minHeight: PropTypes.number,\n resizable: PropTypes.bool,\n draggable: PropTypes.bool,\n title: PropTypes.any,\n shouldUpdateOnDrag: PropTypes.bool,\n stage: PropTypes.oneOf(['DEFAULT', 'MINIMIZED', 'FULLSCREEN']),\n className: PropTypes.string,\n style: PropTypes.object,\n overlayStyle: PropTypes.object\n };\n /**\n * @hidden\n */\n WindowWithoutContext.defaultProps = {\n minWidth: DEFAULT_MIN_WIDTH,\n minHeight: DEFAULT_MIN_HEIGHT,\n resizable: true,\n draggable: true,\n modal: false,\n doubleClickStageChange: true\n };\n /**\n * @hidden\n */\n WindowWithoutContext.contextType = ZIndexContext;\n return WindowWithoutContext;\n}(React.Component));\n/**\n * Represents the PropsContext of the `Window` component.\n * Used for global configuration of all `Window` instances.\n */\nexport var WindowPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Window component]({% slug overview_window %}).\n *\n * Accepts properties of type [WindowProps]({% slug api_dialogs_windowprops %}).\n * Obtaining the `ref` returns an object of type [WindowHandle]({% slug api_dialogs_windowhandle %}).\n */\nexport var Window = withPropsContext(WindowPropsContext, WindowWithoutContext);\nWindow.displayName = 'KendoReactWindow';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { Window } from '@progress/kendo-react-dialogs';\nimport { TabStrip, TabStripTab } from '@progress/kendo-react-layout';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nimport { formatString } from './../tools/utils';\nimport { find, replace, replaceAll, findAll, TextSelection, textHighlightKey, selectedLineTextOnly } from '@progress/kendo-editor-common';\nvar enter = 13, esc = 27;\nvar checkboxProps = { className: 'k-checkbox k-checkbox-md k-rounded-md', type: 'checkbox' };\nvar settings = EditorToolsSettings.findAndReplace;\n/**\n * @hidden\n */\nvar FindAndReplaceDialog = /** @class */ (function (_super) {\n __extends(FindAndReplaceDialog, _super);\n function FindAndReplaceDialog(props) {\n var _this = _super.call(this, props) || this;\n _this.onTabSelect = function (event) {\n _this.setState({ selectedTab: event.selected });\n };\n _this.onClose = function () {\n var view = _this.props.view;\n var state = view.state;\n var transaction = state.tr.setSelection(TextSelection.create(state.doc, state.selection.from, state.selection.to));\n view.updateState(state.apply(transaction));\n view.focus();\n _this.props.onClose.call(undefined);\n };\n _this.matchesMessage = function (locMessage) {\n var matches = _this.state.matches;\n var nextMatch = _this.state.nextMatch;\n var cur = 0, all = 0;\n if (matches && nextMatch) {\n var current = matches.findIndex(function (s) { return s.eq(nextMatch); });\n cur = current === -1 ? matches.length : current + 1;\n all = matches.length;\n }\n return formatString(locMessage, cur, all);\n };\n _this.onFindNext = function () {\n _this.onFind();\n };\n _this.onFindPrev = function () {\n _this.onFind(true);\n };\n _this.onFind = function (backward) {\n if (backward === void 0) { backward = false; }\n var view = _this.props.view;\n var _a = _this.state, text = _a.searchText, matchCase = _a.matchCase, matchCyclic = _a.matchCyclic, matchWord = _a.matchWord, useRegExp = _a.useRegExp;\n var searchOptions = { text: text, matchWord: matchWord, matchCase: matchCase, useRegExp: useRegExp, backward: backward, matchCyclic: matchCyclic };\n var selectionResult = find(view.state, searchOptions);\n if (selectionResult) {\n var transaction = view.state.tr.setSelection(selectionResult);\n transaction.scrollIntoView();\n view.updateState(view.state.apply(transaction));\n _this.setState({ nextMatch: selectionResult });\n }\n };\n _this.onReplace = function () {\n var view = _this.props.view;\n var selection = view.state.selection;\n var replaceText = _this.state.replaceText;\n if (!selection.empty) {\n var start = selection.from;\n var end = start + replaceText.length;\n var transaction = replace(selection, replaceText, view.state.tr);\n transaction.setSelection(TextSelection.create(transaction.doc, start, end));\n transaction.scrollIntoView();\n view.dispatch(transaction);\n _this.setNextState({});\n }\n };\n _this.onReplaceAll = function () {\n var view = _this.props.view;\n var _a = _this.state, searchText = _a.searchText, replaceText = _a.replaceText, matchCase = _a.matchCase, matchWord = _a.matchWord, useRegExp = _a.useRegExp;\n var searchOptions = { text: searchText, matchWord: matchWord, matchCase: matchCase, useRegExp: useRegExp };\n var tr = replaceAll(view.state, replaceText, searchOptions);\n if (tr) {\n view.dispatch(tr);\n }\n _this.setNextState({});\n };\n _this.onKeyDown = function (event) {\n if (event.keyCode === enter) {\n _this.onFindNext();\n }\n else if (event.keyCode === esc) {\n _this.onClose();\n }\n };\n _this.onMatchCaseChecked = function (e) { return _this.setNextState({ matchCase: e.target.checked }); };\n _this.onMatchWordChecked = function (e) { return _this.setNextState({ matchWord: e.target.checked }); };\n _this.onMatchCyclicChecked = function (e) { return _this.setNextState({ matchCyclic: e.target.checked }); };\n _this.onUseRegExpChecked = function (e) { return _this.setNextState({ useRegExp: e.target.checked }); };\n _this.onSearchChange = function (e) { return _this.setNextState({ searchText: e.target.value }); };\n _this.onReplaceChange = function (e) { return _this.setNextState({ replaceText: e.target.value }); };\n _this.setNextState = function (next) {\n var nextState = __assign(__assign(__assign({}, _this.state), next), { matches: undefined, nextMatch: undefined });\n var view = _this.props.view;\n if (nextState.searchText) {\n var text = nextState.searchText, matchWord = nextState.matchWord, matchCase = nextState.matchCase, useRegExp = nextState.useRegExp, matchCyclic = nextState.matchCyclic;\n var searchOptions = { text: text, matchWord: matchWord, matchCase: matchCase, useRegExp: useRegExp };\n var selection_1 = view.state.selection;\n var matches = findAll(view.state.doc, searchOptions);\n var nextMatch = (!_this.state.searchText && matches[0]) ||\n matches.find(function (match) { return match.from >= selection_1.from; }) ||\n (matchCyclic && matches[0]) ||\n undefined;\n _this.setState(__assign(__assign({}, nextState), { matches: matches, nextMatch: nextMatch }));\n }\n else {\n _this.setState(nextState);\n }\n };\n _this.state = {\n selectedTab: 0,\n searchText: selectedLineTextOnly(props.view.state),\n replaceText: '',\n matchCase: false,\n matchWord: false,\n matchCyclic: false,\n useRegExp: false\n };\n return _this;\n }\n Object.defineProperty(FindAndReplaceDialog.prototype, \"settings\", {\n get: function () {\n return this.props.settings || settings;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n FindAndReplaceDialog.prototype.componentDidUpdate = function (_, prevState) {\n var view = this.props.view;\n var _a = this.state, _b = _a.matches, matches = _b === void 0 ? [] : _b, nextMatch = _a.nextMatch;\n if (prevState.nextMatch !== nextMatch) {\n var state = view.state;\n // highlight selection\n var tr = state.tr;\n var highlights_1 = [];\n matches.forEach(function (m) {\n highlights_1.push({\n from: m.from,\n to: m.to,\n attrs: {\n class: (nextMatch && m.eq(nextMatch)) ?\n 'k-text-selected' :\n 'k-text-highlighted'\n }\n });\n });\n tr.setMeta(textHighlightKey, highlights_1);\n tr.setSelection(nextMatch || TextSelection.create(state.doc, state.selection.from));\n view.dispatch(tr);\n }\n };\n /**\n * @hidden\n */\n FindAndReplaceDialog.prototype.render = function () {\n var localization = provideLocalizationService(this);\n var _a = this.settings.messages, findReplaceDialogTitle = _a.findReplaceDialogTitle, findReplaceTabFind = _a.findReplaceTabFind, findReplaceTabReplace = _a.findReplaceTabReplace, findReplaceFindWhat = _a.findReplaceFindWhat, findReplaceReplaceWith = _a.findReplaceReplaceWith, findReplaceReplace = _a.findReplaceReplace, findReplaceReplaceAll = _a.findReplaceReplaceAll, findReplaceMatchCase = _a.findReplaceMatchCase, findReplaceMatchWord = _a.findReplaceMatchWord, findReplaceMatchCyclic = _a.findReplaceMatchCyclic, findReplaceUseRegExp = _a.findReplaceUseRegExp, findReplacePrevMatch = _a.findReplacePrevMatch, findReplaceNextMatch = _a.findReplaceNextMatch, findReplaceMatches = _a.findReplaceMatches;\n var _b = this.state, matchCase = _b.matchCase, matchWord = _b.matchWord, matchCyclic = _b.matchCyclic, useRegExp = _b.useRegExp, searchText = _b.searchText, replaceText = _b.replaceText, nextMatch = _b.nextMatch;\n var checkboxes = (React.createElement(\"div\", { className: \"k-search-options\" },\n React.createElement(\"span\", null,\n React.createElement(\"input\", __assign({}, checkboxProps, { id: \"match-case\", checked: matchCase, onChange: this.onMatchCaseChecked })),\n React.createElement(\"label\", { htmlFor: \"match-case\", className: \"k-checkbox-label\" }, localization.toLanguageString(findReplaceMatchCase, messages[findReplaceMatchCase]))),\n React.createElement(\"span\", null,\n React.createElement(\"input\", __assign({}, checkboxProps, { id: \"match-whole\", checked: matchWord, onChange: this.onMatchWordChecked })),\n React.createElement(\"label\", { htmlFor: \"match-whole\", className: \"k-checkbox-label\" }, localization.toLanguageString(findReplaceMatchWord, messages[findReplaceMatchWord]))),\n React.createElement(\"span\", null,\n React.createElement(\"input\", __assign({}, checkboxProps, { id: \"match-cyclic\", checked: matchCyclic, onChange: this.onMatchCyclicChecked })),\n React.createElement(\"label\", { htmlFor: \"match-cyclic\", className: \"k-checkbox-label\" }, localization.toLanguageString(findReplaceMatchCyclic, messages[findReplaceMatchCyclic]))),\n React.createElement(\"span\", null,\n React.createElement(\"input\", __assign({}, checkboxProps, { id: \"regular-expression\", checked: useRegExp, onChange: this.onUseRegExpChecked })),\n React.createElement(\"label\", { htmlFor: \"regular-expression\", className: \"k-checkbox-label\" }, localization.toLanguageString(findReplaceUseRegExp, messages[findReplaceUseRegExp])))));\n var navigation = (React.createElement(\"div\", { className: \"k-matches-container\" },\n React.createElement(Button, { fillMode: 'flat', themeColor: 'primary', onClick: this.onFindPrev },\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-chevron-left\" }),\n localization.toLanguageString(findReplacePrevMatch, messages[findReplacePrevMatch])),\n React.createElement(\"span\", null, this.matchesMessage(localization.toLanguageString(findReplaceMatches, messages[findReplaceMatches]))),\n React.createElement(Button, { fillMode: 'flat', themeColor: 'primary', onClick: this.onFindNext },\n localization.toLanguageString(findReplaceNextMatch, messages[findReplaceNextMatch]),\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-chevron-right\" }))));\n var findWhat = (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"k-edit-label\" },\n React.createElement(\"label\", { htmlFor: \"findWhat\" }, localization.toLanguageString(findReplaceFindWhat, messages[findReplaceFindWhat]))),\n React.createElement(\"div\", { className: \"k-edit-field\" },\n React.createElement(\"input\", { id: \"findWhat\", type: \"text\", className: \"k-input\", value: searchText, onChange: this.onSearchChange, onFocus: this.onSearchChange, onKeyDown: this.onKeyDown, autoFocus: true }))));\n var replaceWith = (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"k-edit-label\" },\n React.createElement(\"label\", { htmlFor: \"replaceWith\" }, localization.toLanguageString(findReplaceReplaceWith, messages[findReplaceReplaceWith]))),\n React.createElement(\"div\", { className: \"k-edit-field\" },\n React.createElement(\"input\", { id: \"replaceWith\", className: \"k-input\", type: \"text\", value: replaceText, onChange: this.onReplaceChange }))));\n return (React.createElement(Window, { title: localization.toLanguageString(findReplaceDialogTitle, messages[findReplaceDialogTitle]), onClose: this.onClose, style: { width: 'auto', height: 'auto', userSelect: 'none' }, resizable: false, minimizeButton: function () { return null; }, maximizeButton: function () { return null; }, appendTo: document.body },\n React.createElement(TabStrip, { selected: this.state.selectedTab, className: \"k-editor-find-replace\", onSelect: this.onTabSelect, animation: false },\n React.createElement(TabStripTab, { title: localization.toLanguageString(findReplaceTabFind, messages[findReplaceTabFind]) },\n React.createElement(\"div\", { className: \"k-edit-form-container\" }, findWhat),\n checkboxes,\n navigation),\n React.createElement(TabStripTab, { title: localization.toLanguageString(findReplaceTabReplace, messages[findReplaceTabReplace]) },\n React.createElement(\"div\", { className: \"k-edit-form-container\" },\n findWhat,\n replaceWith),\n React.createElement(\"div\", { className: \"k-actions k-hstack k-justify-content-end\" },\n React.createElement(Button, { disabled: !Boolean(nextMatch), onClick: this.onReplace }, localization.toLanguageString(findReplaceReplace, messages[findReplaceReplace])),\n React.createElement(Button, { disabled: !Boolean(nextMatch), onClick: this.onReplaceAll }, localization.toLanguageString(findReplaceReplaceAll, messages[findReplaceReplaceAll]))),\n checkboxes,\n navigation))));\n };\n return FindAndReplaceDialog;\n}(React.Component));\nexport { FindAndReplaceDialog };\nregisterForLocalization(FindAndReplaceDialog);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { InsertLinkDialog as LinkDialog } from './insertLink';\nimport { InsertImageDialog as ImageDialog } from './insertImage';\nimport { ViewHtmlDialog as ViewHtmlDialogX } from './viewHtml';\nimport { FindAndReplaceDialog as FindAndReplaceDialogX } from './FindReplace';\n/**\n * Represents a wrapping namespace for the dialog components and props of the Editor.\n */\nexport var EditorDialogs;\n(function (EditorDialogs) {\n /**\n * The InsertLinkDialog component.\n */\n var InsertLinkDialog = /** @class */ (function (_super) {\n __extends(InsertLinkDialog, _super);\n function InsertLinkDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertLinkDialog;\n }(LinkDialog));\n EditorDialogs.InsertLinkDialog = InsertLinkDialog;\n /**\n * The InsertImageDialog component.\n */\n var InsertImageDialog = /** @class */ (function (_super) {\n __extends(InsertImageDialog, _super);\n function InsertImageDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertImageDialog;\n }(ImageDialog));\n EditorDialogs.InsertImageDialog = InsertImageDialog;\n /**\n * The ViewHtmlDialog component.\n */\n var ViewHtmlDialog = /** @class */ (function (_super) {\n __extends(ViewHtmlDialog, _super);\n function ViewHtmlDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return ViewHtmlDialog;\n }(ViewHtmlDialogX));\n EditorDialogs.ViewHtmlDialog = ViewHtmlDialog;\n /**\n * The FindAndReplaceDialog component.\n */\n var FindAndReplaceDialog = /** @class */ (function (_super) {\n __extends(FindAndReplaceDialog, _super);\n function FindAndReplaceDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FindAndReplaceDialog;\n }(FindAndReplaceDialogX));\n EditorDialogs.FindAndReplaceDialog = FindAndReplaceDialog;\n})(EditorDialogs || (EditorDialogs = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { canInsert } from '@progress/kendo-editor-common';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { onDownPreventDefault } from './utils';\nimport { EditorDialogs } from '../dialogs/main';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var createInsertImageTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(InsertImageTool, _super);\n function InsertImageTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n openedDialog: false\n };\n _this.toggleDialog = function () {\n _this.setState({\n openedDialog: !_this.state.openedDialog\n });\n };\n return _this;\n }\n InsertImageTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var nodeType = state ? state.schema.nodes[settings.node] : undefined;\n var localization = provideLocalizationService(this);\n var insertImage = settings.messages.insertImage;\n var rendering = [(React.createElement(Button, __assign({ onClick: this.toggleDialog, key: \"insertImage\", disabled: !nodeType || !state || !canInsert(state, nodeType) }, onDownPreventDefault, { title: localization.toLanguageString(insertImage, messages[insertImage]) }, settings.props, buttonProps))), (this.state.openedDialog && view && (React.createElement(EditorDialogs.InsertImageDialog, { key: \"insertImageDialog\", view: view, settings: settings, dir: buttonProps.dir, onClose: this.toggleDialog })) || null)];\n return render ? render.call(undefined, rendering, { view: view }) : rendering;\n };\n return InsertImageTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { getMark } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { EditorDialogs } from '../dialogs/main';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var LinkToolNS;\n(function (LinkToolNS) {\n /**\n * @hidden\n */\n LinkToolNS.createLinkTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(LinkTool, _super);\n function LinkTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n openedDialog: false\n };\n _this.toggleDialog = function () {\n _this.setState({\n openedDialog: !_this.state.openedDialog\n });\n };\n return _this;\n }\n LinkTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, props = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var collapsed = state ? state.selection.empty : true;\n var linkMark = state && getMark(state, state.schema.marks[settings.mark]);\n var localization = provideLocalizationService(this);\n var insertHyperlink = settings.messages.insertHyperlink;\n var rendering = [(React.createElement(Button, __assign({ onClick: this.toggleDialog, key: \"link\", disabled: collapsed && !linkMark }, onDownPreventDefault, { title: localization.toLanguageString(insertHyperlink, messages[insertHyperlink]) }, settings.props, props))), (this.state.openedDialog && view && (React.createElement(EditorDialogs.InsertLinkDialog, { key: \"insertLinkDialog\", settings: settings, dir: props.dir, view: view, onClose: this.toggleDialog })) || null)];\n return render ? render.call(undefined, rendering, { view: view }) : rendering;\n };\n return LinkTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(LinkToolNS || (LinkToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { hasNode, toggleList } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var ListToolNS;\n(function (ListToolNS) {\n /**\n * @hidden\n */\n ListToolNS.createListTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(ListTool, _super);\n function ListTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var isActive = false;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var types = settings.types;\n var listType = settings.listType;\n if (view) {\n var state = view.state;\n var nodes = state.schema.nodes;\n var hasOl = hasNode(state, nodes[types.orderedList]), hasUl = hasNode(state, nodes[types.bulletList]);\n if (listType === types.orderedList) {\n isActive = hasOl && !hasUl;\n }\n else {\n isActive = !hasOl && hasUl;\n }\n }\n var button = (React.createElement(Button, __assign({ onClick: function () { return view && toggleList(view.state, view.dispatch, view, __assign({ listType: listType }, types), settings.commandName); }, togglable: true, selected: isActive, title: localization.toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return ListTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(ListToolNS || (ListToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { indentBlocks, isIndented, canOutdentAsListItem, liftListItem } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var OutdentToolNS;\n(function (OutdentToolNS) {\n /**\n * @hidden\n */\n OutdentToolNS.createOutdentTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(OutdentTool, _super);\n function OutdentTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OutdentTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var dir = buttonProps.dir;\n var indented = !!state && isIndented(state, settings.actions, dir);\n var listItem = state && state.schema.nodes[settings.listsTypes.listItem];\n var canListOutdent = !!state && canOutdentAsListItem(state, { nodes: settings.actions, listsTypes: settings.listsTypes });\n var canOutdent = indented || canListOutdent;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var button = (React.createElement(Button, __assign({ onClick: function () {\n if (view && canListOutdent && listItem) {\n liftListItem(listItem)(view.state, view.dispatch);\n }\n else if (view && indented) {\n indentBlocks(settings.actions, settings.commandName, dir)(view.state, view.dispatch);\n }\n }, title: localization.toLanguageString(titleKey, messages[titleKey]), disabled: !canOutdent }, onDownPreventDefault, settings.props, buttonProps)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return OutdentTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(OutdentToolNS || (OutdentToolNS = {}));\n","import { addRowBefore, addRowAfter, addColumnBefore, addColumnAfter, deleteRow, deleteColumn, deleteTable, mergeCells, splitCell, selectionCell } from '@progress/kendo-editor-common';\nimport { createProseMirrorTool } from './proseMirrorTool';\n/**\n * @hidden\n */\nvar deleteColumnCmd = function (state, dispatch) {\n var result = deleteColumn(state, dispatch);\n if (result && !dispatch) {\n var pos = selectionCell(state);\n var row = pos && pos.node(pos.depth);\n if (row && row.content.childCount === 1) {\n return false;\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nvar deleteRowCmd = function (state, dispatch) {\n var result = deleteRow(state, dispatch);\n if (result && !dispatch) {\n var pos = selectionCell(state);\n var rowParent = pos && pos.node(pos.depth - 1);\n if (rowParent && rowParent.content.childCount === 1) {\n return false;\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nexport var TableEditNS;\n(function (TableEditNS) {\n /**\n * @hidden\n */\n TableEditNS.createAddRowBeforeTool = function (settings) {\n return createProseMirrorTool(settings, addRowBefore);\n };\n /**\n * @hidden\n */\n TableEditNS.createAddRowAfterTool = function (settings) {\n return createProseMirrorTool(settings, addRowAfter);\n };\n /**\n * @hidden\n */\n TableEditNS.createAddColumnBeforeTool = function (settings) {\n return createProseMirrorTool(settings, addColumnBefore);\n };\n /**\n * @hidden\n */\n TableEditNS.createAddColumnAfterTool = function (settings) {\n return createProseMirrorTool(settings, addColumnAfter);\n };\n /**\n * @hidden\n */\n TableEditNS.createDeleteRowTool = function (settings) {\n return createProseMirrorTool(settings, deleteRowCmd);\n };\n /**\n * @hidden\n */\n TableEditNS.createDeleteColumnTool = function (settings) {\n return createProseMirrorTool(settings, deleteColumnCmd);\n };\n /**\n * @hidden\n */\n TableEditNS.createDeleteTableTool = function (settings) {\n return createProseMirrorTool(settings, deleteTable);\n };\n /**\n * @hidden\n */\n TableEditNS.createMergeCellsTool = function (settings) {\n return createProseMirrorTool(settings, mergeCells);\n };\n /**\n * @hidden\n */\n TableEditNS.createSplitCellTool = function (settings) {\n return createProseMirrorTool(settings, splitCell);\n };\n})(TableEditNS || (TableEditNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { removeLink, hasMark } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var UnlinkToolNS;\n(function (UnlinkToolNS) {\n /**\n * @hidden\n */\n UnlinkToolNS.createUnlinkTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(UnlinkTool, _super);\n function UnlinkTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UnlinkTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var options = { mark: settings.mark };\n var hasLink = view ?\n hasMark(view.state, options)\n : false;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var button = (React.createElement(Button, __assign({ onClick: function () { return view &&\n removeLink(options, view.state.tr.setMeta('commandName', settings.commandName))(view.state, view.dispatch); }, disabled: !hasLink }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, buttonProps)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return UnlinkTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(UnlinkToolNS || (UnlinkToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { onDownPreventDefault } from './utils';\nimport { EditorDialogs } from '../dialogs/main';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var ViewHtmlToolNS;\n(function (ViewHtmlToolNS) {\n /**\n * @hidden\n */\n ViewHtmlToolNS.createViewHtmlTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(ViewHtmlTool, _super);\n function ViewHtmlTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n openedDialog: false\n };\n _this.toggleDialog = function () {\n _this.setState({\n openedDialog: !_this.state.openedDialog\n });\n };\n return _this;\n }\n ViewHtmlTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.viewHtml;\n var rendering = [(React.createElement(Button, __assign({ onClick: this.toggleDialog, key: \"viewHtml\" }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, buttonProps))), ((this.state.openedDialog && view && (React.createElement(EditorDialogs.ViewHtmlDialog, { key: \"viewHtmlDialog\", view: view, settings: settings, dir: buttonProps.dir, onClose: this.toggleDialog })) || null))];\n return render ? render.call(undefined, rendering, { view: view }) : rendering;\n };\n return ViewHtmlTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(ViewHtmlToolNS || (ViewHtmlToolNS = {}));\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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from './../messages';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nvar print = EditorToolsSettings.print;\n/**\n * @hidden\n */\nexport var Print = function (props) {\n var view = props.view, render = props.render, _a = props.settings, settings = _a === void 0 ? print : _a, buttonProps = __rest(props, [\"view\", \"render\", \"settings\"]);\n var dom = view && view.dom;\n var doc = dom && dom.ownerDocument;\n var editorWindow = doc && doc.defaultView;\n var titleKey = settings.messages.title;\n var onClick = React.useCallback(function () {\n if (editorWindow) {\n editorWindow.print();\n }\n }, [editorWindow]);\n var button = (React.createElement(Button, __assign({ onClick: onClick, disabled: !editorWindow || editorWindow === window, title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps)));\n return (render ? render.call(undefined, button, { view: view }) : button);\n};\n","var UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","var DEG_TO_RAD = Math.PI / 180;\nvar MAX_NUM = Number.MAX_VALUE;\nvar MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n}","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nvar Matrix = (function (Class) {\n function Matrix(a, b, c, d, e, f) {\n if ( a === void 0 ) a = 0;\n if ( b === void 0 ) b = 0;\n if ( c === void 0 ) c = 0;\n if ( d === void 0 ) d = 0;\n if ( e === void 0 ) e = 0;\n if ( f === void 0 ) f = 0;\n\n Class.call(this);\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n if ( Class ) Matrix.__proto__ = Class;\n Matrix.prototype = Object.create( Class && Class.prototype );\n Matrix.prototype.constructor = Matrix;\n\n Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n };\n\n Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n };\n\n Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function equals (other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n };\n\n Matrix.prototype.round = function round$1 (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n };\n\n Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if ( separator === void 0 ) separator = \",\";\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n };\n\n Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n}(Class));\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import { Class } from '../common';\n\nvar HasObservers = (function (Class) {\n function HasObservers () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) HasObservers.__proto__ = Class;\n HasObservers.prototype = Object.create( Class && Class.prototype );\n HasObservers.prototype.constructor = HasObservers;\n\n HasObservers.prototype.observers = function observers () {\n this._observers = this._observers || [];\n return this._observers;\n };\n\n HasObservers.prototype.addObserver = function addObserver (element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n\n HasObservers.prototype.removeObserver = function removeObserver (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n\n HasObservers.prototype.trigger = function trigger (methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n\n HasObservers.prototype.optionsChange = function optionsChange (e) {\n if ( e === void 0 ) e = {};\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n };\n\n HasObservers.prototype.geometryChange = function geometryChange () {\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n HasObservers.prototype.suspend = function suspend () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n\n HasObservers.prototype.resume = function resume () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n\n HasObservers.prototype._observerField = function _observerField (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n\n return HasObservers;\n}(Class));\n\nexport default HasObservers;\n\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nvar withAccessors = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nvar Point = (function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n if ( superclass ) Point.__proto__ = superclass;\n Point.prototype = Object.create( superclass && superclass.prototype );\n Point.prototype.constructor = Point;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if ( separator === void 0 ) separator = \" \";\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n };\n\n Point.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n };\n\n Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n };\n\n Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n };\n\n Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n}(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nvar Size = (function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n if ( superclass ) Size.__proto__ = superclass;\n Size.prototype = Object.create( superclass && superclass.prototype );\n Size.prototype.constructor = Size;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n };\n\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n}(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\nexport default Size;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nvar Rect = (function (HasObservers) {\n function Rect(origin, size, cornerRadius) {\n if ( origin === void 0 ) origin = new Point();\n if ( size === void 0 ) size = new Size();\n if ( cornerRadius === void 0 ) cornerRadius = 0;\n\n HasObservers.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n if ( HasObservers ) Rect.__proto__ = HasObservers;\n Rect.prototype = Object.create( HasObservers && HasObservers.prototype );\n Rect.prototype.constructor = Rect;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getCornerRadius = function getCornerRadius () {\n return this.cornerRadius;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if ( y === void 0 ) y = x;\n\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n };\n\n Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union (a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n };\n\n Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n };\n\n return Rect;\n}(HasObservers));\n\nexport default Rect;\n","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","var PRECISION = 10;\n\nexport { PRECISION };","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance) {\n if ( tolerance === void 0 ) tolerance = PRECISION;\n\n return round(Math.abs(a - b), tolerance) === 0;\n}","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nvar Transformation = (function (HasObservers) {\n function Transformation(matrix) {\n if ( matrix === void 0 ) matrix = Matrix.unit();\n\n HasObservers.call(this);\n\n this._matrix = matrix;\n }\n\n if ( HasObservers ) Transformation.__proto__ = HasObservers;\n Transformation.prototype = Object.create( HasObservers && HasObservers.prototype );\n Transformation.prototype.constructor = Transformation;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n if ( origin === void 0 ) origin = null;\n\n var originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n}(HasObservers));\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nvar MAX_INTERVAL = 45;\nvar pow = Math.pow;\nvar accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nvar Arc = (function (superclass) {\n function Arc(center, options) {\n if ( center === void 0 ) center = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this);\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n if ( superclass ) Arc.__proto__ = superclass;\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n\n Arc.prototype.clone = function clone () {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n\n Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n };\n\n Arc.prototype.curvePoints = function curvePoints () {\n var this$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n };\n\n Arc.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n\n Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n\n return Arc;\n}(withAccessors(HasObservers, accessors)));\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if ( rotation === void 0 ) rotation = 0;\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nvar PI_DIV_2 = Math.PI / 2;\n\nvar Circle = (function (superclass) {\n function Circle(center, radius) {\n if ( center === void 0 ) center = new Point();\n if ( radius === void 0 ) radius = 0;\n\n superclass.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n}(withAccessors(HasObservers, [ \"radius\" ])));\n\nexport default Circle;\n","import { support } from '../common';\n\n/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// XXX: remove this junk (assume `true`) when we no longer have to support IE < 10\n// IE 9 (at least compatibility) reports having Uint8Array but the request response does not contain ArrayBuffer which results in missing table head error\nvar HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && support.browser && (!support.browser.msie || support.browser.version > 9);\n\nvar BASE64 = (function(){\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return {\n decode: function(str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\"), i = 0, n = input.length, output = [];\n\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n\n var chr1 = (enc1 << 2) | (enc2 >>> 4);\n var chr2 = ((enc2 & 15) << 4) | (enc3 >>> 2);\n var chr3 = ((enc3 & 3) << 6) | enc4;\n\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n\n return output;\n },\n encode: function(bytes) {\n var i = 0, n = bytes.length;\n var output = \"\";\n\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n\n var enc1 = chr1 >>> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >>> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >>> 6);\n var enc4 = chr3 & 63;\n\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n}());\n\nfunction BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n\n var ensure = HAS_TYPED_ARRAYS ? function(len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function() {};\n\n var get = HAS_TYPED_ARRAYS ? function() {\n return new Uint8Array(data.buffer, 0, length);\n } : function() {\n return data;\n };\n\n var write = HAS_TYPED_ARRAYS ? function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n\n var slice = HAS_TYPED_ARRAYS ? function(start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n // IE10\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function(start, length) {\n return data.slice(start, start + length);\n };\n\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 0xFF;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return (readByte() << 8) | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 0x8000 ? w - 0x10000 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 0x10000 : w);\n }\n function readLong() {\n return (readShort() * 0x10000) + readShort();\n }\n function writeLong(w) {\n writeShort((w >>> 16) & 0xFFFF);\n writeShort(w & 0xFFFF);\n }\n function readLong_() {\n var w = readLong();\n return w >= 0x80000000 ? w - 0x100000000 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 0x100000000 : w);\n }\n function readFixed() {\n return readLong() / 0x10000;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 0x10000));\n }\n function readFixed_() {\n return readLong_() / 0x10000;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 0x10000));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n\n var stream = {\n eof : eof,\n readByte : readByte,\n writeByte : writeByte,\n readShort : readShort,\n writeShort : writeShort,\n readLong : readLong,\n writeLong : writeLong,\n readFixed : readFixed,\n writeFixed : writeFixed,\n\n // signed numbers.\n readShort_ : readShort_,\n writeShort_ : writeShort_,\n readLong_ : readLong_,\n writeLong_ : writeLong_,\n readFixed_ : readFixed_,\n writeFixed_ : writeFixed_,\n\n read : read,\n write : write,\n readString : readString,\n writeString : writeString,\n\n times : times,\n get : get,\n slice : slice,\n\n offset: function(pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n\n skip: function(nbytes) {\n offset += nbytes;\n },\n\n toString: function() {\n throw new Error(\"FIX CALLER. BinaryStream is no longer convertible to string!\");\n },\n\n length: function() { return length; },\n\n saveExcursion: function(f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n\n writeBase64: function(base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function() {\n return BASE64.encode(get());\n }\n };\n\n return stream;\n}\n\nfunction ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\n\nfunction ucs2encode(array) {\n return array.map(function(value){\n var output = \"\";\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n output += String.fromCharCode(value);\n return output;\n }).join(\"\");\n}\n\nfunction atobUint8Array(base64) {\n var data = window.atob(base64);\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n\n return result;\n}\n\nfunction createUint8Array(data) {\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n\n return result;\n}\n\nfunction base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n\n return createUint8Array(BASE64.decode(base64));\n}\n\nexport {\n HAS_TYPED_ARRAYS,\n BASE64,\n BinaryStream,\n ucs2decode,\n ucs2encode,\n base64ToUint8Array\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n/*****************************************************************************\\\n *\n * The code in this file, although written from scratch, is influenced by the\n * TrueType parser/encoder in PDFKit -- http://pdfkit.org/ (a CoffeeScript\n * library for producing PDF files).\n *\n * PDFKit is (c) Devon Govett 2014 and released under the MIT License.\n *\n\\*****************************************************************************/\n\nimport { BinaryStream, ucs2decode } from \"./utils\";\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction sortedKeys(obj) {\n return Object.keys(obj).sort(function(a, b){ return a - b; }).map(parseFloat);\n}\n\n///\nvar Directory = function Directory(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag : data.readString(4),\n checksum : data.readLong(),\n offset : data.readLong(),\n length : data.readLong()\n };\n tables[entry.tag] = entry;\n }\n};\n\nDirectory.prototype.readTable = function readTable (name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error(\"Table \" + name + \" not found in directory\");\n }\n return (this[name] = def.table = new Ctor(this, def));\n};\n\nDirectory.prototype.render = function render (tables) {\n var this$1 = this;\n\n var tableCount = Object.keys(tables).length;\n\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n\n for (var tag in tables) {\n if (hasOwnProperty(tables, tag)) {\n var table = tables[tag];\n\n out.writeString(tag);\n out.writeLong(this$1.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n\n tableData.write(table);\n if (tag == \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 0xB1B0AFBA - sum;\n\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n};\n\nDirectory.prototype.checksum = function checksum (data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 0xFFFFFFFF;\n};\n\nvar Table = function Table(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n};\n\nTable.prototype.raw = function raw () {\n return this.rawData.slice(this.offset, this.length);\n};\n\nTable.prototype.parse = function parse () {};\n\nvar HeadTable = (function (Table) {\n function HeadTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) HeadTable.__proto__ = Table;\n HeadTable.prototype = Object.create( Table && Table.prototype );\n HeadTable.prototype.constructor = HeadTable;\n\n HeadTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n };\n\n HeadTable.prototype.render = function render (indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0); // checksum adjustment; shall be computed later\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat); // this will depend on the `loca` table\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n };\n\n return HeadTable;\n}(Table));\n\nvar LocaTable = (function (Table) {\n function LocaTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) LocaTable.__proto__ = Table;\n LocaTable.prototype = Object.create( Table && Table.prototype );\n LocaTable.prototype.constructor = LocaTable;\n\n LocaTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function(){\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n };\n\n LocaTable.prototype.offsetOf = function offsetOf (id) {\n return this.offsets[id];\n };\n\n LocaTable.prototype.lengthOf = function lengthOf (id) {\n return this.offsets[id + 1] - this.offsets[id];\n };\n\n LocaTable.prototype.render = function render (offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 0xFFFF;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n };\n\n return LocaTable;\n}(Table));\n\nvar HheaTable = (function (Table) {\n function HheaTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) HheaTable.__proto__ = Table;\n HheaTable.prototype = Object.create( Table && Table.prototype );\n HheaTable.prototype.constructor = HheaTable;\n\n HheaTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n\n data.skip(4 * 2); // reserved\n\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n };\n\n HheaTable.prototype.render = function render (ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n\n out.write([ 0, 0, 0, 0, 0, 0, 0, 0 ]); // reserved bytes\n\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n };\n\n return HheaTable;\n}(Table));\n\nvar MaxpTable = (function (Table) {\n function MaxpTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) MaxpTable.__proto__ = Table;\n MaxpTable.prototype = Object.create( Table && Table.prototype );\n MaxpTable.prototype.constructor = MaxpTable;\n\n MaxpTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n };\n\n MaxpTable.prototype.render = function render (glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n };\n\n return MaxpTable;\n}(Table));\n\nvar HmtxTable = (function (Table) {\n function HmtxTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) HmtxTable.__proto__ = Table;\n HmtxTable.prototype = Object.create( Table && Table.prototype );\n HmtxTable.prototype.constructor = HmtxTable;\n\n HmtxTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function(){\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n };\n\n HmtxTable.prototype.forGlyph = function forGlyph (id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n };\n\n HmtxTable.prototype.render = function render (glyphIds) {\n var this$1 = this;\n\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this$1.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n };\n\n return HmtxTable;\n}(Table));\n\nvar GlyfTable = (function(){\n var SimpleGlyph = function SimpleGlyph(raw) {\n this.raw = raw;\n };\n\n var prototypeAccessors = { compound: { configurable: true } };\n\n prototypeAccessors.compound.get = function () {\n return false;\n };\n\n SimpleGlyph.prototype.render = function render () {\n return this.raw.get();\n };\n\n Object.defineProperties( SimpleGlyph.prototype, prototypeAccessors );\n\n var ARG_1_AND_2_ARE_WORDS = 0x0001;\n var WE_HAVE_A_SCALE = 0x0008;\n var MORE_COMPONENTS = 0x0020;\n var WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n var WE_HAVE_A_TWO_BY_TWO = 0x0080;\n //var WE_HAVE_INSTRUCTIONS = 0x0100;\n\n var CompoundGlyph = function CompoundGlyph(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) { // eslint-disable-line no-constant-condition\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n };\n\n var prototypeAccessors$1 = { compound: { configurable: true } };\n\n prototypeAccessors$1.compound.get = function () {\n return true;\n };\n\n CompoundGlyph.prototype.render = function render (old2new) {\n var this$1 = this;\n\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this$1.glyphIds[i];\n out.offset(this$1.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n };\n\n Object.defineProperties( CompoundGlyph.prototype, prototypeAccessors$1 );\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse () {\n this.cache = {};\n };\n\n anonymous.prototype.glyphFor = function glyphFor (id) {\n var cache = this.cache;\n if (hasOwnProperty(cache, id)) {\n return cache[id];\n }\n\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n\n if (length === 0) {\n return (cache[id] = null);\n }\n\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n\n var glyph = cache[id] = numberOfContours < 0 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n\n return glyph;\n };\n\n anonymous.prototype.render = function render (glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n };\n\n return anonymous;\n }(Table));\n}());\n\nvar NameTable = (function(){\n var NameEntry = function NameEntry(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n };\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse (data) {\n data.offset(this.offset);\n data.readShort(); // format\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function(){\n return {\n platformID : data.readShort(),\n platformSpecificID : data.readShort(),\n languageID : data.readShort(),\n nameID : data.readShort(),\n length : data.readShort(),\n offset : data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, \"\");\n };\n\n anonymous.prototype.render = function render (psName) {\n var this$1 = this;\n\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n\n out.writeShort(0); // format\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount); // stringOffset\n\n for (i in strings) {\n if (hasOwnProperty(strings, i)) {\n var list = i == 6 ? [\n new NameEntry(psName, this$1.postscriptEntry)\n ] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n\n strTable.writeString(str.text);\n }\n }\n }\n\n out.write(strTable.get());\n\n return out.get();\n };\n\n return anonymous;\n }(Table));\n})();\n\nvar PostTable = (function(){\n var POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat\".split(/\\s+/g);\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse (data) {\n var this$1 = this;\n\n data.offset(this.offset);\n\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n\n var numberOfGlyphs;\n\n switch (this.format) {\n case 0x00010000:\n case 0x00030000:\n break;\n\n case 0x00020000:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this$1.names.push(data.readString(data.readByte()));\n }\n break;\n\n case 0x00025000:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n\n case 0x00040000:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n };\n\n anonymous.prototype.glyphFor = function glyphFor (code) {\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || \".notdef\";\n\n case 0x00020000:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || \".notdef\";\n\n case 0x00025000:\n\n case 0x00030000:\n return \".notdef\";\n\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n };\n\n anonymous.prototype.render = function render (mapping) {\n var this$1 = this;\n\n if (this.format == 0x00030000) {\n return this.raw();\n }\n\n // keep original header, but set format to 2.0\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(0x00020000);\n out.offset(32);\n\n var indexes = [];\n var strings = [];\n\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this$1.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n\n out.writeShort(mapping.length);\n\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n\n return out.get();\n };\n\n return anonymous;\n }(Table));\n})();\n\nvar CmapTable = (function(){\n var CmapEntry = function CmapEntry(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n\n data.saveExcursion(function(){\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n\n data.skip(6); // searchRange, entrySelector, rangeShift\n var endCode = data.times(segCount, data.readShort);\n data.skip(2); // reserved pad\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n ///\n // When non-zero, idRangeOffset contains for each segment the byte offset of the Glyph ID\n // into the glyphIds table, from the *current* `i` cell of idRangeOffset. In other words,\n // this offset spans from the first into the second array. This works, because the arrays\n // are consecutive in the TTF file:\n //\n // [ ...idRangeOffset... ][ ...glyphIds... ]\n // ...... 48 ...... .... ID ....\n // ^----- 48 bytes -----^\n //\n // (but I can't stop wondering why is it not just a plain index, possibly incremented by 1\n // so that we can have that special `zero` value.)\n //\n // The elements of idRangeOffset are even numbers, because both arrays contain 16-bit words,\n // yet the offset is in bytes. That is why we divide it by 2. Then we subtract the\n // remaining segments (segCount-i), and add the code-start offset, to which we need to add\n // the corresponding delta to get the actual glyph ID.\n ///\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 0xFFFF;\n }\n }\n break;\n\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n\n case 12:\n data.readShort(); // reserved\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n\n default:\n if (window.console) {\n window.console.error(\"Unhandled CMAP format: \" + self.format);\n }\n }\n });\n };\n\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xFFFF);\n startCodes.push(0xFFFF);\n\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 0xFFFF) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n\n var out = BinaryStream();\n\n out.writeShort(3); // platformID\n out.writeShort(1); // platformSpecificID\n out.writeLong(12); // offset\n out.writeShort(4); // format\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2); // length\n out.writeShort(0); // language\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n endCodes.forEach(out.writeShort);\n out.writeShort(0); // reserved pad\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n\n return out.get();\n }\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse (data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function(){\n return new CmapEntry(data, offset, self.codeMap);\n });\n };\n\n anonymous.render = function render (ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0); // version\n out.writeShort(1); // tableCount\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n };\n\n return anonymous;\n }(Table));\n\n})();\n\nvar OS2Table = (function (Table) {\n function OS2Table () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) OS2Table.__proto__ = Table;\n OS2Table.prototype = Object.create( Table && Table.prototype );\n OS2Table.prototype.constructor = OS2Table;\n\n OS2Table.prototype.parse = function parse (data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n };\n\n OS2Table.prototype.render = function render () {\n return this.raw();\n };\n\n return OS2Table;\n}(Table));\n\nvar subsetTag = 100000;\n\nfunction nextSubsetTag() {\n var ret = \"\", n = String(subsetTag);\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n}\n\nvar Subfont = function Subfont(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + \"+\" + this.font.psName;\n};\n\nSubfont.prototype.use = function use (ch) {\n var self = this;\n if (typeof ch == \"string\") {\n return ucs2decode(ch).reduce(function(ret, code){\n return ret + String.fromCharCode(self.use(code));\n }, \"\");\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n\n // generate new GID (glyph ID) and maintain newGID ->\n // oldGID and back mappings\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n};\n\nSubfont.prototype.encodeText = function encodeText (text) {\n return this.use(text);\n};\n\nSubfont.prototype.glyphIds = function glyphIds () {\n return sortedKeys(this.ogid2ngid);\n};\n\nSubfont.prototype.glyphsFor = function glyphsFor (glyphIds, result) {\n var this$1 = this;\n\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this$1.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this$1.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n};\n\nSubfont.prototype.render = function render () {\n var this$1 = this;\n\n var glyphs = this.glyphsFor(this.glyphIds());\n\n // add missing sub-glyphs\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this$1.ogid2ngid[old_gid] == null) {\n var new_gid = this$1.nextGid++;\n this$1.ogid2ngid[old_gid] = new_gid;\n this$1.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n\n // must obtain old_gid_ids in an order matching sorted\n // new_gid_ids\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function(id){\n return this.ngid2ogid[id];\n }, this);\n\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n\n this.lastChar = this.next - 1;\n\n var tables = {\n \"cmap\" : CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n \"glyf\" : glyf.table,\n \"loca\" : loca.table,\n \"hmtx\" : font.hmtx.render(old_gid_ids),\n \"hhea\" : font.hhea.render(old_gid_ids),\n \"maxp\" : font.maxp.render(old_gid_ids),\n \"post\" : font.post.render(old_gid_ids),\n \"name\" : font.name.render(this.psName),\n \"head\" : font.head.render(loca.format),\n \"OS/2\" : font.os2.render()\n };\n\n return this.font.directory.render(tables);\n};\n\nSubfont.prototype.cidToGidMap = function cidToGidMap () {\n var this$1 = this;\n\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this$1.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this$1.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n};\n\nvar TTFFont = function TTFFont(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == \"ttcf\") {\n var offset;\n var parse = function() {\n data.offset(offset);\n self.parse();\n };\n if (!name) {\n throw new Error(\"Must specify a name for TTC files\");\n }\n data.readLong(); // version\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n if (self.psName == name) {\n return;\n }\n }\n throw new Error(\"Font \" + name + \" not found in collection\");\n } else {\n data.offset(0);\n self.parse();\n }\n};\n\nTTFFont.prototype.parse = function parse () {\n var dir = this.directory = new Directory(this.contents);\n\n this.head = dir.readTable(\"head\", HeadTable);\n this.loca = dir.readTable(\"loca\", LocaTable);\n this.hhea = dir.readTable(\"hhea\", HheaTable);\n this.maxp = dir.readTable(\"maxp\", MaxpTable);\n this.hmtx = dir.readTable(\"hmtx\", HmtxTable);\n this.glyf = dir.readTable(\"glyf\", GlyfTable);\n this.name = dir.readTable(\"name\", NameTable);\n this.post = dir.readTable(\"post\", PostTable);\n this.cmap = dir.readTable(\"cmap\", CmapTable);\n this.os2 = dir.readTable(\"OS/2\", OS2Table);\n\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n};\n\nTTFFont.prototype.widthOfGlyph = function widthOfGlyph (glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n};\n\nTTFFont.prototype.makeSubset = function makeSubset () {\n return new Subfont(this);\n};\n\nexport { TTFFont };\n","/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\nvar Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n/* Return codes for the compression/decompression functions. Negative values\n* are errors, positive values are used for special but normal events.\n*/\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\nvar Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//export var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//export var Z_VERSION_ERROR = -6;\n\n/* compression levels */\nvar Z_NO_COMPRESSION = 0;\nvar Z_BEST_SPEED = 1;\nvar Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//export var Z_ASCII = 1; // = Z_TEXT (deprecated)\nvar Z_UNKNOWN = 2;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n//export var Z_NULL = null // Use -1 or null inline; depending on var type\n\n/* eslint-disable */\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n}\n\n\n// reduce buffer size, avoiding mem copy\nfunction shrinkBuf(buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n}\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n },\n Buf8: function(size) {\n return new Uint8Array(size);\n },\n Buf16: function(size) {\n return new Uint16Array(size);\n },\n Buf32: function(size) {\n return new Int32Array(size);\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n },\n Buf8: function(size) {\n return new Array(size);\n },\n Buf16: function(size) {\n return new Array(size);\n },\n Buf32: function(size) {\n return new Array(size);\n }\n};\n\nvar typedOK = function () {\n var supported =\n (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n typedOK = function () { return supported; };\n return supported;\n};\n\nvar arraySet = function (dest, src, src_offs, len, dest_offs) {\n arraySet = typedOK() ?\n fnTyped.arraySet : fnUntyped.arraySet;\n\n return arraySet(dest, src, src_offs, len, dest_offs);\n};\n\nvar flattenChunks = function (chunks) {\n flattenChunks = typedOK() ?\n fnTyped.flattenChunks : fnUntyped.flattenChunks;\n\n return flattenChunks(chunks);\n};\n\nvar Buf8 = function (size) {\n Buf8 = typedOK() ? fnTyped.Buf8 : fnUntyped.Buf8;\n return Buf8(size);\n};\n\nvar Buf16 = function (size) {\n Buf16 = typedOK() ? fnTyped.Buf16 : fnUntyped.Buf16;\n return Buf16(size);\n};\n\nvar Buf32 = function (size) {\n Buf32 = typedOK() ? fnTyped.Buf32 : fnUntyped.Buf32;\n return Buf32(size);\n};\n\n/* eslint-disable */\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\nvar strApplyOK = function() {\n var result = true;\n try {\n String.fromCharCode.apply(null, [ 0 ]);\n } catch (_) {\n result = false;\n }\n\n strApplyOK = function () { return result; };\n return result;\n};\n\nvar strApplyUintOK = function() {\n var result = true;\n try {\n String.fromCharCode.apply(null, new Uint8Array(1));\n } catch (_) {\n result = false;\n }\n\n strApplyUintOK = function () { return result; };\n return result;\n};\n\nvar utf8len = function(c) {\n // Table with utf8 lengths (calculated by first byte of sequence)\n // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n // because max possible codepoint is 0x10ffff\n var table = Buf8(256);\n for (var q = 0; q < 256; q++) {\n table[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n table[254] = table[254] = 1; // Invalid sequence start\n\n utf8len = function (arg) { return table[arg]; };\n return table[c];\n};\n\n// convert string to array (typed, when possible)\nfunction string2buf(str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n}\n\n// Helper (used in 2 places)\nfunction _buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && strApplyUintOK()) || (!buf.subarray && strApplyOK())) {\n return String.fromCharCode.apply(null, shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nfunction buf2binstring(buf) {\n return _buf2binstring(buf, buf.length);\n}\n\n\n// Convert binary string (typed, when possible)\nfunction binstring2buf(str) {\n var buf = new Uint8Array(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n}\n\n\n// convert array to string\nfunction buf2string(buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = utf8len(c);\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return _buf2binstring(utf16buf, out);\n}\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nfunction utf8border(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n}\n\n/* eslint-disable */\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n/* eslint-disable */\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\nvar crcTable = function() {\n var table = makeTable();\n crcTable = function () { return table; };\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable(),\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nfunction inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n}\n\n/* eslint-disable */\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nfunction inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n}\n\n/* eslint-disable */\n\nvar CODES$1 = 0;\nvar LENS$1 = 1;\nvar DISTS$1 = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH$1 = 4;\nvar Z_BLOCK$1 = 5;\nvar Z_TREES$1 = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK$1 = 0;\nvar Z_STREAM_END$1 = 1;\nvar Z_NEED_DICT$1 = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR$1 = -2;\nvar Z_DATA_ERROR$1 = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR$1 = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED$1 = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD$1 = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS$1 = 852;\nvar ENOUGH_DISTS$1 = 592;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = Buf16(320); /* temporary storage for code lengths */\n this.work = Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = Buf32(ENOUGH_LENS$1);\n state.distcode = state.distdyn = Buf32(ENOUGH_DISTS$1);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = Buf32(512);\n distfix = Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS$1, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS$1, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE$1) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD$1;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD$1;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE$1;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD$1;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE$1;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE$1;\n /* falls through */\n case TYPE$1:\n if (flush === Z_BLOCK$1 || flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES$1) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD$1;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD$1;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE$1;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES$1, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD$1) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD$1;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS$1, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD$1;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS$1, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE$1) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE$1;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD$1:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD$1 &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE$1 ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR$1;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n}\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar msg = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\n/* eslint-disable */\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nvar Inflate = function Inflate(options) {\n if (!(this instanceof Inflate)) { return new Inflate(options); }\n\n this.options = assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended= false;// used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status= inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n};\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);// push last chunk\n * ```\n **/\nInflate.prototype.push = function push (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate(strm, Z_NO_FLUSH); /* no bad return value */\n\n if (status === Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === Z_BUF_ERROR && allowBufError === true) {\n status = Z_OK;\n allowBufError = false;\n }\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n if (status === Z_STREAM_END) {\n _mode = Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function onData (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function onEnd (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\nvar ungzip = inflate$1;\n\n/* eslint-disable */\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree;\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree;\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code;\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code;\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length;\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist;\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s) {\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block, or NULL if too old */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc) {\n // deflate_state *s;\n // unsigned dist; /* distance of matched string */\n // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\n/* eslint-disable */\n\nvar MAX_MEM_LEVEL = 9;\n\n\nvar LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES$1 = 30;\n/* number of distance codes */\nvar BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\nvar MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH$1 = 3;\nvar MAX_MATCH$1 = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH$1 + MIN_MATCH$1 + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero$1(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH$1;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH$1 - (strend - scan);\n scan = strend - MAX_MATCH$1;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH$1) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH$1) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH$1) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH$1) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH$1 - 1)) ? s.strstart : MIN_MATCH$1 - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH$1 - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH$1 - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH$1 - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH$1) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH$1;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH$1 - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH$1) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configurationTable = function() {\n var table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n \n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n ];\n\n configurationTable = function () { return table; };\n return table;\n};\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n\n var table = configurationTable();\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = table[s.level].max_lazy;\n s.good_match = table[s.level].good_length;\n s.nice_match = table[s.level].nice_length;\n s.max_chain_length = table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = Buf16(HEAP_SIZE$1 * 2);\n this.dyn_dtree = Buf16((2 * D_CODES$1 + 1) * 2);\n this.bl_tree = Buf16((2 * BL_CODES$1 + 1) * 2);\n zero$1(this.dyn_ltree);\n zero$1(this.dyn_dtree);\n zero$1(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = Buf16(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = Buf16(2 * L_CODES$1 + 1); /* heap used to build the Huffman trees */\n zero$1(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = Buf16(2 * L_CODES$1 + 1); //uch depth[2*L_CODES+1];\n zero$1(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n\n s.window = Buf8(s.w_size * 2);\n s.head = Buf16(s.hash_size);\n s.prev = Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configurationTable()[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero$1(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = Buf8(s.w_size);\n arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH$1) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH$1 - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH$1 - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n/* eslint-disable */\n\nvar toString$1 = Object.prototype.toString;\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nvar Deflate = function Deflate(options) {\n this.options = assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended= false;// used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n};\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);// push last chunk\n * ```\n **/\nDeflate.prototype.push = function push (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(buf2binstring(shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function onData (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function onEnd (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\nexport { Deflate, Inflate, Z_BEST_COMPRESSION, Z_BEST_SPEED, Z_BINARY, Z_BLOCK, Z_BUF_ERROR, Z_DATA_ERROR, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED, Z_ERRNO, Z_FILTERED, Z_FINISH, Z_FIXED, Z_FULL_FLUSH, Z_HUFFMAN_ONLY, Z_NEED_DICT, Z_NO_COMPRESSION, Z_NO_FLUSH, Z_OK, Z_PARTIAL_FLUSH, Z_RLE, Z_STREAM_END, Z_STREAM_ERROR, Z_SYNC_FLUSH, Z_TEXT, Z_TREES, Z_UNKNOWN, deflate$1 as deflate, deflateRaw, gzip, inflate$1 as inflate, inflateRaw, ungzip };\n","import { deflate as pakoDeflate } from '@progress/pako-esm';\n\nexport var deflate = pakoDeflate;\n\nexport function supportsDeflate() {\n return true;\n}\n\n","var fromCharCode = String.fromCharCode;\n\nexport var BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n var hi = code;\n var low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n var lead = ((c - 0x10000) >> 10) + 0xD800;\n var trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import { encodeUTF8 } from './encode-utf';\n\nvar KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { BinaryStream, ucs2encode, base64ToUint8Array, HAS_TYPED_ARRAYS } from \"./utils\";\nimport { support } from '../common';\nimport { TTFFont } from \"./ttf\";\nimport { deflate, supportsDeflate } from './deflate';\nimport { encodeUTF16BE, BOM } from \"../util/encode-utf\";\nimport { encodeBase64 } from \"../util\";\n\nvar browser = support.browser;\nvar NL = \"\\n\";\n\nvar RESOURCE_COUNTER = 0;\n\nvar PAPER_SIZE = {\n a0 : [ 2383.94 , 3370.39 ],\n a1 : [ 1683.78 , 2383.94 ],\n a2 : [ 1190.55 , 1683.78 ],\n a3 : [ 841.89 , 1190.55 ],\n a4 : [ 595.28 , 841.89 ],\n a5 : [ 419.53 , 595.28 ],\n a6 : [ 297.64 , 419.53 ],\n a7 : [ 209.76 , 297.64 ],\n a8 : [ 147.40 , 209.76 ],\n a9 : [ 104.88 , 147.40 ],\n a10 : [ 73.70 , 104.88 ],\n b0 : [ 2834.65 , 4008.19 ],\n b1 : [ 2004.09 , 2834.65 ],\n b2 : [ 1417.32 , 2004.09 ],\n b3 : [ 1000.63 , 1417.32 ],\n b4 : [ 708.66 , 1000.63 ],\n b5 : [ 498.90 , 708.66 ],\n b6 : [ 354.33 , 498.90 ],\n b7 : [ 249.45 , 354.33 ],\n b8 : [ 175.75 , 249.45 ],\n b9 : [ 124.72 , 175.75 ],\n b10 : [ 87.87 , 124.72 ],\n c0 : [ 2599.37 , 3676.54 ],\n c1 : [ 1836.85 , 2599.37 ],\n c2 : [ 1298.27 , 1836.85 ],\n c3 : [ 918.43 , 1298.27 ],\n c4 : [ 649.13 , 918.43 ],\n c5 : [ 459.21 , 649.13 ],\n c6 : [ 323.15 , 459.21 ],\n c7 : [ 229.61 , 323.15 ],\n c8 : [ 161.57 , 229.61 ],\n c9 : [ 113.39 , 161.57 ],\n c10 : [ 79.37 , 113.39 ],\n executive : [ 521.86 , 756.00 ],\n folio : [ 612.00 , 936.00 ],\n legal : [ 612.00 , 1008.00 ],\n letter : [ 612.00 , 792.00 ],\n tabloid : [ 792.00 , 1224.00 ]\n};\n\nfunction makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n var arguments$1 = arguments;\n\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments$1[i];\n if (x === undefined) {\n throw new Error(\"Cannot output undefined to PDF\");\n }\n else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n }\n else if (isArray(x)) {\n renderArray(x, out);\n }\n else if (isDate(x)) {\n renderDate(x, out);\n }\n else if (typeof x == \"number\") {\n if (isNaN(x)) {\n throw new Error(\"Cannot output NaN to PDF\");\n }\n // make sure it doesn't end up in exponent notation\n var num = x.toFixed(7);\n if (num.indexOf(\".\") >= 0) {\n num = num.replace(/\\.?0+$/, \"\");\n }\n if (num == \"-0\") {\n num = \"0\";\n }\n output.writeString(num);\n }\n else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n }\n else if (typeof x.get == \"function\") {\n output.write(x.get());\n }\n else if (typeof x == \"object\") {\n if (!x) {\n output.writeString(\"null\");\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function(data) {\n output.write(data);\n };\n out.withIndent = function(f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function() {\n out(NL, pad(\"\", indentLevel * 2, \" \"));\n out.apply(null, arguments);\n };\n out.offset = function() {\n return output.offset();\n };\n out.toString = function() {\n throw new Error(\"FIX CALLER\");\n };\n out.get = function() {\n return output.get();\n };\n out.stream = function() {\n return output;\n };\n return out;\n}\n\nfunction wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n\n value.beforeRender = function(){};\n\n value.render = function(out) {\n out(id, \" 0 R\");\n };\n\n value.renderFull = function(out) {\n value._offset = out.offset();\n out(id, \" 0 obj \");\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(\" endobj\");\n };\n}\n\nfunction getPaperOptions(getOption) {\n if (typeof getOption != \"function\") {\n var options = getOption;\n getOption = function(key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == \"string\") {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error(\"Unknown paper size\");\n }\n }\n\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n\n if (getOption(\"landscape\", false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n\n var margin = getOption(\"margin\");\n if (margin) {\n if (typeof margin == \"string\" || typeof margin == \"number\") {\n margin = unitsToPoints(margin, 0);\n margin = { left: margin, top: margin, right: margin, bottom: margin };\n } else {\n margin = {\n left : unitsToPoints(margin.left, 0),\n top : unitsToPoints(margin.top, 0),\n right : unitsToPoints(margin.right, 0),\n bottom : unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption(\"addMargin\")) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return { paperSize: paperSize, margin: margin };\n}\n\nvar FONT_CACHE = {\n \"Times-Roman\" : true,\n \"Times-Bold\" : true,\n \"Times-Italic\" : true,\n \"Times-BoldItalic\" : true,\n \"Helvetica\" : true,\n \"Helvetica-Bold\" : true,\n \"Helvetica-Oblique\" : true,\n \"Helvetica-BoldOblique\" : true,\n \"Courier\" : true,\n \"Courier-Bold\" : true,\n \"Courier-Oblique\" : true,\n \"Courier-BoldOblique\" : true,\n \"Symbol\" : true,\n \"ZapfDingbats\" : true\n};\n\nfunction loadBinary(url, cont) {\n // IE throws Accesss denied error for Data URIs\n var m;\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error(\"Cannot load URL: %s\", url);\n } else {\n window.console.log(\"Cannot load URL: %s\", url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = \"arraybuffer\";\n }\n req.onload = function() {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray()); // IE9 only\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n}\n\nfunction loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function(data){\n if (data == null) {\n throw new Error(\"Cannot load font from \" + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n}\n\nvar IMAGE_CACHE = {};\n\nfunction clearImageCache() {\n IMAGE_CACHE = {};\n}\n\nfunction loadImage(url, size, cont, options) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n if (HAS_TYPED_ARRAYS && !(/^data:/i.test(url))) {\n // IE10 fails to load images from another domain even when the server sends the\n // proper CORS headers. a XHR, however, will be able to load the data.\n // http://stackoverflow.com/a/19734516/154985\n //\n // On the other hand, it's worth doing it this way for all browsers which support\n // responseType = \"blob\" (HAS_TYPED_ARRAYS will be true), because we can inspect the\n // mime type and if it's a JPEG (very common case) we can save a lot of time in\n // _load below.\n var xhr = new XMLHttpRequest();\n xhr.onload = function() {\n blob = xhr.response;\n if (browser.mozilla && blob.type == \"image/svg+xml\") {\n // Firefox won't render SVGs that don't contain width and height attributes.\n var reader = new FileReader();\n reader.onload = function() {\n var doc = new window.DOMParser().parseFromString(this.result, \"image/svg+xml\");\n var svg = doc.documentElement;\n if (svg.getAttribute(\"width\") && svg.getAttribute(\"height\")) {\n // we're good, continue with the existing blob.\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n } else {\n svg.setAttribute(\"width\", size.width);\n svg.setAttribute(\"height\", size.height);\n var xml = new window.XMLSerializer().serializeToString(svg);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n _load(dataURL);\n }\n };\n reader.readAsText(blob);\n } else {\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n }\n };\n xhr.onerror = _onerror;\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n _load(url);\n }\n }\n\n function _load(url) {\n img.src = url;\n if (img.complete && !browser.msie) {\n // IE, bless its little heart, says img.complete == true even though the image is\n // not loaded (width=0), therefore we must go the onload route (ticket 929635).\n _onload.call(img);\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n\n function _trycanvas() {\n if (!size) {\n size = { width: img.width, height: img.height };\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = size.width;\n canvas.height = size.height;\n\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, size.width, size.height);\n\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n // it tainted the canvas -- can't draw it.\n _onerror();\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n\n // in case it contains transparency, we must separate rgb data from the alpha\n // channel and create a PDFRawImage image with opacity. otherwise we can use a\n // PDFJpegImage.\n //\n // to do this in one step, we create the rgb and alpha streams anyway, even if\n // we might end up not using them if hasAlpha remains false.\n\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n\n if (hasAlpha || options.keepPNG) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n // no transparency, encode as JPEG.\n var data = canvas.toDataURL(\"image/jpeg\", options.jpegQuality);\n data = data.substr(data.indexOf(\";base64,\") + 8);\n\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n\n cont(IMAGE_CACHE[url] = img);\n }\n\n function _onerror() {\n cont(IMAGE_CACHE[url] = \"ERROR\");\n }\n\n function _onload() {\n if (size) {\n var svg = (blob && blob.type === 'image/svg+xml') || (\n /^data:image\\/svg\\+xml;/i.test(this.src.substring(0, 19))\n );\n\n var upscale = size.width >= img.width || size.height >= img.height;\n\n // Use the original image if requested size is bigger than the source,\n // unless it's an SVG that can be upscaled.\n if (!svg && upscale) {\n size = null;\n }\n }\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n // If we know we got a JPEG, we can skip the process of rendering it to a\n // canvas, getting the pixel data, searching for transparency we know we won't\n // find, getting back a data URI and then decoding the BASE64 to finally get the\n // binary we already have. Also, we avoid downgrading the image quality, with\n // the possible drawback of making a bigger PDF; still, seems legit.\n //\n // Besides saving a lot of work, this also reuses the buffer memory\n // (BinaryStream does not create a copy), potentially saving some GC cycles.\n var reader = new FileReader();\n reader.onload = function() {\n try {\n var img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n // if there's an error parsing the JPEG stream, it could be due to a\n // misconfigured server (improper content-type:\n // https://github.com/telerik/kendo-ui-core/issues/4184). If that's the case,\n // the canvas will still be able to draw it.\n _trycanvas();\n }\n };\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n}\n\nfunction manyLoader(loadOne) {\n return function(urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n}\n\nvar loadFonts = manyLoader(loadFont);\nvar loadImages = function(images, callback, options) {\n options = Object.assign({\n jpegQuality : 0.92,\n keepPNG : false\n }, options);\n var urls = Object.keys(images), n = urls.length;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n urls.forEach(function(url){\n loadImage(url, images[url], next, options);\n });\n};\n\nvar PDFDocument = function PDFDocument (options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n\n function getOption(name, defval) {\n return (options && options[name] != null) ? options[name] : defval;\n }\n\n self.getOption = getOption;\n\n self.attach = function(value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n\n self.pages = [];\n\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {}; // cache for color gradient functions\n self.GRAD_OPC_FUNCTIONS = {}; // cache for opacity gradient functions\n self.GRAD_COL = {}; // cache for whole color gradient objects\n self.GRAD_OPC = {}; // cache for whole opacity gradient objects\n\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n\n if (getOption(\"autoPrint\")) {\n var nameTree = {};\n nameTree.JavaScript = new PDFDictionary({ Names: [\n new PDFString(\"JS\"), self.attach(new PDFDictionary({\n S: _(\"JavaScript\"),\n JS: new PDFString(\"print(true);\")\n }))\n ] });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n\n catalog.setPages(pageTree);\n\n var info = self.attach(new PDFDictionary({\n Producer : new PDFString(getOption(\"producer\", \"Kendo UI PDF Generator\"), true), // XXX: kendo.version?\n Title : new PDFString(getOption(\"title\", \"\"), true),\n Author : new PDFString(getOption(\"author\", \"\"), true),\n Subject : new PDFString(getOption(\"subject\", \"\"), true),\n Keywords : new PDFString(getOption(\"keywords\", \"\"), true),\n Creator : new PDFString(getOption(\"creator\", \"Kendo UI PDF Generator\"), true),\n CreationDate : getOption(\"date\", new Date())\n }));\n\n self.addPage = function(options) {\n var paperOptions = getPaperOptions(function(name, defval){\n return (options && options[name] != null) ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents : self.attach(content),\n Parent : pageTree,\n MediaBox : [ 0, 0, paperSize[0], paperSize[1] ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n\n // canvas-like coord. system. (0,0) is upper-left.\n // text must be vertically mirorred before drawing.\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n\n if (margin) {\n page.translate(margin.left, margin.top);\n // XXX: clip to right/bottom margin. Make this optional?\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n\n self.pages.push(page);\n return page;\n };\n\n self.render = function() {\n var i;\n /// file header\n out(\"%PDF-1.4\", NL, \"%\\xc2\\xc1\\xda\\xcf\\xce\", NL, NL);\n\n /// file body\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n\n /// cross-reference table\n var xrefOffset = out.offset();\n out(\"xref\", NL, 0, \" \", objects.length + 1, NL);\n out(\"0000000000 65535 f \", NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), \" 00000 n \", NL);\n }\n out(NL);\n\n /// trailer\n out(\"trailer\", NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL);\n\n /// end\n out(\"startxref\", NL, xrefOffset, NL);\n out(\"%%EOF\", NL);\n\n return out.stream().offset(0);\n };\n\n self.loadFonts = loadFonts;\n self.loadImages = loadImages;\n};\n\nPDFDocument.prototype.getFont = function getFont (url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error(\"Font \" + url + \" has not been loaded\");\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n};\n\nPDFDocument.prototype.getImage = function getImage (url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error(\"Image \" + url + \" has not been loaded\");\n }\n if (img === \"ERROR\") {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n};\n\nPDFDocument.prototype.getOpacityGS = function getOpacityGS (opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? \"S\" : \"F\";\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = {\n Type: _(\"ExtGState\")\n };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _(\"GS\" + (++RESOURCE_COUNTER));\n cache[id] = gs;\n }\n return gs;\n};\n\nPDFDocument.prototype.dict = function dict (props) {\n return new PDFDictionary(props);\n};\n\nPDFDocument.prototype.name = function name (str) {\n return _(str);\n};\n\nPDFDocument.prototype.stream = function stream (props, content) {\n return new PDFStream(content, props);\n};\n\n/* -----[ utils ]----- */\n\nfunction pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n}\n\nfunction zeropad(n, len) {\n return pad(String(n), len, \"0\");\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nvar isArray = Array.isArray || function(obj) {\n return obj instanceof Array;\n};\n\nfunction isDate(obj) {\n return obj instanceof Date;\n}\n\nfunction renderArray(a, out) {\n out(\"[\");\n if (a.length > 0) {\n out.withIndent(function(){\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(\" \", a[i]);\n }\n }\n });\n //out.indent();\n }\n out(\" ]\");\n}\n\nfunction renderDate(date, out) {\n out(\"(D:\",\n zeropad(date.getUTCFullYear(), 4),\n zeropad(date.getUTCMonth() + 1, 2),\n zeropad(date.getUTCDate(), 2),\n zeropad(date.getUTCHours(), 2),\n zeropad(date.getUTCMinutes(), 2),\n zeropad(date.getUTCSeconds(), 2),\n \"Z)\");\n}\n\nfunction mm2pt(mm) {\n return mm * (72/25.4);\n}\n\nfunction cm2pt(cm) {\n return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch) {\n return inch * 72;\n}\n\n\nfunction unitsToPoints(x, def) {\n if (typeof x == \"number\") {\n return x;\n }\n if (typeof x == \"string\") {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == \"pt\") {\n return num;\n }\n return {\n \"mm\": mm2pt,\n \"cm\": cm2pt,\n \"in\": in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error(\"Can't parse unit: \" + x);\n}\n\n/* -----[ PDF basic objects ]----- */\n\nvar PDFValue = function PDFValue () {};\n\nPDFValue.prototype.beforeRender = function beforeRender () {};\n\nvar PDFString = (function (PDFValue) {\n function PDFString(value, utf16be) {\n PDFValue.call(this);\n this.value = value;\n this.utf16be = Boolean(utf16be);\n }\n\n if ( PDFValue ) PDFString.__proto__ = PDFValue;\n PDFString.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFString.prototype.constructor = PDFString;\n\n PDFString.prototype.render = function render (out) {\n var txt = this.value;\n if (this.utf16be) {\n txt = BOM + encodeUTF16BE(txt);\n txt = txt.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n out(\"(\", txt, \")\");\n } else {\n // out.writeString truncates charcodes to 8 bits and\n // 0x128 & 0xFF is 40, the code for open paren.\n // therefore we need to do the chopping here to make\n // sure we backslash all cases.\n var data = [ 40 ]; // open PDF string '('\n for (var i = 0; i < txt.length; ++i) {\n var code = txt.charCodeAt(i) & 0xFF;\n if (code == 40 || code == 41 || code == 92) {\n // backslash before (, ) and \\\n data.push(92);\n }\n data.push(code);\n }\n data.push(41); // ')' close PDF string\n out.writeData(data);\n }\n };\n\n PDFString.prototype.toString = function toString () {\n return this.value;\n };\n\n return PDFString;\n}(PDFValue));\n\nvar PDFHexString = (function (PDFString) {\n function PDFHexString(value) {\n PDFString.call(this, value);\n this.value = value;\n }\n\n if ( PDFString ) PDFHexString.__proto__ = PDFString;\n PDFHexString.prototype = Object.create( PDFString && PDFString.prototype );\n PDFHexString.prototype.constructor = PDFHexString;\n\n PDFHexString.prototype.render = function render (out) {\n var this$1 = this;\n\n out(\"<\");\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this$1.value.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n };\n\n return PDFHexString;\n}(PDFString));\n\n/// names\nvar PDFName = (function (PDFValue) {\n function PDFName(name) {\n PDFValue.call(this);\n this.name = name;\n }\n\n if ( PDFValue ) PDFName.__proto__ = PDFValue;\n PDFName.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFName.prototype.constructor = PDFName;\n\n PDFName.get = function get (name) {\n return _(name);\n };\n\n PDFName.prototype.render = function render (out) {\n out(\"/\" + this.escape());\n };\n\n PDFName.prototype.escape = function escape () {\n return this.name.replace(/[^\\x21-\\x7E]/g, function(c){\n return \"#\" + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n };\n\n PDFName.prototype.toString = function toString () {\n return this.name;\n };\n\n return PDFName;\n}(PDFValue));\n\nvar PDFName_cache = {};\n\nfunction _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n return (PDFName_cache[name] = new PDFName(name));\n}\n\n/// dictionary\n\nvar PDFDictionary = (function (PDFValue) {\n function PDFDictionary(props) {\n PDFValue.call(this);\n this.props = props;\n }\n\n if ( PDFValue ) PDFDictionary.__proto__ = PDFValue;\n PDFDictionary.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFDictionary.prototype.constructor = PDFDictionary;\n\n PDFDictionary.prototype.render = function render (out) {\n var props = this.props, empty = true;\n out(\"<<\");\n out.withIndent(function(){\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), \" \", props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out(\">>\");\n };\n\n return PDFDictionary;\n}(PDFValue));\n\n/// streams\n\nvar PDFStream = (function (PDFValue) {\n function PDFStream(data, props, compress) {\n PDFValue.call(this);\n if (typeof data == \"string\") {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n }\n\n if ( PDFValue ) PDFStream.__proto__ = PDFValue;\n PDFStream.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFStream.prototype.constructor = PDFStream;\n\n PDFStream.prototype.render = function render (out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [ props.Filter ];\n }\n props.Filter.unshift(_(\"FlateDecode\"));\n data = deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), \" stream\", NL);\n out.writeData(data);\n out(NL, \"endstream\");\n };\n\n return PDFStream;\n}(PDFValue));\n\n/// catalog\n\nvar PDFCatalog = (function (PDFDictionary) {\n function PDFCatalog() {\n PDFDictionary.call(this, {\n Type: _(\"Catalog\")\n });\n }\n\n if ( PDFDictionary ) PDFCatalog.__proto__ = PDFDictionary;\n PDFCatalog.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFCatalog.prototype.constructor = PDFCatalog;\n\n PDFCatalog.prototype.setPages = function setPages (pagesObj) {\n this.props.Pages = pagesObj;\n };\n\n return PDFCatalog;\n}(PDFDictionary));\n\n/// page tree\n\nvar PDFPageTree = (function (PDFDictionary) {\n function PDFPageTree() {\n PDFDictionary.call(this, {\n Type : _(\"Pages\"),\n Kids : [],\n Count : 0\n });\n }\n\n if ( PDFDictionary ) PDFPageTree.__proto__ = PDFDictionary;\n PDFPageTree.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFPageTree.prototype.constructor = PDFPageTree;\n\n PDFPageTree.prototype.addPage = function addPage (pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n };\n\n return PDFPageTree;\n}(PDFDictionary));\n\n/// images\n\n// JPEG\n\nvar SOF_CODES = [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf];\n\nvar PDFJpegImage = function PDFJpegImage(data) {\n // we must determine the correct color space. we'll parse a bit\n // of the JPEG stream for this, it's still better than going\n // through the canvas.\n // https://github.com/telerik/kendo-ui-core/issues/2845\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n if (soi != 0xFFD8) {\n // XXX: do we have some better options here?\n throw new Error(\"Invalid JPEG image\");\n }\n while (!data.eof()) {\n var ff = data.readByte();\n if (ff != 0xFF) {\n throw new Error(\"Invalid JPEG image\");\n }\n var marker = data.readByte();\n var length = data.readShort();\n if (SOF_CODES.indexOf(marker) >= 0) {\n // \"start of frame\" marker\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n data.skip(length - 2);\n }\n\n if (colorSpace == null) {\n throw new Error(\"Invalid JPEG image\");\n }\n\n var props = {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : bitsPerComponent,\n Filter : _(\"DCTDecode\")\n };\n\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _(\"DeviceGray\");\n break;\n case 3:\n props.ColorSpace = _(\"DeviceRGB\");\n break;\n case 4:\n props.ColorSpace = _(\"DeviceCMYK\");\n props.Decode = [ 1, 0, 1, 0, 1, 0, 1, 0 ]; // invert colors\n break;\n }\n\n this.asStream = function() {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n};\n\n// PDFRawImage will be used for images with transparency (PNG)\n\nvar PDFRawImage = function PDFRawImage(width, height, rgb, alpha) {\n this.asStream = function(pdf) {\n var mask = new PDFStream(alpha, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceGray\")\n }, true);\n var stream = new PDFStream(rgb, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceRGB\"),\n SMask : pdf.attach(mask)\n }, true);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n};\n\n/// standard fonts\n\nvar PDFStandardFont = (function (PDFDictionary) {\n function PDFStandardFont(name){\n PDFDictionary.call(this, {\n Type : _(\"Font\"),\n Subtype : _(\"Type1\"),\n BaseFont : _(name)\n });\n\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n }\n\n if ( PDFDictionary ) PDFStandardFont.__proto__ = PDFDictionary;\n PDFStandardFont.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFStandardFont.prototype.constructor = PDFStandardFont;\n\n PDFStandardFont.prototype.encodeText = function encodeText (str) {\n return new PDFString(String(str));\n };\n\n return PDFStandardFont;\n}(PDFDictionary));\n\n/// TTF fonts\n\nvar PDFFont = (function (PDFDictionary) {\n function PDFFont(pdf, font, props){\n PDFDictionary.call(this, {});\n\n props = this.props;\n props.Type = _(\"Font\");\n props.Subtype = _(\"Type0\");\n props.Encoding = _(\"Identity-H\");\n\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n\n var head = font.head;\n\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n\n this.flags = ((font.post.isFixedPitch ? 1 : 0) |\n (this.isSerif ? 1 << 1 : 0) |\n (this.isScript ? 1 << 3 : 0) |\n (this.italicAngle !== 0 ? 1 << 6 : 0) |\n (1 << 5));\n }\n\n if ( PDFDictionary ) PDFFont.__proto__ = PDFDictionary;\n PDFFont.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFFont.prototype.constructor = PDFFont;\n\n PDFFont.prototype.encodeText = function encodeText (text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n };\n\n PDFFont.prototype.getTextWidth = function getTextWidth (fontSize, text) {\n var this$1 = this;\n\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this$1._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n };\n\n PDFFont.prototype.beforeRender = function beforeRender () {\n var self = this;\n var sub = self._sub;\n\n // write the TTF data\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), {\n Length1: data.length\n }, true);\n\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type : _(\"FontDescriptor\"),\n FontName : _(self._sub.psName),\n FontBBox : self.bbox,\n Flags : self.flags,\n StemV : self.stemV,\n ItalicAngle : self.italicAngle,\n Ascent : self.ascent,\n Descent : self.descent,\n CapHeight : self.capHeight,\n XHeight : self.xHeight,\n FontFile2 : self._pdf.attach(fontStream)\n }));\n\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk){\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n })(firstChar);\n\n // As if two dictionaries weren't enough, we need another\n // one, the \"descendant font\". Only that one can be of\n // Subtype CIDFontType2. PDF is the X11 of document\n // formats: portable but full of legacy that nobody cares\n // about anymore.\n\n var descendant = new PDFDictionary({\n Type: _(\"Font\"),\n Subtype: _(\"CIDFontType2\"),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry : new PDFString(\"Adobe\"),\n Ordering : new PDFString(\"Identity\"),\n Supplement : 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [ self._pdf.attach(descendant) ];\n\n // Compute the ToUnicode map so that apps can extract\n // meaningful text from the PDF.\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n };\n\n PDFFont.prototype._makeCidToGidMap = function _makeCidToGidMap () {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n };\n\n return PDFFont;\n}(PDFDictionary));\n\nvar PDFToUnicodeCmap = (function (PDFValue) {\n function PDFToUnicodeCmap(firstChar, lastChar, map){\n PDFValue.call(this);\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }\n\n if ( PDFValue ) PDFToUnicodeCmap.__proto__ = PDFValue;\n PDFToUnicodeCmap.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFToUnicodeCmap.prototype.constructor = PDFToUnicodeCmap;\n\n PDFToUnicodeCmap.prototype.render = function render (out) {\n out.indent(\"/CIDInit /ProcSet findresource begin\");\n out.indent(\"12 dict begin\");\n out.indent(\"begincmap\");\n out.indent(\"/CIDSystemInfo <<\");\n out.indent(\" /Registry (Adobe)\");\n out.indent(\" /Ordering (UCS)\");\n out.indent(\" /Supplement 0\");\n out.indent(\">> def\");\n out.indent(\"/CMapName /Adobe-Identity-UCS def\");\n out.indent(\"/CMapType 2 def\");\n out.indent(\"1 begincodespacerange\");\n out.indent(\" <0000>\");\n out.indent(\"endcodespacerange\");\n\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, \" beginbfchar\");\n out.withIndent(function(){\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([ unicode ]);\n out.indent(\"<\", zeropad(code.toString(16), 4), \">\", \"<\");\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n });\n out.indent(\"endbfchar\");\n\n out.indent(\"endcmap\");\n out.indent(\"CMapName currentdict /CMap defineresource pop\");\n out.indent(\"end\");\n out.indent(\"end\");\n };\n\n return PDFToUnicodeCmap;\n}(PDFValue));\n\n/// gradients\n\nfunction makeHash(a) {\n return a.map(function(x){\n return isArray(x) ? makeHash(x)\n : typeof x == \"number\" ? (Math.round(x * 1000) / 1000).toFixed(3)\n : x;\n }).join(\" \");\n}\n\nfunction cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([ r1, g1, b1, r2, g2, b2 ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1, 0, 1, 0, 1 ],\n N: 1,\n C0: [ r1 , g1 , b1 ],\n C1: [ r2 , g2 , b2 ]\n }));\n }\n return func;\n}\n\nfunction cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([ a1, a2 ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1 ],\n N: 1,\n C0: [ a1 ],\n C1: [ a2 ]\n }));\n }\n return func;\n}\n\nfunction makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(\n pdf,\n prevColor.r, prevColor.g, prevColor.b,\n curColor.r, curColor.g, curColor.b\n ));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(\n pdf, prevColor.a, curColor.a\n ));\n }\n }\n offsets.pop();\n return {\n hasAlpha : hasAlpha,\n colors : assemble(colors),\n opacities : hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [ 0, 1 ],\n Bounds: offsets,\n Encode: encode\n };\n }\n}\n\nfunction cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _(\"Shading\"),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _(\"DeviceRGB\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n Function: funcs,\n Extend: [ true, true ]\n });\n pdf.attach(shading);\n shading._resourceName = \"S\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n}\n\nfunction cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _(\"ExtGState\"),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _(\"Mask\"),\n S: _(\"Luminosity\"),\n G: pdf.attach(new PDFStream(\"/a0 gs /s0 sh\", {\n Type: _(\"XObject\"),\n Subtype: _(\"Form\"),\n FormType: 1,\n BBox: (box ? [\n box.left, box.top + box.height, box.left + box.width, box.top\n ] : [ 0, 1, 1, 0 ]),\n Group: {\n Type: _(\"Group\"),\n S: _(\"Transparency\"),\n CS: _(\"DeviceGray\"),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: { CA: 1, ca: 1 }\n },\n Shading: {\n s0: {\n ColorSpace: _(\"DeviceGray\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [ true, true ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = \"O\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n}\n\nfunction cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == \"radial\";\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x , gradient.start.y , gradient.start.r,\n gradient.end.x , gradient.end.y , gradient.end.r\n ] : [\n gradient.start.x , gradient.start.y,\n gradient.end.x , gradient.end.y\n ];\n var shading = cacheColorGradient(\n pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box\n );\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(\n pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box\n ) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n}\n\n/// page object\n\nvar PDFPage = (function (PDFDictionary) {\n function PDFPage(pdf, props){\n PDFDictionary.call(this, props);\n\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [ 1, 0, 0, 1, 0, 0 ];\n this._annotations = [];\n\n this._font = null;\n this._fontSize = null;\n\n this._contextStack = [];\n\n props = this.props;\n props.Type = _(\"Page\");\n props.ProcSet = [\n _(\"PDF\"),\n _(\"Text\"),\n _(\"ImageB\"),\n _(\"ImageC\"),\n _(\"ImageI\")\n ];\n props.Resources = new PDFDictionary({\n Font : new PDFDictionary(this._fontResources),\n ExtGState : new PDFDictionary(this._gsResources),\n XObject : new PDFDictionary(this._xResources),\n Pattern : new PDFDictionary(this._patResources),\n Shading : new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n }\n\n if ( PDFDictionary ) PDFPage.__proto__ = PDFDictionary;\n PDFPage.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFPage.prototype.constructor = PDFPage;\n\n PDFPage.prototype._out = function _out () {\n this._content.data.apply(null, arguments);\n };\n\n PDFPage.prototype.transform = function transform (a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, \" \", b, \" \", c, \" \", d, \" \", e, \" \", f, \" cm\");\n // XXX: debug\n // this._out(\" % current matrix: \", this._matrix);\n this._out(NL);\n }\n };\n\n PDFPage.prototype.translate = function translate (dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n };\n\n PDFPage.prototype.scale = function scale (sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n };\n\n PDFPage.prototype.rotate = function rotate (angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n };\n\n PDFPage.prototype.beginText = function beginText () {\n this._textMode = true;\n this._out(\"BT\", NL);\n };\n\n PDFPage.prototype.endText = function endText () {\n this._textMode = false;\n this._out(\"ET\", NL);\n };\n\n PDFPage.prototype._requireTextMode = function _requireTextMode () {\n if (!this._textMode) {\n throw new Error(\"Text mode required; call page.beginText() first\");\n }\n };\n\n PDFPage.prototype._requireFont = function _requireFont () {\n if (!this._font) {\n throw new Error(\"No font selected; call page.setFont() first\");\n }\n };\n\n PDFPage.prototype.setFont = function setFont (font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, \" \", size, \" Tf\", NL);\n };\n\n PDFPage.prototype.setTextLeading = function setTextLeading (size) {\n this._requireTextMode();\n this._out(size, \" TL\", NL);\n };\n\n PDFPage.prototype.setTextRenderingMode = function setTextRenderingMode (mode) {\n this._requireTextMode();\n this._out(mode, \" Tr\", NL);\n };\n\n PDFPage.prototype.showText = function showText (text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, \" Tz \");\n }\n this._out(this._font.encodeText(text), \" Tj\", NL);\n };\n\n PDFPage.prototype.showTextNL = function showTextNL (text) {\n this._requireFont();\n this._out(this._font.encodeText(text), \" '\", NL);\n };\n\n PDFPage.prototype.addLink = function addLink (uri, box) {\n var ll = this._toPage({ x: box.left, y: box.bottom });\n var ur = this._toPage({ x: box.right, y: box.top });\n this._annotations.push(new PDFDictionary({\n Type : _(\"Annot\"),\n Subtype : _(\"Link\"),\n Rect : [ ll.x, ll.y, ur.x, ur.y ],\n Border : [ 0, 0, 0 ],\n A : new PDFDictionary({\n Type : _(\"Action\"),\n S : _(\"URI\"),\n URI : new PDFString(uri)\n })\n }));\n };\n\n PDFPage.prototype.setStrokeColor = function setStrokeColor (r, g, b) {\n this._out(r, \" \", g, \" \", b, \" RG\", NL);\n };\n\n PDFPage.prototype.setOpacity = function setOpacity (opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n };\n\n PDFPage.prototype.setStrokeOpacity = function setStrokeOpacity (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n };\n\n PDFPage.prototype.setFillColor = function setFillColor (r, g, b) {\n this._out(r, \" \", g, \" \", b, \" rg\", NL);\n };\n\n PDFPage.prototype.setFillOpacity = function setFillOpacity (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n };\n\n PDFPage.prototype.gradient = function gradient (gradient$1, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient$1.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient$1, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out(\"/\" + oname + \" gs \");\n }\n this._out(\"/\" + sname + \" sh\", NL);\n this.restore();\n };\n\n PDFPage.prototype.setDashPattern = function setDashPattern (dashArray, dashPhase) {\n this._out(dashArray, \" \", dashPhase, \" d\", NL);\n };\n\n PDFPage.prototype.setLineWidth = function setLineWidth (width) {\n this._out(width, \" w\", NL);\n };\n\n PDFPage.prototype.setLineCap = function setLineCap (lineCap) {\n this._out(lineCap, \" J\", NL);\n };\n\n PDFPage.prototype.setLineJoin = function setLineJoin (lineJoin) {\n this._out(lineJoin, \" j\", NL);\n };\n\n PDFPage.prototype.setMitterLimit = function setMitterLimit (mitterLimit) {\n this._out(mitterLimit, \" M\", NL);\n };\n\n PDFPage.prototype.save = function save () {\n this._contextStack.push(this._context());\n this._out(\"q\", NL);\n };\n\n PDFPage.prototype.restore = function restore () {\n this._out(\"Q\", NL);\n this._context(this._contextStack.pop());\n };\n\n\n // paths\n PDFPage.prototype.moveTo = function moveTo (x, y) {\n this._out(x, \" \", y, \" m\", NL);\n };\n\n PDFPage.prototype.lineTo = function lineTo (x, y) {\n this._out(x, \" \", y, \" l\", NL);\n };\n\n PDFPage.prototype.bezier = function bezier (x1, y1, x2, y2, x3, y3) {\n this._out(x1, \" \", y1, \" \", x2, \" \", y2, \" \", x3, \" \", y3, \" c\", NL);\n };\n\n PDFPage.prototype.bezier1 = function bezier1 (x1, y1, x3, y3) {\n this._out(x1, \" \", y1, \" \", x3, \" \", y3, \" y\", NL);\n };\n\n PDFPage.prototype.bezier2 = function bezier2 (x2, y2, x3, y3) {\n this._out(x2, \" \", y2, \" \", x3, \" \", y3, \" v\", NL);\n };\n\n PDFPage.prototype.close = function close () {\n this._out(\"h\", NL);\n };\n\n PDFPage.prototype.rect = function rect (x, y, w, h) {\n this._out(x, \" \", y, \" \", w, \" \", h, \" re\", NL);\n };\n\n PDFPage.prototype.ellipse = function ellipse (x, y, rx, ry) {\n function _X(v) { return x + v; }\n function _Y(v) { return y + v; }\n\n // how to get to the \"magic number\" is explained here:\n // http://www.whizkidtech.redprince.net/bezier/circle/kappa/\n var k = 0.5522847498307936;\n\n this.moveTo(_X(0), _Y(ry));\n this.bezier(\n _X(rx * k) , _Y(ry),\n _X(rx) , _Y(ry * k),\n _X(rx) , _Y(0)\n );\n this.bezier(\n _X(rx) , _Y(-ry * k),\n _X(rx * k) , _Y(-ry),\n _X(0) , _Y(-ry)\n );\n this.bezier(\n _X(-rx * k) , _Y(-ry),\n _X(-rx) , _Y(-ry * k),\n _X(-rx) , _Y(0)\n );\n this.bezier(\n _X(-rx) , _Y(ry * k),\n _X(-rx * k) , _Y(ry),\n _X(0) , _Y(ry)\n );\n };\n\n PDFPage.prototype.circle = function circle (x, y, r) {\n this.ellipse(x, y, r, r);\n };\n\n PDFPage.prototype.stroke = function stroke () {\n this._out(\"S\", NL);\n };\n\n PDFPage.prototype.nop = function nop () {\n this._out(\"n\", NL);\n };\n\n PDFPage.prototype.clip = function clip () {\n this._out(\"W n\", NL);\n };\n\n PDFPage.prototype.clipStroke = function clipStroke () {\n this._out(\"W S\", NL);\n };\n\n PDFPage.prototype.closeStroke = function closeStroke () {\n this._out(\"s\", NL);\n };\n\n PDFPage.prototype.fill = function fill () {\n this._out(\"f\", NL);\n };\n\n PDFPage.prototype.fillStroke = function fillStroke () {\n this._out(\"B\", NL);\n };\n\n PDFPage.prototype.drawImage = function drawImage (url) {\n var img = this._pdf.getImage(url);\n if (img) { // the result can be null for a cross-domain image\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, \" Do\", NL);\n }\n };\n\n PDFPage.prototype.comment = function comment (txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function(line){\n self._out(\"% \", line, NL);\n });\n };\n\n // internal\n PDFPage.prototype._context = function _context (val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n };\n\n PDFPage.prototype._toPage = function _toPage (p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a*p.x + c*p.y + e,\n y: b*p.x + d*p.y + f\n };\n };\n\n return PDFPage;\n}(PDFDictionary));\n\nfunction unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, \"$2\");\n}\n\nfunction parseFontDef(fontdef) {\n // XXX: this is very crude for now and buggy. Proper parsing is quite involved.\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return { fontSize: 12, fontFamily: \"sans-serif\" };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic : m[2] && m[2].toLowerCase() == \"italic\",\n variant : m[4],\n bold : m[6] && /bold|700/i.test(m[6]),\n fontSize : fontSize,\n lineHeight : m[12] ? m[12] == \"normal\" ? fontSize : parseInt(m[12], 10) : null,\n fontFamily : m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n}\n\nfunction getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += \"|bold\";\n }\n if (style.italic) {\n name += \"|italic\";\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == \"function\") {\n url = url();\n }\n if (!url) {\n url = \"Times-Roman\";\n }\n return url;\n}\n\nvar FONT_MAPPINGS = {\n \"serif\" : \"Times-Roman\",\n \"serif|bold\" : \"Times-Bold\",\n \"serif|italic\" : \"Times-Italic\",\n \"serif|bold|italic\" : \"Times-BoldItalic\",\n \"sans-serif\" : \"Helvetica\",\n \"sans-serif|bold\" : \"Helvetica-Bold\",\n \"sans-serif|italic\" : \"Helvetica-Oblique\",\n \"sans-serif|bold|italic\" : \"Helvetica-BoldOblique\",\n \"monospace\" : \"Courier\",\n \"monospace|bold\" : \"Courier-Bold\",\n \"monospace|italic\" : \"Courier-Oblique\",\n \"monospace|bold|italic\" : \"Courier-BoldOblique\",\n \"zapfdingbats\" : \"ZapfDingbats\",\n \"zapfdingbats|bold\" : \"ZapfDingbats\",\n \"zapfdingbats|italic\" : \"ZapfDingbats\",\n \"zapfdingbats|bold|italic\" : \"ZapfDingbats\"\n};\n\nfunction fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function() {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + \"|bold\"] = function() {\n return FONT_MAPPINGS[name + \"|bold\"];\n };\n FONT_MAPPINGS[alias + \"|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|italic\"];\n };\n FONT_MAPPINGS[alias + \"|bold|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|bold|italic\"];\n };\n}\n\n// Let's define some common names to an appropriate replacement.\n// These are overridable via pdf.defineFont, should the user want to\n// include the proper versions.\n\nfontAlias(\"Times New Roman\" , \"serif\");\nfontAlias(\"Courier New\" , \"monospace\");\nfontAlias(\"Arial\" , \"sans-serif\");\nfontAlias(\"Helvetica\" , \"sans-serif\");\nfontAlias(\"Verdana\" , \"sans-serif\");\nfontAlias(\"Tahoma\" , \"sans-serif\");\nfontAlias(\"Georgia\" , \"sans-serif\");\nfontAlias(\"Monaco\" , \"monospace\");\nfontAlias(\"Andale Mono\" , \"monospace\");\n\nfunction defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n\n // special handling for DejaVu fonts: if they get defined,\n // let them also replace the default families, for good\n // Unicode support out of the box.\n switch (name) {\n case \"dejavu sans\" : FONT_MAPPINGS[\"sans-serif\"] = url; break;\n case \"dejavu sans|bold\" : FONT_MAPPINGS[\"sans-serif|bold\"] = url; break;\n case \"dejavu sans|italic\" : FONT_MAPPINGS[\"sans-serif|italic\"] = url; break;\n case \"dejavu sans|bold|italic\" : FONT_MAPPINGS[\"sans-serif|bold|italic\"] = url; break;\n case \"dejavu serif\" : FONT_MAPPINGS[\"serif\"] = url; break;\n case \"dejavu serif|bold\" : FONT_MAPPINGS[\"serif|bold\"] = url; break;\n case \"dejavu serif|italic\" : FONT_MAPPINGS[\"serif|italic\"] = url; break;\n case \"dejavu serif|bold|italic\" : FONT_MAPPINGS[\"serif|bold|italic\"] = url; break;\n case \"dejavu mono\" : FONT_MAPPINGS[\"monospace\"] = url; break;\n case \"dejavu mono|bold\" : FONT_MAPPINGS[\"monospace|bold\"] = url; break;\n case \"dejavu mono|italic\" : FONT_MAPPINGS[\"monospace|italic\"] = url; break;\n case \"dejavu mono|bold|italic\" : FONT_MAPPINGS[\"monospace|bold|italic\"] = url; break;\n }\n }\n}\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nfunction isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n}\n\nvar TEXT_RENDERING_MODE = {\n fill : 0,\n stroke : 1,\n fillAndStroke : 2,\n invisible : 3,\n fillAndClip : 4,\n strokeAndClip : 5,\n fillStrokeClip : 6,\n clip : 7\n};\n\nexport {\n PDFDocument as Document,\n BinaryStream,\n defineFont,\n parseFontDef,\n getFontURL,\n loadFonts,\n loadImages,\n getPaperOptions,\n clearImageCache,\n TEXT_RENDERING_MODE\n};\n","export default function createPromise() {\n var resolveFn, rejectFn;\n var promise = new Promise(function (resolve, reject) {\n resolveFn = function (data) {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = function (data) {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = function () { return promise._state; };\n\n return promise;\n}\n","import { Class } from '../common';\n\nvar LRUCache = (function (Class) {\n function LRUCache(size) {\n Class.call(this);\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n if ( Class ) LRUCache.__proto__ = Class;\n LRUCache.prototype = Object.create( Class && Class.prototype );\n LRUCache.prototype.constructor = LRUCache;\n\n LRUCache.prototype.put = function put (key, value) {\n var map = this._map;\n var entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n };\n\n LRUCache.prototype.get = function get (key) {\n var entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n };\n\n return LRUCache;\n}(Class));\n\nexport default LRUCache;","var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nvar SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nvar DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nvar defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nvar TextMetrics = (function (Class) {\n function TextMetrics(options) {\n Class.call(this);\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n if ( Class ) TextMetrics.__proto__ = Class;\n TextMetrics.prototype = Object.create( Class && Class.prototype );\n TextMetrics.prototype.constructor = TextMetrics;\n\n TextMetrics.prototype.measure = function measure (text, style, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n };\n\n TextMetrics.prototype._baselineMarker = function _baselineMarker () {\n var marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n };\n\n return TextMetrics;\n}(Class));\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nvar literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nvar toString = {}.toString;\n\nvar OptionsStore = (function (HasObservers) {\n function OptionsStore(options, prefix) {\n var this$1 = this;\n if ( prefix === void 0 ) prefix = \"\";\n\n HasObservers.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1._wrap(member, field);\n this$1[field] = member;\n }\n }\n\n if ( HasObservers ) OptionsStore.__proto__ = HasObservers;\n OptionsStore.prototype = Object.create( HasObservers && HasObservers.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n\n OptionsStore.prototype._set = function _set (field, value) {\n var this$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString.call(object);\n var wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n };\n\n return OptionsStore;\n}(HasObservers));\n\nexport default OptionsStore;\n","var defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nvar Element = (function (HasObservers) {\n function Element(options) {\n HasObservers.call(this);\n\n this._initOptions(options);\n }\n\n if ( HasObservers ) Element.__proto__ = HasObservers;\n Element.prototype = Object.create( HasObservers && HasObservers.prototype );\n Element.prototype.constructor = Element;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Element.prototype._initOptions = function _initOptions (options) {\n if ( options === void 0 ) options = {};\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n\n Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if ( parentTransform === void 0 ) parentTransform = this.parentTransform();\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function visible (value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n };\n\n Element.prototype.clip = function clip (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n };\n\n Element.prototype.opacity = function opacity (value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n };\n\n Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n Object.defineProperties( Element.prototype, prototypeAccessors );\n\n return Element;\n}(HasObservers));\n\nexport default Element;\n","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","import { defined } from '../util';\n\nvar GRADIENT = \"Gradient\";\n\nvar paintable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.fill = function fill (color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n };\n\n anonymous.prototype.stroke = function stroke (color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default paintable;\n","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nvar withPoints = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nvar DEFAULT_FONT = \"12px sans-serif\";\nvar DEFAULT_FILL = \"#000\";\n\nvar Text = (function (superclass) {\n function Text(content, position, options) {\n if ( position === void 0 ) position = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n if ( superclass ) Text.__proto__ = superclass;\n Text.prototype = Object.create( superclass && superclass.prototype );\n Text.prototype.constructor = Text;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Text\";\n };\n\n Text.prototype.content = function content (value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n };\n\n Text.prototype.measure = function measure () {\n var metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n Object.defineProperties( Text.prototype, prototypeAccessors );\n\n return Text;\n}(paintable(withPoints(Element, [ \"position\" ]))));\n\nexport default Text;\n","var traversable = function (TBase, childrenField) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.traverse = function traverse (callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default traversable;\n","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nvar Group = (function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n\n if ( superclass ) Group.__proto__ = superclass;\n Group.prototype = Object.create( superclass && superclass.prototype );\n Group.prototype.constructor = Group;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Group\";\n };\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function insert (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n };\n\n Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.clear = function clear () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n };\n\n Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n\n Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n Object.defineProperties( Group.prototype, prototypeAccessors );\n\n return Group;\n}(traversable(Element, \"children\")));\n\nexport default Group;","import HasObservers from '../core/has-observers';\n\nvar push = [].push;\nvar pop = [].pop;\nvar splice = [].splice;\nvar shift = [].shift;\nvar slice = [].slice;\nvar unshift = [].unshift;\n\nvar ElementsArray = (function (HasObservers) {\n function ElementsArray(array) {\n if ( array === void 0 ) array = [];\n\n HasObservers.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n if ( HasObservers ) ElementsArray.__proto__ = HasObservers;\n ElementsArray.prototype = Object.create( HasObservers && HasObservers.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n\n ElementsArray.prototype.elements = function elements (value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n };\n\n ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n}(HasObservers));\n\nexport default ElementsArray;\n","import ElementsArray from './elements-array';\n\nvar GeometryElementsArray = (function (ElementsArray) {\n function GeometryElementsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) GeometryElementsArray.__proto__ = ElementsArray;\n GeometryElementsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n}(ElementsArray));\n\nexport default GeometryElementsArray;","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nvar ComplexNumber = (function (Class) {\n function ComplexNumber(real, img) {\n if ( real === void 0 ) real = 0;\n if ( img === void 0 ) img = 0;\n\n Class.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n if ( Class ) ComplexNumber.__proto__ = Class;\n ComplexNumber.prototype = Object.create( Class && Class.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function multiply (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n };\n\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n}(Class));\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","export default function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nvar points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nvar Segment = (function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n if ( superclass ) Segment.__proto__ = superclass;\n Segment.prototype = Object.create( superclass && superclass.prototype );\n Segment.prototype.constructor = Segment;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n };\n\n Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n\n Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n\n Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n\n Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform().rotate(45, point);\n var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n };\n\n Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n\n return Segment;\n}(withPoints(HasObservers, points)));\n\nfunction arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","import { Point, Segment } from '../../geometry';\nimport { last, round } from '../../util';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\nvar X = \"x\";\nvar Y = \"y\";\n\nexport function pointsToCurve(pointsIn, closed) {\n var points = pointsIn.slice(0);\n var segments = [];\n var length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n}\n\nexport function pointsToClosedCurve(pointsIn) {\n return pointsToCurve(pointsIn, true);\n}\n\nexport function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n}\n\nexport function invertAxis(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = lineFunction(p0,p1);\n var y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n}\n\nexport function isLine(p0, p1, p2) {\n var fn = lineFunction(p0, p1);\n var y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n}\n\nexport function lineFunction(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n}\n\nexport function getControlPoints(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n}\n\nexport function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n}\n\nexport function getTangent(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n}\n\nexport function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n}\n\nexport function firstControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n}\n\nexport function secondControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n}\n\nexport function point(xValue, yValue, xField, yField) {\n var controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n}\n\nexport function calculateFunction(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n}\n\nexport function numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nvar IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nvar measurable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n };\n\n anonymous.prototype.geometryChange = function geometryChange () {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default measurable;","import Point from '../geometry/point';\nimport { last } from '../util';\n\nvar ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nvar third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nvar SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nvar SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nvar MOVE = \"m\";\nvar CLOSE = \"z\";\n\nfunction parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport { pointsToCurve } from './utils/points-to-curve';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\nvar SPACE = ' ';\nvar printPoints = function (precision) { return function () {\n var points = [], len = arguments.length;\n while ( len-- ) points[ len ] = arguments[ len ];\n\n return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n; } };\nvar segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\nexport var Path = (function (superclass) {\n function Path(options) {\n superclass.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n if ( superclass ) Path.__proto__ = superclass;\n Path.prototype = Object.create( superclass && superclass.prototype );\n Path.prototype.constructor = Path;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n\n Path.prototype.moveTo = function moveTo (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n };\n\n Path.prototype.lineTo = function lineTo (x, y) {\n var point = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n };\n\n Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype.toString = function toString (digits) {\n var output = '';\n\n var segments = this.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var print = printPoints(digits);\n var currentType;\n\n for (var i = 1; i < length; i++) {\n var type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n };\n\n Path.prototype._containsPoint = function _containsPoint (point) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n };\n\n Path.parse = function parse (str, options) {\n return MultiPath.parse(str, options);\n };\n\n Path.fromRect = function fromRect (rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n };\n\n Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.curveFromPoints = function curveFromPoints (points, options) {\n if (points) {\n var segments = pointsToCurve(points);\n var path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n\n Object.defineProperties( Path.prototype, prototypeAccessors );\n\n return Path;\n}(paintable(measurable(Element))));\n\nexport var MultiPath = (function (superclass) {\n function MultiPath(options) {\n superclass.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n if ( superclass ) MultiPath.__proto__ = superclass;\n MultiPath.prototype = Object.create( superclass && superclass.prototype );\n MultiPath.prototype.constructor = MultiPath;\n\n var prototypeAccessors$1 = { nodeType: { configurable: true } };\n\n MultiPath.parse = function parse (str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n\n MultiPath.prototype.toString = function toString (digits) {\n var paths = this.paths;\n var output = '';\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n };\n\n prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n };\n\n MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n };\n\n MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n return MultiPath;\n}(paintable(measurable(Element))));\n\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nvar withGeometry = function (TBase, names) {\n if ( names === void 0 ) names = [ \"geometry\" ];\n\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nvar Image = (function (superclass) {\n function Image(src, rect, options) {\n if ( rect === void 0 ) rect = new Rect();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n if ( superclass ) Image.__proto__ = superclass;\n Image.prototype = Object.create( superclass && superclass.prototype );\n Image.prototype.constructor = Image;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Image\";\n };\n\n Image.prototype.src = function src (value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n };\n\n Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n Object.defineProperties( Image.prototype, prototypeAccessors );\n\n return Image;\n}(withGeometry(Element, [ \"rect\" ])));\n\nexport default Image;","import ElementsArray from '../shapes/elements-array';\n\nvar StopsArray = (function (ElementsArray) {\n function StopsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) StopsArray.__proto__ = ElementsArray;\n StopsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n StopsArray.prototype.constructor = StopsArray;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n}(ElementsArray));\n\nexport default StopsArray;","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nvar withOptions = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nvar options = [ \"offset\", \"color\", \"opacity\" ];\n\nvar GradientStop = (function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n if ( superclass ) GradientStop.__proto__ = superclass;\n GradientStop.prototype = Object.create( superclass && superclass.prototype );\n GradientStop.prototype.constructor = GradientStop;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n };\n\n return GradientStop;\n}(withOptions(HasObservers, options)));\n\nexport default GradientStop;\n","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nvar Gradient = (function (HasObservers) {\n function Gradient(options) {\n if ( options === void 0 ) options = {};\n\n HasObservers.call(this);\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n if ( HasObservers ) Gradient.__proto__ = HasObservers;\n Gradient.prototype = Object.create( HasObservers && HasObservers.prototype );\n Gradient.prototype.constructor = Gradient;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Gradient\";\n };\n\n Gradient.prototype.userSpace = function userSpace (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n };\n\n Gradient.prototype._createStops = function _createStops (stops) {\n if ( stops === void 0 ) stops = [];\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n Gradient.prototype.optionsChange = function optionsChange (e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n };\n\n Gradient.prototype.geometryChange = function geometryChange () {\n this.optionsChange();\n };\n\n Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n return Gradient;\n}(HasObservers));\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nvar points = [ \"start\", \"end\" ];\n\nvar LinearGradient = (function (superclass) {\n function LinearGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n if ( superclass ) LinearGradient.__proto__ = superclass;\n LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n\n return LinearGradient;\n}(withPoints(Gradient, points)));\n\nexport default LinearGradient;\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Circle = (function (superclass) {\n function Circle(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryCircle();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Circle\";\n };\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n return Circle;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Circle;\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport * as geo from \"../geometry\";\nimport * as PDF from \"../pdf\";\nimport { arabicToRoman, createPromise, measureText, mergeSort } from '../util';\nimport { parseColor as utils_parseColor, support, template as compileTemplate } from \"../common\";\nimport { Path, Text, Group, Image, Circle, LinearGradient } from \"../drawing\";\nimport { encodeBase64 } from \"../util\";\n\nvar browser = support.browser || {};\n/*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n/* -----[ local vars ]----- */\n\nfunction slice(thing) {\n return Array.prototype.slice.call(thing);\n}\n\nvar KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\n\nvar IMAGE_CACHE = {};\n\nvar nodeInfo = {};\nnodeInfo._root = nodeInfo;\n\n/* -----[ Custom Text node to speed up rendering in PDF ]----- */\n\nvar inBrowser = typeof window !== 'undefined';\nvar microsoft = inBrowser ? browser.msie || browser.edge : false;\n\nvar TextRect = (function (Text) {\n function TextRect(str, rect, options) {\n Text.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n\n if ( Text ) TextRect.__proto__ = Text;\n TextRect.prototype = Object.create( Text && Text.prototype );\n TextRect.prototype.constructor = TextRect;\n TextRect.prototype.rect = function rect () {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n };\n TextRect.prototype.rawBBox = function rawBBox () {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n };\n\n return TextRect;\n}(Text));\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n}\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n}\n\nfunction setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n}\n\nvar matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n\treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n})(Element.prototype);\n\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n}\n\n// clone nodes ourselves, so that we redraw (DOM or\n// jQuery clone will not)\nvar cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n var clone = (function dive(node){\n var clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n var canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice(clone.querySelectorAll(\"canvas\")).forEach(function (canvas, i) {\n canvas.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n var orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n})(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\nfunction getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n}\n\nfunction drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n PDF.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = PDF.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = compileTemplate(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
\n //

Foo

\n //
\n //\n // 2.
\n //

Foo

\n //
\n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // With cache disabled, images will still have height zero until their `complete` attribute\n // is true. `whenImagesAreActuallyLoaded` will wait for it.\n if (options.beforePageBreak) {\n whenImagesAreActuallyLoaded([ container ], function() {\n options.beforePageBreak(container, doPageBreak);\n });\n } else {\n whenImagesAreActuallyLoaded([ container ], doPageBreak);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n var el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, callback.bind(null, { pages: pages, container: container }));\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid.k-widget\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid.k-widget\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
\").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n}\n\n// This is needed for the Spreadsheet print functionality. Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\nfunction drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n}\n\nvar parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = utils_parseColor(input, true);\n var length, percent;\n if (color) {\n var match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n})();\n\nvar splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last) {\n ret.push(trim(input.substring(last, pos)));\n last = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last < pos) {\n ret.push(trim(input.substring(last, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n})();\n\nvar getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n})(Object.create(null));\n\nvar getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n})(Object.create(null));\n\nfunction getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n}\n\nfunction updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n}\n\nfunction parseColor(str, css) {\n var color = utils_parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n if (!pending) {\n next();\n }\n function next() {\n if (--pending <= 0) {\n callback();\n }\n }\n}\n\nfunction cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n}\n\nfunction alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n}\n\nfunction popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = geo.Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n}\n\nfunction emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n}\n\nfunction createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n}\n\nfunction getComputedStyle(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n}\n\nfunction getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor(getPropertyValue(style, side + \"-color\"), true)\n };\n}\n\nfunction saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n}\n\nfunction getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n}\n\nfunction getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n}\n\nfunction innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n}\n\nfunction getTransform(style) {\n var transform = getPropertyValue(style, \"transform\");\n if (transform == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n}\n\nfunction radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n}\n\nfunction parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n}\n\nfunction setTransform(shape, m) {\n m = new geo.Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n}\n\nfunction setClipping(shape, clipPath) {\n shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n var points = new geo.Arc([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n}\n\nfunction sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n}\n\nfunction elementRoundBox(element, box, type) {\n var style = getComputedStyle(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n}\n\n// Create a drawing.Path for a rounded rectangle. Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left). The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n}\n\nfunction formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n}\n\nfunction evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n}\n\nfunction getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n}\n\nfunction _renderElement(element, group) {\n var style = getComputedStyle(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice(r.getClientRects()).forEach(function(box){\n var g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform(edge, transform);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform(path, transform);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new geo.Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n // XXX: the science behind these values is called \"trial and error\".\n bullet.style.fontSize = \"60%\";\n bullet.style.lineHeight = \"200%\";\n bullet.style.paddingRight = \"0.5em\";\n bullet.style.fontFamily = \"DejaVu Serif\";\n bullet.innerHTML = {\n \"disc\" : \"\\u25cf\",\n \"circle\" : \"\\u25ef\",\n \"square\" : \"\\u25a0\"\n }[listStyleType];\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n}\n\nfunction gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n}\n\nfunction maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap = new Group();\n wrap.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap.transform(geo.transform().translate(bbox.left, bbox.top));\n\n group.append(wrap);\n\n return true;\n}\n\nfunction renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new geo.Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n var sa = getComputedStyle(a);\n var sb = getComputedStyle(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n var style = getComputedStyle(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new geo.Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n}\n\nfunction renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n}\n\nfunction serializeSVG(element) {\n var serializer = new window.XMLSerializer();\n var xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n var doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n var svg = doc.documentElement;\n var box = getContentBox(element);\n svg.setAttribute(\"width\", box.width);\n svg.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg);\n }\n\n return xml;\n}\n\nfunction renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n var xml = serializeSVG(element);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n}\n\nfunction renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align = getPropertyValue(style, \"text-align\");\n var isJustified = align == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var hasDecoration = underline || lineThrough || overline;\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (hasDecoration) {\n range.selectNode(node);\n slice(range.getClientRects()).forEach(decorate);\n }\n\n return; // only function declarations after this line\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n break;\n }\n\n var text = new TextRect(\n str, new geo.Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function decorate(box) {\n line(underline, box.bottom);\n line(lineThrough, box.bottom - box.height / 2.7);\n line(overline, box.top);\n function line(color, ypos) {\n if (color) {\n var width = fontSize / 12;\n var path = new Path({ stroke: {\n width: width,\n color: color\n }});\n\n ypos -= width;\n path.moveTo(box.left, ypos)\n .lineTo(box.right, ypos);\n group.append(path);\n }\n }\n }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n}\n\nfunction renderElement(element, container) {\n var style = getComputedStyle(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n}\n\n// function drawDebugBox(box, group, color) {\n// var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n// if (color) {\n// path.stroke(color);\n// }\n// group.append(path);\n// }\n\n// function dumpTextNode(node) {\n// var txt = node.data.replace(/^\\s+/, \"\");\n// if (txt.length < 100) {\n// console.log(node.data.length + \": |\" + txt);\n// } else {\n// console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n// }\n// }\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nexport { drawDOM, drawText, getFontFaces };\n","export default function template() {\n throw new Error(\"Template implementation missing.\");\n}\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nvar RadialGradient = (function (superclass) {\n function RadialGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n if ( superclass ) RadialGradient.__proto__ = superclass;\n RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n\n RadialGradient.prototype.radius = function radius (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n };\n\n RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n };\n\n return RadialGradient;\n}(withPoints(Gradient, [ \"center\" ])));\n\nexport default RadialGradient;\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { createPromise } from \"../util\";\nimport { parseColor as utils_parseColor, saveAs as util_saveAs, support } from \"../common\";\nimport * as PDF from \"./core\";\nimport { Group, Path, MultiPath, Gradient, RadialGradient } from '../drawing';\nimport * as geo from \"../geometry\";\n\nvar DEFAULT_IMAGE_DPI = 300;\nvar TEXT_RENDERING_MODE = PDF.TEXT_RENDERING_MODE;\n\nvar DASH_PATTERNS = {\n dash : [ 4 ],\n dashDot : [ 4, 2, 1, 2 ],\n dot : [ 1, 2 ],\n longDash : [ 8, 2 ],\n longDashDot : [ 8, 2, 1, 2 ],\n longDashDotDot : [ 8, 2, 1, 2, 1, 2 ],\n solid : []\n};\n\nvar LINE_CAP = {\n butt : 0,\n round : 1,\n square : 2\n};\n\nvar LINE_JOIN = {\n miter : 0,\n round : 1,\n bevel : 2\n};\n\nfunction render(group, callback) {\n var fonts = [], images = {}, options = group.options;\n\n function getOption(name, defval, hash) {\n if (!hash) {\n hash = options;\n }\n if (hash.pdf && hash.pdf[name] != null) {\n return hash.pdf[name];\n }\n return defval;\n }\n\n var multiPage = getOption(\"multiPage\");\n var imgDPI = getOption(\"imgDPI\", DEFAULT_IMAGE_DPI);\n\n PDF.clearImageCache();\n\n group.traverse(function(element){\n dispatch({\n Image: function(element) {\n var url = element.src();\n var size = element.bbox().size;\n if (imgDPI) {\n var prev = images[url];\n size = {\n width: Math.ceil(size.width * imgDPI / 72),\n height: Math.ceil(size.height * imgDPI / 72)\n };\n\n if (prev) {\n size.width = Math.max(prev.width, size.width);\n size.height = Math.max(prev.height, size.height);\n }\n }\n\n images[url] = size;\n },\n Text: function(element) {\n var style = PDF.parseFontDef(element.options.font);\n var url = PDF.getFontURL(style);\n if (fonts.indexOf(url) < 0) {\n fonts.push(url);\n }\n }\n }, element);\n });\n\n function doIt() {\n if (--count > 0) {\n return;\n }\n\n var pdf = new (PDF.Document)({\n producer : getOption(\"producer\"),\n title : getOption(\"title\"),\n author : getOption(\"author\"),\n subject : getOption(\"subject\"),\n keywords : getOption(\"keywords\"),\n creator : getOption(\"creator\"),\n date : getOption(\"date\"),\n\n autoPrint : getOption(\"autoPrint\")\n });\n\n function drawPage(group) {\n var options = group.options;\n\n var tmp = optimize(group);\n var bbox = tmp.bbox;\n group = tmp.root;\n // var tmp, bbox;\n\n var paperSize = getOption(\"paperSize\", getOption(\"paperSize\", \"auto\"), options), addMargin = false;\n if (paperSize == \"auto\") {\n if (bbox) {\n var size = bbox.getSize();\n paperSize = [ size.width, size.height ];\n addMargin = true;\n var origin = bbox.getOrigin();\n tmp = new Group();\n tmp.transform(new geo.Matrix(1, 0, 0, 1, -origin.x, -origin.y));\n tmp.append(group);\n group = tmp;\n }\n else {\n paperSize = \"A4\";\n }\n }\n\n var page;\n page = pdf.addPage({\n paperSize : paperSize,\n margin : getOption(\"margin\", getOption(\"margin\"), options),\n addMargin : addMargin,\n landscape : getOption(\"landscape\", getOption(\"landscape\", false), options)\n });\n drawElement(group, page, pdf);\n }\n\n if (multiPage) {\n group.children.forEach(drawPage);\n } else {\n drawPage(group);\n }\n\n callback(pdf.render(), pdf);\n }\n\n var count = 2;\n PDF.loadFonts(fonts, doIt);\n PDF.loadImages(images, doIt, {\n jpegQuality : getOption(\"jpegQuality\", 0.92),\n keepPNG : getOption(\"keepPNG\", false)\n });\n}\n\nfunction toDataURL(group, callback) {\n render(group, function(data){\n callback(\"data:application/pdf;base64,\" + data.base64());\n });\n}\n\nfunction toBlob(group, callback) {\n render(group, function(data){\n callback(new window.Blob([ data.get() ], { type: \"application/pdf\" }));\n });\n}\n\nfunction saveAs(group, filename, proxy, callback) {\n // XXX: Safari has Blob, but does not support the download attribute\n // so we'd end up converting to dataURL and using the proxy anyway.\n if (window.Blob && !support.browser.safari) {\n toBlob(group, function(blob){\n util_saveAs({ dataURI: blob, fileName: filename });\n if (callback) {\n callback(blob);\n }\n });\n } else {\n toDataURL(group, function(dataURL){\n util_saveAs({ dataURI: dataURL, fileName: filename, proxyURL: proxy });\n if (callback) {\n callback(dataURL);\n }\n });\n }\n}\n\nfunction dispatch(handlers, element) {\n var handler = handlers[element.nodeType];\n if (handler) {\n return handler.call.apply(handler, arguments);\n }\n return element;\n}\n\nfunction drawElement(element, page, pdf) {\n if (element.options._pdfDebug) {\n page.comment(\"BEGIN: \" + element.options._pdfDebug);\n }\n\n var transform = element.transform();\n var opacity = element.opacity();\n\n page.save();\n\n if (opacity != null && opacity < 1) {\n page.setOpacity(opacity);\n }\n\n setStrokeOptions(element, page, pdf);\n setFillOptions(element, page, pdf);\n\n if (transform) {\n var m = transform.matrix();\n page.transform(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n\n setClipping(element, page, pdf);\n\n dispatch({\n Path : drawPath,\n MultiPath : drawMultiPath,\n Circle : drawCircle,\n Arc : drawArc,\n Text : drawText,\n Image : drawImage,\n Group : drawGroup,\n Rect : drawRect\n }, element, page, pdf);\n\n page.restore();\n\n if (element.options._pdfDebug) {\n page.comment(\"END: \" + element.options._pdfDebug);\n }\n}\n\nfunction setStrokeOptions(element, page) {\n var stroke = element.stroke && element.stroke();\n if (!stroke) {\n return;\n }\n\n var color = stroke.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no stroke\n }\n page.setStrokeColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setStrokeOpacity(color.a);\n }\n }\n\n var width = stroke.width;\n if (width != null) {\n if (width === 0) {\n return; // no stroke\n }\n page.setLineWidth(width);\n }\n\n var dashType = stroke.dashType;\n if (dashType) {\n page.setDashPattern(DASH_PATTERNS[dashType], 0);\n }\n\n var lineCap = stroke.lineCap;\n if (lineCap) {\n page.setLineCap(LINE_CAP[lineCap]);\n }\n\n var lineJoin = stroke.lineJoin;\n if (lineJoin) {\n page.setLineJoin(LINE_JOIN[lineJoin]);\n }\n\n var opacity = stroke.opacity;\n if (opacity != null) {\n page.setStrokeOpacity(opacity);\n }\n}\n\nfunction setFillOptions(element, page) {\n var fill = element.fill && element.fill();\n if (!fill) {\n return;\n }\n\n if (fill instanceof Gradient) {\n return;\n }\n\n var color = fill.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no fill\n }\n page.setFillColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setFillOpacity(color.a);\n }\n }\n\n var opacity = fill.opacity;\n if (opacity != null) {\n page.setFillOpacity(opacity);\n }\n}\n\nfunction setClipping(element, page, pdf) {\n // XXX: only Path supported at the moment.\n var clip = element.clip();\n if (clip) {\n _drawPath(clip, page, pdf);\n page.clip();\n // page.setStrokeColor(Math.random(), Math.random(), Math.random());\n // page.setLineWidth(1);\n // page.stroke();\n }\n}\n\nfunction shouldDraw(thing) {\n return (thing &&\n (thing instanceof Gradient ||\n (thing.color && !/^(none|transparent)$/i.test(thing.color) &&\n (thing.width == null || thing.width > 0) &&\n (thing.opacity == null || thing.opacity > 0))));\n}\n\nfunction maybeGradient(element, page, pdf, stroke) {\n var fill = element.fill();\n if (fill instanceof Gradient) {\n if (stroke) {\n page.clipStroke();\n } else {\n page.clip();\n }\n var isRadial = fill instanceof RadialGradient;\n var start, end;\n if (isRadial) {\n start = { x: fill.center().x , y: fill.center().y , r: 0 };\n end = { x: fill.center().x , y: fill.center().y , r: fill.radius() };\n } else {\n start = { x: fill.start().x , y: fill.start().y };\n end = { x: fill.end().x , y: fill.end().y };\n }\n\n var stops = fill.stops.elements().map(function(stop){\n var offset = stop.offset();\n if (/%$/.test(offset)) {\n offset = parseFloat(offset) / 100;\n } else {\n offset = parseFloat(offset);\n }\n var color = parseColor(stop.color());\n color.a *= stop.opacity();\n return {\n offset: offset,\n color: color\n };\n });\n\n // Duplicats first and last stop to fix\n // https://github.com/telerik/kendo-ui-core/issues/1782\n stops.unshift(stops[0]);\n stops.push(stops[stops.length - 1]);\n\n var gradient = {\n userSpace : fill.userSpace(),\n type : isRadial ? \"radial\" : \"linear\",\n start : start,\n end : end,\n stops : stops\n };\n var box = element.rawBBox();\n var tl = box.topLeft(), size = box.getSize();\n box = {\n left : tl.x,\n top : tl.y,\n width : size.width,\n height : size.height\n };\n page.gradient(gradient, box);\n return true;\n }\n}\n\nfunction maybeFillStroke(element, page, pdf) {\n if (shouldDraw(element.fill()) && shouldDraw(element.stroke())) {\n if (!maybeGradient(element, page, pdf, true)) {\n page.fillStroke();\n }\n } else if (shouldDraw(element.fill())) {\n if (!maybeGradient(element, page, pdf, false)) {\n page.fill();\n }\n } else if (shouldDraw(element.stroke())) {\n page.stroke();\n } else {\n // we should not get here; the path should have been\n // optimized away. but let's be prepared.\n page.nop();\n }\n}\n\nfunction maybeDrawRect(path, page) {\n var segments = path.segments;\n if (segments.length == 4 && path.options.closed) {\n // detect if this path looks like a rectangle parallel to the axis\n var a = [];\n for (var i = 0; i < segments.length; ++i) {\n if (segments[i].controlIn()) { // has curve?\n return false;\n }\n a[i] = segments[i].anchor();\n }\n // it's a rectangle if the y/x/y/x or x/y/x/y coords of\n // consecutive points are the same.\n var isRect = (\n a[0].y == a[1].y && a[1].x == a[2].x && a[2].y == a[3].y && a[3].x == a[0].x\n ) || (\n a[0].x == a[1].x && a[1].y == a[2].y && a[2].x == a[3].x && a[3].y == a[0].y\n );\n if (isRect) {\n // this saves a bunch of instructions in PDF:\n // moveTo, lineTo, lineTo, lineTo, close -> rect.\n page.rect(a[0].x, a[0].y,\n a[2].x - a[0].x /*width*/,\n a[2].y - a[0].y /*height*/);\n return true;\n }\n }\n}\n\nfunction _drawPath(element, page, pdf) {\n var segments = element.segments;\n if (segments.length === 0) {\n return;\n }\n if (!maybeDrawRect(element, page, pdf)) {\n for (var prev, i = 0; i < segments.length; ++i) {\n var seg = segments[i];\n var anchor = seg.anchor();\n if (!prev) {\n page.moveTo(anchor.x, anchor.y);\n } else {\n var prevOut = prev.controlOut();\n var controlIn = seg.controlIn();\n if (prevOut && controlIn) {\n page.bezier(\n prevOut.x , prevOut.y,\n controlIn.x , controlIn.y,\n anchor.x , anchor.y\n );\n } else {\n page.lineTo(anchor.x, anchor.y);\n }\n }\n prev = seg;\n }\n if (element.options.closed) {\n page.close();\n }\n }\n}\n\nfunction drawPath(element, page, pdf) {\n _drawPath(element, page, pdf);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawMultiPath(element, page, pdf) {\n var paths = element.paths;\n for (var i = 0; i < paths.length; ++i) {\n _drawPath(paths[i], page, pdf);\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawCircle(element, page, pdf) {\n var g = element.geometry();\n page.circle(g.center.x, g.center.y, g.radius);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawArc(element, page, pdf) {\n var points = element.geometry().curvePoints();\n page.moveTo(points[0].x, points[0].y);\n for (var i = 1; i < points.length;) {\n page.bezier(\n points[i].x, points[i++].y,\n points[i].x, points[i++].y,\n points[i].x, points[i++].y\n );\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawText(element, page) {\n var style = PDF.parseFontDef(element.options.font);\n var pos = element._position;\n var mode;\n if (element.fill() && element.stroke()) {\n mode = TEXT_RENDERING_MODE.fillAndStroke;\n } else if (element.fill()) {\n mode = TEXT_RENDERING_MODE.fill;\n } else if (element.stroke()) {\n mode = TEXT_RENDERING_MODE.stroke;\n }\n\n page.transform(1, 0, 0, -1, pos.x, pos.y + style.fontSize);\n page.beginText();\n page.setFont(PDF.getFontURL(style), style.fontSize);\n page.setTextRenderingMode(mode);\n page.showText(element.content(), element._pdfRect ? element._pdfRect.width() : null);\n page.endText();\n}\n\nfunction drawGroup(element, page, pdf) {\n if (element._pdfLink) {\n page.addLink(element._pdfLink.url, element._pdfLink);\n }\n var children = element.children;\n for (var i = 0; i < children.length; ++i) {\n drawElement(children[i], page, pdf);\n }\n}\n\nfunction drawImage(element, page) {\n var url = element.src();\n if (!url) {\n return;\n }\n\n var rect = element.rect();\n var tl = rect.getOrigin();\n var sz = rect.getSize();\n page.transform(sz.width, 0, 0, -sz.height, tl.x, tl.y + sz.height);\n page.drawImage(url);\n}\n\nfunction drawRect(element, page, pdf) {\n var geometry = element.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n if (rx === 0 && ry === 0) {\n page.rect(geometry.origin.x, geometry.origin.y, geometry.size.width, geometry.size.height);\n maybeFillStroke(element, page, pdf);\n } else {\n drawPath(Path.fromRect(geometry, element.options), page, pdf);\n }\n}\n\nfunction parseColor(value) {\n var color = utils_parseColor(value, true);\n return color ? color.toRGB() : null;\n}\n\nfunction optimize(root) {\n var clipbox = false;\n var matrix = geo.Matrix.unit();\n var currentBox = null;\n var changed;\n do {\n changed = false;\n root = opt(root);\n } while (root && changed);\n return { root: root, bbox: currentBox };\n\n function change(newShape) {\n changed = true;\n return newShape;\n }\n\n function visible(shape) {\n return (shape.visible() && shape.opacity() > 0 &&\n ( shouldDraw(shape.fill()) ||\n shouldDraw(shape.stroke()) ));\n }\n\n function optArray(a) {\n var b = [];\n for (var i = 0; i < a.length; ++i) {\n var el = opt(a[i]);\n if (el != null) {\n b.push(el);\n }\n }\n return b;\n }\n\n function withClipping(shape, f) {\n var saveclipbox = clipbox;\n var savematrix = matrix;\n\n if (shape.transform()) {\n matrix = matrix.multiplyCopy(shape.transform().matrix());\n }\n\n var clip = shape.clip();\n if (clip) {\n clip = clip.bbox();\n if (clip) {\n clip = clip.bbox(matrix);\n clipbox = clipbox ? geo.Rect.intersect(clipbox, clip) : clip;\n }\n }\n\n try {\n return f();\n }\n finally {\n clipbox = saveclipbox;\n matrix = savematrix;\n }\n }\n\n function inClipbox(shape) {\n if (clipbox == null) {\n return false;\n }\n var box = shape.rawBBox().bbox(matrix);\n if (clipbox && box) {\n box = geo.Rect.intersect(box, clipbox);\n }\n return box;\n }\n\n function opt(shape) {\n return withClipping(shape, function(){\n if (!(shape instanceof Group || shape instanceof MultiPath)) {\n var box = inClipbox(shape);\n if (!box) {\n return change(null);\n }\n currentBox = currentBox ? geo.Rect.union(currentBox, box) : box;\n }\n return dispatch({\n Path: function(shape) {\n if (shape.segments.length === 0 || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n MultiPath: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n var el = new MultiPath(shape.options);\n el.paths = optArray(shape.paths);\n if (el.paths.length === 0) {\n return change(null);\n }\n return el;\n },\n Circle: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Arc: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Text: function(shape) {\n if (!/\\S/.test(shape.content()) || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Image: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n return shape;\n },\n Group: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n var el = new Group(shape.options);\n el.children = optArray(shape.children);\n el._pdfLink = shape._pdfLink;\n if (shape !== root && el.children.length === 0 && !shape._pdfLink) {\n return change(null);\n }\n return el;\n },\n Rect: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n }\n }, shape);\n });\n }\n}\n\nfunction exportPDF(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n toDataURL(group, promise.resolve);\n\n return promise;\n}\n\n// XXX: the duplication is in order to keep exportPDF return a data\n// URI, which is what previous versions do. Currently only IE9 does\n// not support Blob, IMO we should switch to Blob by default\n// everywhere.\nfunction exportPDFToBlob(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n if (window.Blob && !support.browser.safari) {\n toBlob(group, promise.resolve);\n } else {\n toDataURL(group, promise.resolve);\n }\n\n return promise;\n}\n\n\nexport { exportPDF, exportPDFToBlob, saveAs, toDataURL, toBlob, render };\n","export function saveAs(data, fileName, options) {\n if ( options === void 0 ) options = {};\n\n var save = postToProxy;\n\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(data, fileName, options);\n}\n\nvar anchor = function () { return document.createElement('a'); };\nvar canDownload = function () { return 'download' in anchor(); };\n\nfunction saveAsBlob(data, fileName) {\n var blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n var parts = data.split(';base64,');\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n\n blob = new Blob([ array.buffer ], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n var dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n\n var fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(function () { return URL.revokeObjectURL(dataURI); });\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n\n var form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n\n var formData = options.proxyData || {};\n formData.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n\n for (var name in formData) {\n if (formData.hasOwnProperty(name)) {\n var input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n\n form.appendChild(input);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n\n","var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar fromCharCode = String.fromCharCode;\n\nexport function encodeBase64(plainText) {\n var input = encodeUTF8(plainText);\n var output = \"\";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}\n\nfunction encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (c >>> 6));\n output += fromCharCode(0x80 | (c & 0x3f));\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (c >>> 12));\n output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (c & 0x3f));\n }\n }\n\n return output;\n}\n","import * as React from 'react';\nimport * as ReactDOMServer from 'react-dom/server';\nvar defaultFileName = 'export.pdf';\nvar defaultCreator = 'KendoReact PDF Generator';\n/**\n * @hidden\n */\nvar KendoDrawingAdapter = /** @class */ (function () {\n function KendoDrawingAdapter(drawDOM, exportPDF, saveAs, domElement, options) {\n if (options === void 0) { options = {}; }\n var _this = this;\n this.drawDOM = drawDOM;\n this.exportPDF = exportPDF;\n this.saveAs = saveAs;\n this.domElement = domElement;\n this.options = options;\n this.convertPageTemplateToHtml = function (pageContext) {\n var pageTemplateContent = ReactDOMServer.renderToStaticMarkup(React.createElement(_this.options.pageTemplate, {\n pageNum: pageContext.pageNum, totalPages: pageContext.totalPages\n }));\n return \"\".concat(pageTemplateContent, \"\");\n };\n }\n KendoDrawingAdapter.prototype.savePDF = function (callback) {\n var _this = this;\n var savePromise = this.drawDOM(this.domElement, this.getDrawOptions())\n .then(function (group) { return _this.exportPDF(group, _this.getPDFOptions()); })\n .then(function (dataUri) { return _this.saveAs(dataUri, _this.options.fileName || defaultFileName, _this.getSaveOptions()); });\n if (callback) {\n savePromise.then(callback, callback);\n }\n };\n KendoDrawingAdapter.prototype.getDrawOptions = function () {\n return {\n avoidLinks: this.options.avoidLinks,\n forcePageBreak: this.options.forcePageBreak,\n keepTogether: this.options.keepTogether,\n margin: this.options.margin,\n paperSize: this.options.paperSize,\n landscape: this.options.landscape,\n repeatHeaders: this.options.repeatHeaders,\n scale: this.options.scale,\n template: this.options.pageTemplate && this.convertPageTemplateToHtml\n };\n };\n KendoDrawingAdapter.prototype.getPDFOptions = function () {\n return {\n author: this.options.author,\n creator: this.options.creator || defaultCreator,\n date: this.options.date,\n imgDPI: this.options.imageResolution,\n keywords: this.options.keywords,\n landscape: this.options.landscape,\n margin: this.options.margin,\n multiPage: true,\n paperSize: this.options.paperSize,\n producer: this.options.producer,\n subject: this.options.subject,\n title: this.options.title\n };\n };\n KendoDrawingAdapter.prototype.getSaveOptions = function () {\n return {\n forceProxy: this.options.forceProxy,\n proxyData: this.options.proxyData,\n proxyTarget: this.options.proxyTarget,\n proxyURL: this.options.proxyURL\n };\n };\n return KendoDrawingAdapter;\n}());\nexport default KendoDrawingAdapter;\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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { savePDF } from '@progress/kendo-react-pdf';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from './../messages';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nvar pdf = EditorToolsSettings.pdf, defaultSavePdfOptions = EditorToolsSettings.savePdfOptions;\n/**\n * @hidden\n */\nexport var Pdf = function (props) {\n var view = props.view, render = props.render, _a = props.settings, settings = _a === void 0 ? pdf : _a, savePdfOptions = props.savePdfOptions, savePdfCallback = props.savePdfCallback, buttonProps = __rest(props, [\"view\", \"render\", \"settings\", \"savePdfOptions\", \"savePdfCallback\"]);\n var titleKey = settings.messages.title;\n var onClick = React.useCallback(function () {\n if (view) {\n savePDF(view.dom, __assign(__assign({}, defaultSavePdfOptions), (savePdfOptions || {})), savePdfCallback);\n }\n }, [view, savePdfOptions, savePdfCallback]);\n var button = (React.createElement(Button, __assign({ onClick: onClick, title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps)));\n return (render ? render.call(undefined, button, { view: view }) : button);\n};\n","import { drawDOM, exportPDF } from '@progress/kendo-drawing';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport KendoDrawingAdapter from './KendoDrawingAdapter';\n/**\n * Saves the content of a DOM element to a PDF file.\n *\n * @param domElement - The root DOM element to save to a PDF file.\n * @param options - The export options.\n * @param callback - The callback to be executed after the PDF is saved.\n */\nexport function savePDF(domElement, options, callback) {\n if (options === void 0) { options = {}; }\n new KendoDrawingAdapter(drawDOM, exportPDF, saveAs, domElement, options).savePDF(callback);\n}\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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from './../messages';\nimport { selectAll as selectAllCommand } from '@progress/kendo-editor-common';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nvar selectAll = EditorToolsSettings.selectAll;\n/**\n * @hidden\n */\nexport var SelectAll = function (props) {\n var view = props.view, render = props.render, _a = props.settings, settings = _a === void 0 ? selectAll : _a, buttonProps = __rest(props, [\"view\", \"render\", \"settings\"]);\n var titleKey = settings.messages.title;\n var onClick = React.useCallback(function () {\n if (view) {\n selectAllCommand(view.state, view.dispatch);\n view.focus();\n }\n }, [view]);\n var button = (React.createElement(Button, __assign({ onClick: onClick, title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps)));\n return (render ? render.call(undefined, button, { view: view }) : button);\n};\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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from '../messages';\nimport { cleanFormatting as cleanFormattingCmd } from '@progress/kendo-editor-common';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nvar cleanFormatting = EditorToolsSettings.cleanFormatting;\nvar command = cleanFormattingCmd();\n/**\n * @hidden\n */\nexport var CleanFormatting = function (props) {\n var view = props.view, render = props.render, _a = props.settings, settings = _a === void 0 ? cleanFormatting : _a, buttonProps = __rest(props, [\"view\", \"render\", \"settings\"]);\n var titleKey = settings.messages.title;\n var onClick = React.useCallback(function () {\n if (view) {\n command(view.state, function (tr) {\n tr.setMeta('commandName', settings.commandName);\n view.dispatch(tr);\n });\n }\n }, [view]);\n var button = (React.createElement(Button, __assign({ onClick: onClick, disabled: !view || !command(view.state), title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps)));\n return (render ? render.call(undefined, button, { view: view }) : button);\n};\n","import { cleanTextBlockFormatting } from './blockNode';\nimport { cleanMarks } from './mark';\n/**\n * A command which removes the inline formatting, class and style attributes of paragraph and heading elements in the selection.\n */\nexport var cleanFormatting = function (options) {\n if (options === void 0) { options = { blocksInSelection: true }; }\n return function (state, dispatch) {\n var tr = state.tr;\n var blocksInSelection = options.blocksInSelection, blockNodeType = options.blockNodeType, exceptMarks = options.exceptMarks;\n var except = (exceptMarks || [state.schema.marks.link]).filter(Boolean);\n cleanMarks(tr, { except: except });\n cleanTextBlockFormatting(tr, { blocksInSelection: blocksInSelection, blockNodeType: blockNodeType });\n var result = tr.docChanged;\n if (result && dispatch) {\n dispatch(tr);\n }\n return result;\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { FindAndReplaceDialog } from '../dialogs/FindReplace';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from './../messages';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nvar settings = EditorToolsSettings.findAndReplace;\n/**\n * @hidden\n */\nvar FindAndReplace = /** @class */ (function (_super) {\n __extends(FindAndReplace, _super);\n function FindAndReplace() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = { showDialog: false };\n _this.onClose = function () { return _this.setState({ showDialog: false }); };\n _this.onOpen = function () { return _this.setState({ showDialog: true }); };\n return _this;\n }\n /**\n * @hidden\n */\n FindAndReplace.prototype.render = function () {\n var _a = this.props, view = _a.view, buttonProps = __rest(_a, [\"view\"]);\n var props = settings.props;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.findReplaceToolTitle;\n return [(React.createElement(Button, __assign({ onClick: this.onOpen }, onDownPreventDefault, { disabled: !view, title: localization.toLanguageString(titleKey, messages[titleKey]), key: \"tool\" }, props, buttonProps))), this.state.showDialog && view && (React.createElement(FindAndReplaceDialog, { view: view, onClose: this.onClose, dir: buttonProps.dir, key: \"dialog\" }))];\n };\n return FindAndReplace;\n}(React.Component));\nexport { FindAndReplace };\nregisterForLocalization(FindAndReplace);\n","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var ButtonItem = function (props) {\n var _a;\n var handleClick = React.useCallback(function (event) {\n props.onClick(event, props.index);\n }, [props]);\n var As = props.dataItem.render || props.item || (props.item === undefined ? props.render : null);\n var text = props.dataItem.text !== undefined ? props.dataItem.text : (props.textField ? props.dataItem[props.textField] : props.dataItem);\n var item = (React.createElement(\"li\", { id: props.id, className: classNames('k-item', props.className, { 'k-focus': props.focused }), onClick: handleClick, onMouseDown: props.onDown, onPointerDown: props.onDown, role: \"menuitem\", \"aria-disabled\": props.dataItem.disabled || undefined }, (React.createElement(\"span\", { tabIndex: -1, className: classNames('k-link k-menu-link', {\n 'k-selected': props.dataItem.selected,\n 'k-disabled': props.dataItem.disabled\n }), key: \"icon\" }, As\n ? (React.createElement(As, { item: props.dataItem, itemIndex: props.index }))\n : (React.createElement(React.Fragment, null,\n (props.dataItem.icon || props.dataItem.iconClass) && (React.createElement(\"span\", { className: classNames('k-icon', (_a = {},\n _a[\"k-i-\".concat(props.dataItem.icon)] = props.dataItem.icon,\n _a[\"\".concat(props.dataItem.iconClass)] = props.dataItem.iconClass,\n _a)) })),\n (props.dataItem.imageUrl) && (React.createElement(\"img\", { role: \"presentation\", alt: \"\", src: props.dataItem.imageUrl, className: 'k-icon' })),\n (text) && (React.createElement(\"span\", { className: \"k-menu-link-text\" }, text))))))));\n return ((props.item !== undefined && /* to be removed in 5.0.0 */\n props.render !== undefined) ? props.render.call(undefined, item, props) : item);\n};\nButtonItem.displayName = 'KendoReactButtonItem';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * as PropTypes from 'prop-types';\nvar SplitButtonItem = /** @class */ (function (_super) {\n __extends(SplitButtonItem, _super);\n function SplitButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n SplitButtonItem.prototype.render = function () {\n return null;\n };\n /**\n * @hidden\n */\n SplitButtonItem.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n disabled: PropTypes.bool,\n render: PropTypes.any\n };\n return SplitButtonItem;\n}(React.Component));\nexport { SplitButtonItem };\n","/**\n * @hidden\n */\nexport function getAnchorAlign(isDirectionRightToLeft) {\n var align = { horizontal: 'left', vertical: 'bottom' };\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n return align;\n}\n/**\n * @hidden\n */\nexport function getPopupAlign(isDirectionRightToLeft) {\n var align = { horizontal: 'left', vertical: 'top' };\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n return align;\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, guid, kendoThemeMaps, Keys } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport { ButtonItem } from './ButtonItem';\nimport { SplitButtonItem } from './SplitButtonItem';\nimport { navigate as navigation } from './utils/navigation';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact SplitButton component]({% slug overview_splitbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n __extends(SplitButton, _super);\n function SplitButton(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n focused: false,\n focusedIndex: -1,\n opened: false\n };\n _this.wrapper = null;\n _this.mainButton = null;\n _this.guid = guid();\n _this.buttonsData = [];\n _this.onKeyDown = function (event) {\n var focusedIndex = _this.state.focusedIndex;\n if (event.altKey) {\n if (!_this.opened && event.keyCode === Keys.down) {\n _this.dispatchPopupEvent(event, true);\n _this.setState({ focusedIndex: 0, opened: true });\n }\n else if (_this.opened && event.keyCode === Keys.up) {\n _this.dispatchPopupEvent(event, false);\n _this.setState({ focusedIndex: -1, opened: false });\n }\n return;\n }\n var newState = undefined;\n if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n // Prevent default because otherwise when an item is selected\n // click on the default button gets emitted which opens the popup again.\n event.preventDefault();\n _this.dispatchClickEvent(event, focusedIndex);\n if (focusedIndex >= 0) {\n newState = {\n focusedIndex: _this.opened ? -1 : 0,\n opened: !_this.opened\n };\n _this.dispatchPopupEvent(event, newState.opened);\n }\n }\n else if (_this.opened && event.keyCode === Keys.esc) {\n newState = {\n focusedIndex: -1,\n opened: false\n };\n _this.dispatchPopupEvent(event, newState.opened);\n }\n if (_this.opened) {\n var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n if (newFocused !== focusedIndex) {\n newState = newState || {};\n newState.focusedIndex = newFocused;\n }\n var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down ||\n event.keyCode === Keys.left || event.keyCode === Keys.right;\n if (!event.altKey && arrowKey) {\n // Needed to notify the parent listeners that event is handled.\n event.preventDefault();\n }\n }\n if (newState) {\n _this.setState(newState);\n }\n };\n _this.onFocus = function (event) {\n dispatchEvent(_this.props.onFocus, event, _this, undefined);\n _this.setState({ focused: true, focusedIndex: -1 });\n };\n _this.onItemClick = function (event, clickedItemIndex) {\n var opened = _this.opened;\n if (opened) {\n _this.setState({ focusedIndex: 0, opened: false });\n }\n _this.dispatchClickEvent(event, clickedItemIndex);\n if (opened) {\n _this.dispatchPopupEvent(event, false);\n }\n };\n _this.onBlur = function (event) {\n _this.setState({\n focused: false,\n focusedIndex: -1,\n opened: false\n });\n dispatchEvent(_this.props.onBlur, event, _this, undefined);\n if (_this.opened) {\n _this.dispatchPopupEvent(event, false);\n }\n };\n _this.onSplitPartClick = function (event) {\n if (_this.buttonsData.length) {\n var toOpen = !_this.opened;\n _this.dispatchPopupEvent(event, toOpen);\n _this.setState({\n focusedIndex: toOpen ? 0 : -1,\n opened: toOpen,\n focused: true\n });\n }\n };\n _this.onDownSplitPart = function (event) {\n event.preventDefault();\n if (_this.element && document.activeElement !== _this.element) {\n _this.element.focus();\n }\n };\n _this.onItemDown = function (event) {\n if (document.activeElement === _this.element) {\n event.preventDefault();\n }\n };\n _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(SplitButton.prototype, \"opened\", {\n get: function () {\n return this.props.opened === undefined ? this.state.opened : this.props.opened;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n SplitButton.prototype.render = function () {\n var _this = this;\n this.buttonsData = this.props.items ||\n React.Children.toArray(this.props.children)\n .filter(function (child) { return child && child.type === SplitButtonItem; })\n .map(function (child) { return child.props; });\n var rtl = this.isRtl();\n var dir = rtl ? 'rtl' : undefined;\n var _a = this.props, id = _a.id, style = _a.style, tabIndex = _a.tabIndex, disabled = _a.disabled;\n var focusedIndex = this.state.focusedIndex;\n return (React.createElement(\"div\", { id: id, style: style, className: classNames('k-split-button', 'k-button-group', {\n 'k-focus': this.state.focused\n }, \"k-rounded-\".concat(kendoThemeMaps.roundedMap[this.props.rounded || 'medium']), this.props.className), onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, dir: dir, ref: function (el) { return _this.wrapper = el; } },\n React.createElement(Button, { ref: function (el) { return _this.mainButton = el && el.element; }, type: \"button\", size: this.props.size, rounded: this.props.rounded, fillMode: this.props.fillMode, themeColor: this.props.themeColor, onClick: function (event) { return _this.onItemClick(event, -1); }, disabled: disabled || undefined, tabIndex: tabIndex, accessKey: this.props.accessKey, className: this.props.buttonClass, icon: this.props.icon, iconClass: this.props.iconClass, imageUrl: this.props.imageUrl, dir: dir, \"aria-disabled\": disabled, \"aria-haspopup\": true, \"aria-expanded\": this.opened, \"aria-label\": \"\".concat(this.props.text, \" splitbutton\"), \"aria-owns\": this.guid, \"aria-activedescendant\": focusedIndex >= 0 ? \"\".concat(this.guid, \"-\").concat(focusedIndex) : undefined }, this.props.text),\n React.createElement(Button, { type: \"button\", size: this.props.size, rounded: this.props.rounded, fillMode: this.props.fillMode, themeColor: this.props.themeColor, icon: \"arrow-s\", className: \"k-split-button-arrow\", disabled: disabled || undefined, tabIndex: -1, onClick: this.onSplitPartClick, onMouseDown: this.onDownSplitPart, onPointerDown: this.onDownSplitPart, dir: dir, \"aria-label\": \"menu toggling button\" }),\n this.renderPopup(rtl)));\n };\n /**\n * @hidden\n */\n SplitButton.prototype.componentDidMount = function () {\n // If this.props.opened is true during the initial render, the popup is not aligned.\n if ((this.props.dir === undefined && this.isRtl()) || this.opened) {\n this.forceUpdate();\n }\n };\n Object.defineProperty(SplitButton.prototype, \"element\", {\n /**\n * The DOM element of main button.\n */\n get: function () {\n return this.mainButton;\n },\n enumerable: false,\n configurable: true\n });\n SplitButton.prototype.dispatchClickEvent = function (dispatchedEvent, clickedItemIndex) {\n if (!this.isItemDisabled(clickedItemIndex)) {\n if (clickedItemIndex === -1) {\n dispatchEvent(this.props.onButtonClick, dispatchedEvent, this, undefined);\n }\n else {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n item: this.buttonsData[clickedItemIndex],\n itemIndex: clickedItemIndex\n });\n }\n }\n };\n SplitButton.prototype.renderPopup = function (rtl) {\n var _a;\n var _b = this.props.popupSettings, popupSettings = _b === void 0 ? {} : _b;\n return (React.createElement(Popup, { anchor: this.wrapper, show: this.opened, animate: popupSettings.animate, popupClass: classNames('k-menu-popup', popupSettings.popupClass), anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl), popupAlign: popupSettings.popupAlign || getPopupAlign(rtl), style: rtl ? { direction: 'rtl' } : undefined },\n React.createElement(\"ul\", { role: \"menu\", id: this.guid, className: classNames('k-group k-menu-group k-reset', (_a = {},\n _a[\"k-menu-group-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a)) }, this.renderChildItems())));\n };\n SplitButton.prototype.renderChildItems = function () {\n var _this = this;\n var _a = this.props, item = _a.item, itemRender = _a.itemRender, textField = _a.textField;\n return this.buttonsData.length > 0 ? (this.buttonsData.map(function (dataItem, index) {\n return (React.createElement(ButtonItem, { className: \"k-menu-item\", dataItem: dataItem, textField: textField, focused: _this.state.focusedIndex === index, onClick: _this.onItemClick, onDown: _this.onItemDown, render: itemRender, item: item, key: index, index: index, id: \"\".concat(_this.guid, \"-\").concat(index) }));\n })) : null;\n };\n SplitButton.prototype.isItemDisabled = function (index) {\n return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n };\n SplitButton.prototype.isRtl = function () {\n return this.props.dir !== undefined ? this.props.dir === 'rtl' :\n !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n };\n /**\n * @hidden\n */\n SplitButton.propTypes = {\n accessKey: PropTypes.string,\n onButtonClick: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onItemClick: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n text: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.any),\n textField: PropTypes.string,\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n popupSettings: PropTypes.object,\n itemRender: PropTypes.any,\n item: PropTypes.func,\n className: PropTypes.string,\n buttonClass: PropTypes.string,\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n SplitButton.defaultProps = {\n size: 'medium',\n rounded: 'medium',\n shape: 'rectangle',\n fillMode: 'solid',\n themeColor: 'base'\n };\n return SplitButton;\n}(React.Component));\nexport { SplitButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { EditorToolsSettings } from '../config/toolsSettings';\nimport { InsertTableToolNS, InsertTablePopupNS } from './insertTable';\nimport * as AlignTool from './align';\nimport { FontStyleToolNS } from './fontStyle';\nimport { ApplyColorTool } from './applyColor';\nimport { FormatBlockToolNS } from './formatBlock';\nimport { HistoryToolNS } from './history';\nimport { IndentToolNS } from './indent';\nimport { InlineFormatToolNS } from './inlineFormat';\nimport * as InsertImageTool from './insertImage';\nimport { LinkToolNS } from './insertLink';\nimport { ListToolNS } from './lists';\nimport { OutdentToolNS } from './outdent';\nimport { TableEditNS } from './tableEdit';\nimport { UnlinkToolNS } from './unlink';\nimport { ViewHtmlToolNS } from './viewHtml';\nimport { Print as PrintTool } from './print';\nimport { Pdf as PdfTool } from './pdf';\nimport { SelectAll as SelectAllTool } from './selectAll';\nimport { CleanFormatting as CleanFormattingTool } from './cleanFormatting';\nimport { FindAndReplace as FindAndReplaceTool } from './findReplace';\nimport { ListTool } from './lists-styled';\n/**\n * Represents a wrapping namespace for the tool components, props, and functions of the Editor.\n */\nexport var EditorTools;\n(function (EditorTools) {\n /**\n * Creates the Align tool component of the Editor.\n *\n * @param {AlignSettings} settings\n * @returns {React.ComponentClass} - Editor's Align tool component.\n */\n function createAlignTool(settings) { return AlignTool.createAlignTool(settings); }\n EditorTools.createAlignTool = createAlignTool;\n /**\n * The AlignLeft tool component.\n */\n var AlignLeft = /** @class */ (function (_super) {\n __extends(AlignLeft, _super);\n function AlignLeft() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AlignLeft;\n }(createAlignTool(EditorToolsSettings.alignLeft)));\n EditorTools.AlignLeft = AlignLeft;\n /**\n * The AlignRight tool component.\n */\n var AlignRight = /** @class */ (function (_super) {\n __extends(AlignRight, _super);\n function AlignRight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AlignRight;\n }(createAlignTool(EditorToolsSettings.alignRight)));\n EditorTools.AlignRight = AlignRight;\n /**\n * The AlignCenter tool component.\n */\n var AlignCenter = /** @class */ (function (_super) {\n __extends(AlignCenter, _super);\n function AlignCenter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AlignCenter;\n }(createAlignTool(EditorToolsSettings.alignCenter)));\n EditorTools.AlignCenter = AlignCenter;\n /**\n * The AlignJustify tool component.\n */\n var AlignJustify = /** @class */ (function (_super) {\n __extends(AlignJustify, _super);\n function AlignJustify() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AlignJustify;\n }(createAlignTool(EditorToolsSettings.alignJustify)));\n EditorTools.AlignJustify = AlignJustify;\n /**\n * Creates the InsertTable tool component of the Editor.\n *\n * @param {InsertTableSettings} - The settings of the InsertTable tool.\n * @returns {React.ComponentClass} - The InsertTable tool component of the Editor.\n */\n function createInsertTableTool(settings) { return InsertTableToolNS.createInsertTableTool(settings); }\n EditorTools.createInsertTableTool = createInsertTableTool;\n /**\n * The InsertTable tool component.\n */\n var InsertTable = /** @class */ (function (_super) {\n __extends(InsertTable, _super);\n function InsertTable() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertTable;\n }(createInsertTableTool(EditorToolsSettings.insertTable)));\n EditorTools.InsertTable = InsertTable;\n /**\n * The `InsertTablePopup` component.\n */\n var InsertTablePopup = /** @class */ (function (_super) {\n __extends(InsertTablePopup, _super);\n function InsertTablePopup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertTablePopup;\n }(InsertTablePopupNS.InsertTablePopup));\n EditorTools.InsertTablePopup = InsertTablePopup;\n /**\n * Creates the DropDownList tool component of the Editor which applies inline styles to inline HTML elements.\n *\n * @param {StyleDropDownListSettings} settings\n * @returns {React.ComponentClass} - The DropDownList tool component of the Editor.\n */\n function createStyleDropDownList(settings) { return FontStyleToolNS.createStyleDropDownList(settings); }\n EditorTools.createStyleDropDownList = createStyleDropDownList;\n /**\n * The FontSize tool component.\n */\n var FontSize = /** @class */ (function (_super) {\n __extends(FontSize, _super);\n function FontSize() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FontSize;\n }(createStyleDropDownList(EditorToolsSettings.fontSize)));\n EditorTools.FontSize = FontSize;\n /**\n * The FontName tool component.\n */\n var FontName = /** @class */ (function (_super) {\n __extends(FontName, _super);\n function FontName() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FontName;\n }(createStyleDropDownList(EditorToolsSettings.fontName)));\n EditorTools.FontName = FontName;\n /**\n * The ForeColor tool component.\n */\n EditorTools.ForeColor = function (props) {\n return React.createElement(ApplyColorTool, __assign({}, EditorToolsSettings.foreColor, props));\n };\n /**\n * The BackColor tool component.\n */\n EditorTools.BackColor = function (props) {\n return React.createElement(ApplyColorTool, __assign({}, EditorToolsSettings.backColor, props));\n };\n /**\n * Creates the FormatBlock tool component of the Editor.\n *\n * @param {FormatBlockDropDownListSettings} settings\n * @returns {React.ComponentClass} - The FormatBlock tool component of the Editor.\n */\n function createFormatBlockDropDownList(settings) { return FormatBlockToolNS.createFormatBlockDropDownList(settings); }\n EditorTools.createFormatBlockDropDownList = createFormatBlockDropDownList;\n /**\n * The FormatBlock tool component.\n */\n var FormatBlock = /** @class */ (function (_super) {\n __extends(FormatBlock, _super);\n function FormatBlock() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FormatBlock;\n }(createFormatBlockDropDownList(EditorToolsSettings.formatBlock)));\n EditorTools.FormatBlock = FormatBlock;\n /**\n * Creates the Undo tool component of the Editor.\n *\n * @param {ToolSettings} settings\n * @returns {React.ComponentClass} - The Undo tool component of the Editor.\n */\n function createUndoTool(settings) { return HistoryToolNS.createUndoTool(settings); }\n EditorTools.createUndoTool = createUndoTool;\n /**\n * Creates the Redo tool component of the Editor.\n *\n * @param {ToolSettings} settings\n * @returns {React.ComponentClass} - The Redo tool component of the Editor.\n */\n function createRedoTool(settings) { return HistoryToolNS.createRedoTool(settings); }\n EditorTools.createRedoTool = createRedoTool;\n /**\n * The Undo tool component of the Editor.\n */\n var Undo = /** @class */ (function (_super) {\n __extends(Undo, _super);\n function Undo() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Undo;\n }(createUndoTool(EditorToolsSettings.undo)));\n EditorTools.Undo = Undo;\n /**\n * The Redo tool component of the Editor.\n */\n var Redo = /** @class */ (function (_super) {\n __extends(Redo, _super);\n function Redo() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Redo;\n }(createRedoTool(EditorToolsSettings.redo)));\n EditorTools.Redo = Redo;\n /**\n * Creates the Indent tool component of the Editor.\n *\n * @param {IndentationSettings} settings\n * @returns {React.ComponentClass} - The Indent tool component of the Editor.\n */\n function createIndentTool(settings) { return IndentToolNS.createIndentTool(settings); }\n EditorTools.createIndentTool = createIndentTool;\n /**\n * The Indent tool component.\n */\n var Indent = /** @class */ (function (_super) {\n __extends(Indent, _super);\n function Indent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Indent;\n }(createIndentTool(EditorToolsSettings.indent)));\n EditorTools.Indent = Indent;\n /**\n * Creates the InlineFormat tool component of the Editor.\n *\n * @param {InlineFormatSettings} settings\n * @returns {React.ComponentClass} - Editor's InlineFormat tool component.\n */\n function createInlineFormatTool(settings) {\n return InlineFormatToolNS.createInlineFormatTool(settings);\n }\n EditorTools.createInlineFormatTool = createInlineFormatTool;\n /**\n * The Bold tool component.\n */\n var Bold = /** @class */ (function (_super) {\n __extends(Bold, _super);\n function Bold() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Bold;\n }(createInlineFormatTool(EditorToolsSettings.bold)));\n EditorTools.Bold = Bold;\n /**\n * The Italic tool component.\n */\n var Italic = /** @class */ (function (_super) {\n __extends(Italic, _super);\n function Italic() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Italic;\n }(createInlineFormatTool(EditorToolsSettings.italic)));\n EditorTools.Italic = Italic;\n /**\n * The Underline tool component.\n */\n var Underline = /** @class */ (function (_super) {\n __extends(Underline, _super);\n function Underline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Underline;\n }(createInlineFormatTool(EditorToolsSettings.underline)));\n EditorTools.Underline = Underline;\n /**\n * The Strikethrough tool component.\n */\n var Strikethrough = /** @class */ (function (_super) {\n __extends(Strikethrough, _super);\n function Strikethrough() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Strikethrough;\n }(createInlineFormatTool(EditorToolsSettings.strikethrough)));\n EditorTools.Strikethrough = Strikethrough;\n /**\n * The Subscript tool component.\n */\n var Subscript = /** @class */ (function (_super) {\n __extends(Subscript, _super);\n function Subscript() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Subscript;\n }(createInlineFormatTool(EditorToolsSettings.subscript)));\n EditorTools.Subscript = Subscript;\n /**\n * The Superscript tool component.\n */\n var Superscript = /** @class */ (function (_super) {\n __extends(Superscript, _super);\n function Superscript() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Superscript;\n }(createInlineFormatTool(EditorToolsSettings.superscript)));\n EditorTools.Superscript = Superscript;\n /**\n * Creates the InsertImage tool component of the Editor.\n *\n * @param {ImageSettings} settings\n * @returns {React.ComponentClass} - The InsertImage tool component of the Editor.\n */\n function createInsertImageTool(settings) { return InsertImageTool.createInsertImageTool(settings); }\n EditorTools.createInsertImageTool = createInsertImageTool;\n /**\n * The InsertImage tool component.\n */\n var InsertImage = /** @class */ (function (_super) {\n __extends(InsertImage, _super);\n function InsertImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertImage;\n }(createInsertImageTool(EditorToolsSettings.image)));\n EditorTools.InsertImage = InsertImage;\n /**\n * Creates the Link tool component of the Editor.\n *\n * @param {LinkSettings} settings\n * @returns {React.ComponentClass} - The Link tool component of the Editor.\n */\n function createLinkTool(settings) { return LinkToolNS.createLinkTool(settings); }\n EditorTools.createLinkTool = createLinkTool;\n /**\n * The Link tool component.\n */\n var Link = /** @class */ (function (_super) {\n __extends(Link, _super);\n function Link() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Link;\n }(createLinkTool(EditorToolsSettings.link)));\n EditorTools.Link = Link;\n /**\n * The InsertFile tool component.\n */\n var InsertFile = /** @class */ (function (_super) {\n __extends(InsertFile, _super);\n function InsertFile() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertFile;\n }(createLinkTool(EditorToolsSettings.insertFile)));\n EditorTools.InsertFile = InsertFile;\n /**\n * Creates the List tool component of the Editor.\n *\n * @param {ToolSettings} settings\n * @returns {React.ComponentClass} - The List tool component of the Editor.\n */\n function createListTool(settings) { return ListToolNS.createListTool(settings); }\n EditorTools.createListTool = createListTool;\n /**\n * The basic OrderedList tool component. Will render a button which applies `
      ` HTML element.\n */\n var OrderedList = /** @class */ (function (_super) {\n __extends(OrderedList, _super);\n function OrderedList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return OrderedList;\n }(createListTool(EditorToolsSettings.orderedList)));\n EditorTools.OrderedList = OrderedList;\n /**\n * The basic UnorderedList tool component. Will render a button which applies `
        ` HTML element.\n */\n var UnorderedList = /** @class */ (function (_super) {\n __extends(UnorderedList, _super);\n function UnorderedList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return UnorderedList;\n }(createListTool(EditorToolsSettings.bulletList)));\n EditorTools.UnorderedList = UnorderedList;\n /**\n * The BulletedList tool component.\n * Will render a SplitButton which applies `
          ` HTML element with predefined styles - disc and square.\n */\n EditorTools.BulletedList = function (props) {\n var ulItems = [\n { icon: 'list-unordered', text: 'Disc', style: 'disc' },\n { icon: 'list-unordered-outline', text: 'Circle', style: 'circle' },\n { icon: 'list-unordered-square', text: 'Square', style: 'square' }\n ];\n return (React.createElement(ListTool, __assign({ listType: EditorToolsSettings.bulletList.listType, items: ulItems, icon: \"list-unordered\" }, props)));\n };\n /**\n * The NumberedList tool component.\n * Will render a SplitButton which applies `
            ` HTML element with predefined styles - upper-roman, lower-roman, upper-latin and lower-latin.\n */\n EditorTools.NumberedList = function (props) {\n var olItems = [\n { icon: 'list-ordered', text: 'Decimal' },\n // { icon: 'list-leading-zero', text: 'Decimal with leading zero', styleType: 'decimal-leading-zero' },\n { icon: 'list-roman-upper', text: 'Upper roman', style: 'upper-roman' },\n { icon: 'list-roman-lower', text: 'Lower roman', style: 'lower-roman' },\n { icon: 'list-latin-big', text: 'Upper latin', style: 'upper-latin' },\n { icon: 'list-latin-small', text: 'Lower latin', style: 'lower-latin' }\n ];\n return (React.createElement(ListTool, __assign({ listType: EditorToolsSettings.orderedList.listType, items: olItems, icon: \"list-ordered\" }, props)));\n };\n /**\n * Creates the Outdent tool component of the Editor.\n *\n * @param {IndentationSettings} settings\n * @returns {React.ComponentClass} - The Outdent tool component of the Editor.\n */\n function createOutdentTool(settings) { return OutdentToolNS.createOutdentTool(settings); }\n EditorTools.createOutdentTool = createOutdentTool;\n /**\n * The Outdent tool component.\n */\n var Outdent = /** @class */ (function (_super) {\n __extends(Outdent, _super);\n function Outdent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Outdent;\n }(createOutdentTool(EditorToolsSettings.outdent)));\n EditorTools.Outdent = Outdent;\n /**\n * The Print tool component.\n * Designed to work only if Editor's defaultEditMode prop is set to 'iframe'.\n */\n EditorTools.Print = function (props) { return React.createElement(PrintTool, __assign({}, props)); };\n /**\n * The Export to PDF tool component.\n *\n * To modify the default PDF export options, see the following example:\n *\n * @example\n * ```tsx-no-run\n * import { Editor, EditorTools } from '@progress/kendo-react-editor';\n * const { Bold, Italic, Pdf } = EditorTools;\n *\n * const PdfTool = (props: EditorTools.PdfProps) => (\n * \n * );\n *\n * class App extends React.Component {\n * render() {\n * return (\n * text

            \"\n * />\n * );\n * }\n * }\n * ```\n */\n EditorTools.Pdf = function (props) { return React.createElement(PdfTool, __assign({}, props)); };\n /**\n * The SelectAll tool component.\n */\n EditorTools.SelectAll = function (props) { return React.createElement(SelectAllTool, __assign({}, props)); };\n /**\n * The CleanFormatting tool component.\n */\n EditorTools.CleanFormatting = function (props) { return React.createElement(CleanFormattingTool, __assign({}, props)); };\n /**\n * Creates the AddRowBefore tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the AddRowBefore tool.\n * @returns {React.ComponentClass} - The AddRowBefore tool component of the Editor.\n */\n function createAddRowBeforeTool(settings) { return TableEditNS.createAddRowBeforeTool(settings); }\n EditorTools.createAddRowBeforeTool = createAddRowBeforeTool;\n /**\n * Creates the AddRowAfter tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the AddRowAfter tool.\n * @returns {React.ComponentClass} - The AddRowAfter tool component of the Editor.\n */\n function createAddRowAfterTool(settings) { return TableEditNS.createAddRowAfterTool(settings); }\n EditorTools.createAddRowAfterTool = createAddRowAfterTool;\n /**\n * Creates the AddColumnBefore tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the AddColumnBefore tool.\n * @returns {React.ComponentClass} - The AddColumnBefore tool component of the Editor.\n */\n function createAddColumnBeforeTool(settings) {\n return TableEditNS.createAddColumnBeforeTool(settings);\n }\n EditorTools.createAddColumnBeforeTool = createAddColumnBeforeTool;\n /**\n * Creates the AddColumnAfter tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the AddColumnAfter tool.\n * @returns {React.ComponentClass} - The AddColumnAfter tool component of the Editor.\n */\n function createAddColumnAfterTool(settings) { return TableEditNS.createAddColumnAfterTool(settings); }\n EditorTools.createAddColumnAfterTool = createAddColumnAfterTool;\n /**\n * Creates the DeleteRow tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the DeleteRow tool.\n * @returns {React.ComponentClass} - The DeleteRow tool component of the Editor.\n */\n function createDeleteRowTool(settings) { return TableEditNS.createDeleteRowTool(settings); }\n EditorTools.createDeleteRowTool = createDeleteRowTool;\n /**\n * Creates the DeleteColumn tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the DeleteColumn tool.\n * @returns {React.ComponentClass} - The DeleteColumn tool component of the Editor.\n */\n function createDeleteColumnTool(settings) { return TableEditNS.createDeleteColumnTool(settings); }\n EditorTools.createDeleteColumnTool = createDeleteColumnTool;\n /**\n * Creates the DeleteTable tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the DeleteTable tool.\n * @returns {React.ComponentClass} - The DeleteTable tool component of the Editor.\n */\n function createDeleteTableTool(settings) { return TableEditNS.createDeleteTableTool(settings); }\n EditorTools.createDeleteTableTool = createDeleteTableTool;\n /**\n * Creates the MergeCells tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the MergeCells tool\n * @returns {React.ComponentClass} - The MergeCells tool component of the Editor.\n */\n function createMergeCellsTool(settings) { return TableEditNS.createMergeCellsTool(settings); }\n EditorTools.createMergeCellsTool = createMergeCellsTool;\n /**\n * Creates the SplitCell tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the SplitCell tool.\n * @returns {React.ComponentClass} - The SplitCell tool component of the Editor.\n */\n function createSplitCellTool(settings) { return TableEditNS.createSplitCellTool(settings); }\n EditorTools.createSplitCellTool = createSplitCellTool;\n /**\n * The AddRowBefore tool component.\n */\n var AddRowBefore = /** @class */ (function (_super) {\n __extends(AddRowBefore, _super);\n function AddRowBefore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AddRowBefore;\n }(createAddRowBeforeTool(EditorToolsSettings.addRowBefore)));\n EditorTools.AddRowBefore = AddRowBefore;\n /**\n * The AddRowAfter tool component.\n */\n var AddRowAfter = /** @class */ (function (_super) {\n __extends(AddRowAfter, _super);\n function AddRowAfter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AddRowAfter;\n }(createAddRowAfterTool(EditorToolsSettings.addRowAfter)));\n EditorTools.AddRowAfter = AddRowAfter;\n /**\n * The AddColumnBefore tool component.\n */\n var AddColumnBefore = /** @class */ (function (_super) {\n __extends(AddColumnBefore, _super);\n function AddColumnBefore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AddColumnBefore;\n }(createAddColumnBeforeTool(EditorToolsSettings.addColumnBefore)));\n EditorTools.AddColumnBefore = AddColumnBefore;\n /**\n * The AddColumnAfter tool component.\n */\n var AddColumnAfter = /** @class */ (function (_super) {\n __extends(AddColumnAfter, _super);\n function AddColumnAfter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AddColumnAfter;\n }(createAddColumnAfterTool(EditorToolsSettings.addColumnAfter)));\n EditorTools.AddColumnAfter = AddColumnAfter;\n /**\n * The DeleteRow tool component.\n */\n var DeleteRow = /** @class */ (function (_super) {\n __extends(DeleteRow, _super);\n function DeleteRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return DeleteRow;\n }(createDeleteRowTool(EditorToolsSettings.deleteRow)));\n EditorTools.DeleteRow = DeleteRow;\n /**\n * The DeleteColumn tool component.\n */\n var DeleteColumn = /** @class */ (function (_super) {\n __extends(DeleteColumn, _super);\n function DeleteColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return DeleteColumn;\n }(createDeleteColumnTool(EditorToolsSettings.deleteColumn)));\n EditorTools.DeleteColumn = DeleteColumn;\n /**\n * The DeleteTable tool component.\n */\n var DeleteTable = /** @class */ (function (_super) {\n __extends(DeleteTable, _super);\n function DeleteTable() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return DeleteTable;\n }(createDeleteTableTool(EditorToolsSettings.deleteTable)));\n EditorTools.DeleteTable = DeleteTable;\n /**\n * The MergeCells tool component.\n */\n var MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return MergeCells;\n }(createMergeCellsTool(EditorToolsSettings.mergeCells)));\n EditorTools.MergeCells = MergeCells;\n /**\n * The SplitCell tool component.\n */\n var SplitCell = /** @class */ (function (_super) {\n __extends(SplitCell, _super);\n function SplitCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return SplitCell;\n }(createSplitCellTool(EditorToolsSettings.splitCell)));\n EditorTools.SplitCell = SplitCell;\n /**\n * Creates the Unlink tool component of the Editor.\n *\n * @param {UnlinkSettings} settings\n * @returns {React.ComponentClass} - The Unlink tool component of the Editor.\n */\n function createUnlinkTool(settings) { return UnlinkToolNS.createUnlinkTool(settings); }\n EditorTools.createUnlinkTool = createUnlinkTool;\n /**\n * The Unlink tool component.\n */\n var Unlink = /** @class */ (function (_super) {\n __extends(Unlink, _super);\n function Unlink() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Unlink;\n }(createUnlinkTool(EditorToolsSettings.unlink)));\n EditorTools.Unlink = Unlink;\n /**\n * Creates the ViewHtml tool component of the Editor.\n *\n * @param {ViewHtmlSettings} settings\n * @returns {React.ComponentClass} - The ViewHtml tool component of the Editor.\n */\n function createViewHtmlTool(settings) { return ViewHtmlToolNS.createViewHtmlTool(settings); }\n EditorTools.createViewHtmlTool = createViewHtmlTool;\n /**\n * The ViewHtml tool component.\n */\n var ViewHtml = /** @class */ (function (_super) {\n __extends(ViewHtml, _super);\n function ViewHtml() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return ViewHtml;\n }(createViewHtmlTool(EditorToolsSettings.viewHtml)));\n EditorTools.ViewHtml = ViewHtml;\n /**\n * The FindAndReplace tool component.\n */\n var FindAndReplace = /** @class */ (function (_super) {\n __extends(FindAndReplace, _super);\n function FindAndReplace() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FindAndReplace;\n }(FindAndReplaceTool));\n EditorTools.FindAndReplace = FindAndReplace;\n})(EditorTools || (EditorTools = {}));\n","import { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar navigate = function (focusedIndex, keyCode, altKey, total) {\n if (altKey) {\n return focusedIndex;\n }\n switch (keyCode) {\n case Keys.enter:\n case Keys.space:\n case Keys.esc:\n return -1;\n case Keys.up:\n case Keys.left:\n return Math.max(0, focusedIndex - 1);\n case Keys.down:\n case Keys.right:\n return Math.min(total - 1, focusedIndex + 1);\n default:\n return focusedIndex;\n }\n};\nexport { navigate };\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};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { toggleList, listStyle } from '@progress/kendo-editor-common';\nimport { SplitButton } from '@progress/kendo-react-buttons';\nimport { listsTypes } from './../config/toolsSettings';\nvar parentNode = function (state, nodeType) {\n var _a = state.selection, from = _a.from, to = _a.to;\n var result = null;\n state.doc.nodesBetween(from, to, function (node) {\n result = result || (node.type === nodeType ? node : null);\n return !result;\n });\n return result;\n};\n/**\n * @hidden\n */\nexport var ListTool = function (props) {\n var isActive = false;\n var view = props.view;\n var types = listsTypes;\n var listType = props.listType;\n var items = __spreadArray([], (props.items || []), true);\n var ol, ul;\n if (view) {\n var state = view.state;\n var nodes = state && state.schema.nodes;\n ol = nodes && parentNode(state, nodes[types.orderedList]);\n ul = nodes && parentNode(state, nodes[types.bulletList]);\n isActive = Boolean(listType === types.orderedList ? (ol && !ul) : (!ol && ul));\n }\n var onButtonClick = function (_event) {\n if (view) {\n toggleList(view.state, view.dispatch, view, __assign(__assign({ listType: listType }, types), { listAttrs: {} }), 'InsertList');\n view.focus();\n }\n };\n var onItemClick = function (event) {\n if (view) {\n var listAttrs = event.item.style ? { style: 'list-style-type: ' + event.item.style + ';' } : {};\n var currentList = ol || ul;\n if (currentList && listStyle(currentList.attrs) !== event.item.style) {\n var pos = view.state.selection.$head.posAtIndex(0, -2) - 1;\n view.dispatch(view.state.tr.setNodeMarkup(pos, view.state.schema.nodes[listType], listAttrs));\n }\n else {\n toggleList(view.state, view.dispatch, view, __assign(__assign({ listType: listType }, types), { listAttrs: listAttrs }), 'InsertList');\n }\n view.focus();\n }\n };\n if (isActive && (ol || ul)) {\n var listStyleType_1 = listStyle((ol || ul).attrs);\n items = items.map(function (item, index) { return (__assign(__assign({}, item), { selected: listStyleType_1 ? item.style === listStyleType_1 : index === 0 })); });\n }\n return (React.createElement(\"span\", { onMouseDown: function (e) { e.preventDefault(); } },\n React.createElement(SplitButton, { textField: \"text\", items: items, icon: props.icon, onButtonClick: onButtonClick, onItemClick: onItemClick, buttonClass: isActive ? 'k-selected' : 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * as PropTypes from 'prop-types';\n/**\n * Represents the KendoReact ToolbarItem component.\n * To add a tool to the Toolbar, wrap it inside a ToolbarItem component\n * ([see example]({% slug content_toolbar %})).\n */\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n return _this;\n }\n Object.defineProperty(ToolbarItem.prototype, \"element\", {\n /**\n * Returns the HTML element of the ToolbarItem component.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n ToolbarItem.prototype.render = function () {\n var _this = this;\n return (React.createElement(\"span\", { id: this.props.id, className: this.props.className, style: this.props.style, ref: function (e) { return _this._element = e; } }, this.props.children));\n };\n /**\n * @hidden\n */\n ToolbarItem.propTypes = {\n className: PropTypes.string\n };\n return ToolbarItem;\n}(React.PureComponent));\nexport { ToolbarItem };\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 * as shortcuts from './../config/shortcuts';\nimport { marks as schemaMarks, nodes as schemaNodes } from './../config/schema';\nimport { alignBlocks as alignBlocksCommon, applyInlineStyle as applyInlineStyleCommon, applyLink as applyLinkCommon, canIndentAsListItem, canOutdentAsListItem, parseContent, canInsert as canInsertCommon, createTable as createTableCommon, formatBlockElements as formatBlockElementsCommon, getBlockFormats as getBlockFormatsCommon, getHtml as getHtmlCommon, getInlineStyles as getInlineStylesCommon, getMark as getMarkCommon, hasMark as hasMarkCommon, hasNode as hasNodeCommon, indentBlocks as indentBlocksCommon, setHtml as setHtmlCommon, insertNode as insertNodeCommon, isAligned as isAlignedCommon, isIndented as isIndentedCommon, toggleInlineFormat as toggleInlineFormatCommon, toggleList as toggleListCommon, indentHtml as indentHtmlCommon, convertMsLists as convertMsListsCommon, removeComments as removeCommentsCommon, removeTag as removeTagCommon, sanitize as sanitizeCommon, pasteCleanup as pasteCleanupCommon, sanitizeClassAttr as sanitizeClassAttrCommon, sanitizeStyleAttr as sanitizeStyleAttrCommon, removeAttribute as removeAttributeCommon, replaceImageSourcesFromRtf as replaceImageSourcesFromRtfCommon, textHighlight as textHighlightCommon, imageResizing as imageResizingCommon, imageResizeKey as imageResizeKeyCommon, tableResizing as tableResizingCommon, trimWhitespace } from '@progress/kendo-editor-common';\nimport { editorPropsKey } from './props-key';\n/**\n * Represents a wrapping namespace for the utility functions, `nodes`, and `marks` objects of the Editor.\n */\nexport var EditorUtils;\n(function (EditorUtils) {\n /**\n * Aligns the block elements in the selection.\n *\n * @returns {boolean}—If alignment is applied to any of the elements, returns `true`.\n */\n function alignBlocks(view, actions, command) {\n return Boolean(alignBlocksCommon(actions, command)(view.state, view.dispatch));\n }\n EditorUtils.alignBlocks = alignBlocks;\n /**\n * Wraps the selection in a `span` element with inline styles.\n *\n * @returns {boolean}—If a style is applied to any of the elements, returns `true`.\n */\n function applyInlineStyle(view, options, command) {\n return applyInlineStyleCommon(options, command)(view.state, view.dispatch);\n }\n EditorUtils.applyInlineStyle = applyInlineStyle;\n /**\n * Applies the link mark.\n *\n * @returns {boolean}—If the link is applied, returns `true`.\n */\n function applyLink(view, options, command) {\n return applyLinkCommon(options, command)(view.state, view.dispatch);\n }\n EditorUtils.applyLink = applyLink;\n /**\n * Checks if any of the `list` elements in the selection can be indented.\n *\n * @returns {boolean}\n */\n function canIndentList(state, nodeType) {\n return canIndentAsListItem(state, nodeType);\n }\n EditorUtils.canIndentList = canIndentList;\n /**\n * Checks if a node can be inserted in the current selection.\n *\n * @param {EditorState} state—The `state` object of the Editor.\n * @param {NodeType} nodeType—The type of the node that will be inserted.\n * @returns {boolean}—The node of this type can be inserted in the current selection.\n */\n function canInsert(state, nodeType) {\n return canInsertCommon(state, nodeType);\n }\n EditorUtils.canInsert = canInsert;\n /**\n * Checks if any of the `list` elements in the selection can be outdented.\n *\n * @returns {boolean}\n */\n function canOutdentList(state, listsTypes) {\n return canOutdentAsListItem(state, { listsTypes: listsTypes, nodes: [] });\n }\n EditorUtils.canOutdentList = canOutdentList;\n /**\n * Converts the MS Word lists into HTML lists.\n *\n * @param {string} html—The input HTML.\n * @returns {string}—The result HTML.\n */\n function convertMsLists(html) {\n return convertMsListsCommon(html);\n }\n EditorUtils.convertMsLists = convertMsLists;\n /**\n * Creates an Editor document from HTML content.\n *\n * @param {Schema} schema—The `schema` object of the Editor.\n * @param {string} html—The HTML content.\n * @param {ParseOptions} parseOptions—The HTML parsing options. Defaults to `{ preserveWhitespace: 'full' }`.\n * @returns {Node}—The `document` object of the Editor.\n */\n function createDocument(schema, html, parseOptions) {\n return parseContent(trimWhitespace(html), schema, parseOptions !== undefined ? parseOptions : { preserveWhitespace: 'full' });\n }\n EditorUtils.createDocument = createDocument;\n /**\n * Creates a table.\n *\n * @param {object} tableTypes—An object which contains `table`, `table_row`, and `table_cell` node types.\n * @param {number} rows—The number of rows.\n * @param {number} columns—The number of columns.\n * @returns {Node}—The generated table.\n *\n * @example\n * ```jsx-no-run\n * import { EditorUtils } from '@progress/kendo-react-editor';\n *\n * const nodes = editorRef.view.state.schema.nodes;\n * const rows = 3;\n * const columns = 4;\n *\n * const table = EditorUtils.createTable(nodes, rows, columns);\n * ```\n */\n function createTable(tableTypes, rows, columns) {\n return createTableCommon(tableTypes, rows, columns);\n }\n EditorUtils.createTable = createTable;\n /**\n * Formats the paragraph and heading nodes in the selection.\n *\n * @returns {boolean}—If an element is formatted, returns `true`.\n */\n function formatBlockElements(view, value, commandName) {\n return formatBlockElementsCommon(value, commandName)(view.state, view.dispatch);\n }\n EditorUtils.formatBlockElements = formatBlockElements;\n /**\n * Returns the paragraph and heading nodes in the selection.\n *\n * @returns {string[]}\n */\n function getBlockFormats(state) {\n return getBlockFormatsCommon(state);\n }\n EditorUtils.getBlockFormats = getBlockFormats;\n /**\n * Gets the HTML from the `EditorState` object.\n *\n * @param {EditorState} state—The `state` object of the Editor or an object containing editor's `doc` and `schema`\n *—{ doc: value, schema: value.types.schema } where the `value` variable is the editor's value prop.\n * @returns {string}—The HTML content.\n */\n function getHtml(state) {\n return getHtmlCommon(state);\n }\n EditorUtils.getHtml = getHtml;\n /**\n * @returns {string[]}—An array of matched styles that are found in the selection.\n */\n function getInlineStyles(state, style) {\n return getInlineStylesCommon(state, style);\n }\n EditorUtils.getInlineStyles = getInlineStyles;\n /**\n * Returns a mark of the specified type from the nodes in selection.\n *\n * @returns {Mark}\n */\n function getMark(state, markType) {\n return getMarkCommon(state, markType);\n }\n EditorUtils.getMark = getMark;\n /**\n * Checks if according to the specified `InlineFormatOptions` a node in the selection is present.\n *\n * @returns {boolean}\n */\n function hasMark(state, options) {\n return hasMarkCommon(state, options);\n }\n EditorUtils.hasMark = hasMark;\n /**\n * Checks if the selection contains a specific type of node.\n *\n * @returns {boolean}\n */\n function hasNode(state, nodeType) {\n return hasNodeCommon(state, nodeType);\n }\n EditorUtils.hasNode = hasNode;\n /**\n * Indents the block elements in the selection.\n *\n * @returns {boolean}—If indentation is applied to any of the elements, returns `true`.\n */\n function indentBlocks(view, actions, command, dir) {\n return Boolean(indentBlocksCommon(actions, command, dir)(view.state, view.dispatch));\n }\n EditorUtils.indentBlocks = indentBlocks;\n /**\n * Adds new lines after block elements and hard breaks.\n *\n * @param {string} content—The HTML content.\n * @returns {string}—The indented HTML.\n */\n function indentHtml(content) {\n return indentHtmlCommon(content);\n }\n EditorUtils.indentHtml = indentHtml;\n /**\n * Inserts a node in the selection.\n *\n * @param {EditorView} view—The `view` object of the Editor.\n * @param {Node} node—A `node` object of the Editor.\n * @param {boolean} scrollIntoView—An optional parameter.\n * Defines if the content element will be scrolled to the current selection.\n */\n function insertNode(view, node, scrollIntoView) {\n insertNodeCommon(node, scrollIntoView)(view.state, view.dispatch);\n }\n EditorUtils.insertNode = insertNode;\n /**\n * Checks if any of the block elements in the selection is aligned.\n *\n * @returns {boolean}\n */\n function isAligned(state, actions) {\n return isAlignedCommon(state, actions);\n }\n EditorUtils.isAligned = isAligned;\n /**\n * Checks if any of the block elements in the selection is indented.\n *\n * @returns {boolean}\n */\n function isIndented(state, actions, dir) {\n return isIndentedCommon(state, actions, dir);\n }\n EditorUtils.isIndented = isIndented;\n /**\n * Removes the comments from the HTML.\n *\n * @param {string} html—The input HTML.\n * @returns {string}—The result HTML.\n *\n * @example\n * ```jsx-no-run\n * import { EditorUtils } from '@progress/kendo-react-editor';\n * const html = EditorUtils.removeComments('

            some content

            ');\n * ```\n */\n function removeComments(html) {\n return removeCommentsCommon(html);\n }\n EditorUtils.removeComments = removeComments;\n /**\n * Removes the specified tag from the HTML and keeps its child nodes.\n *\n * @param {string} html—The input HTML.\n * @param {string} tag—A tag or multiple tags separated by a vertical slash which will be removed.\n * For example, `span` or `b|i|u|span`.\n * @returns {string}—The resulting HTML.\n *\n * @example\n * ```jsx-no-run\n * import { EditorUtils } from '@progress/kendo-react-editor';\n * const html = EditorUtils.removeTag('

            some content

            ', 'span|p');\n * ```\n */\n function removeTag(html, tag) {\n return removeTagCommon(html, tag);\n }\n EditorUtils.removeTag = removeTag;\n /**\n * A function for sanitizing the content on paste ([see example]({% slug paste_editor %})).\n *\n * @param {string} html—The input HTML.\n * @param {PasteCleanupSettings} settings—The settings used for sanitizing the content.\n * @returns {string}—The resulting HTML.\n */\n function pasteCleanup(html, settings) {\n return pasteCleanupCommon(html, settings);\n }\n EditorUtils.pasteCleanup = pasteCleanup;\n /**\n * A function for sanitizing the CSS classes of the pasted from MS Word content ([see example]({% slug paste_editor %})).\n * The function will remove any class attribute which value starts with `Mso`.\n * For example `

            pasted from MS Word

            ` will result in `

            pasted from MS Word

            `.\n *\n * @param {Attr} attr—The DOM class attribute that will be sanitized.\n */\n function sanitizeClassAttr(attr) {\n sanitizeClassAttrCommon(attr);\n }\n EditorUtils.sanitizeClassAttr = sanitizeClassAttr;\n /**\n * A function for sanitizing the style attributes of the pasted from MS Word content ([see example]({% slug paste_editor %})).\n * The function will loop through all styles and will remove those that are invalid.\n * For example `

            content

            `,\n * will result in `

            content

            `.\n *\n * @param {Attr} attr—The DOM style attribute that will be sanitized.\n */\n function sanitizeStyleAttr(attr) {\n sanitizeStyleAttrCommon(attr);\n }\n EditorUtils.sanitizeStyleAttr = sanitizeStyleAttr;\n /**\n * A function that will remove a DOM attribute from the pasted content ([see example]({% slug paste_editor %})).\n *\n * @param {Attr} attr—The DOM attribute that will be removed.\n */\n function removeAttribute(attr) {\n removeAttributeCommon(attr);\n }\n EditorUtils.removeAttribute = removeAttribute;\n /**\n * Removes the invalid HTML.\n *\n * @param {string} html—The HTML which will be sanitized.\n * @returns {string}—The sanitized HTML.\n *\n * @example\n * ```jsx-no-run\n * import { EditorUtils } from '@progress/kendo-react-editor';\n * const html = EditorUtils.sanitize('something pasted from MS Word, containing , , button' + notDisabled,\n '.k-dropdown > .k-dropdown-wrap' + notDisabled,\n '.k-colorpicker > .k-picker-wrap' + notDisabled\n];\n/**\n * @hidden\n */\nexport default {\n styles: styles\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport util from './util';\nvar styles = util.styles;\nvar ButtonGroup = /** @class */ (function (_super) {\n __extends(ButtonGroup, _super);\n function ButtonGroup(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n ButtonGroup.prototype.render = function () {\n var _a;\n var _this = this;\n var buttons = this.mapButtons(this.props.children);\n var groupClasses = classNames([styles['button-group']], (_a = {},\n _a['k-disabled'] = this.props.disabled,\n _a[styles['button-group-stretched']] = !!this.props.width,\n _a), this.props.className);\n var groupProps = {\n className: groupClasses,\n style: { 'width': \"\".concat(this.props.width) },\n dir: this.props.dir,\n // Accessibility properties\n role: 'group',\n 'aria-disabled': this.props.disabled\n };\n return (React.createElement(\"div\", __assign({ ref: function (div) { _this._element = div; } }, groupProps, { className: groupClasses }), buttons));\n };\n ButtonGroup.prototype.mapButtons = function (children) {\n var _this = this;\n var count = React.Children.count(children);\n var rtl = this.props.dir !== undefined\n ? this.props.dir === 'rtl'\n : (this._element && (getComputedStyle(this._element).direction === 'rtl') || false);\n return React.Children.map(children, function (child, index) {\n if (React.isValidElement(child)) {\n return _this.renderButton(child, index, (index === count - 1), rtl);\n }\n return child;\n });\n };\n ButtonGroup.prototype.renderButton = function (child, index, isLast, isRtl) {\n var _a;\n var className = classNames(child.props.className, (_a = {},\n _a[styles['group-start']] = isRtl ? isLast : index === 0,\n _a[styles['group-end']] = isRtl ? index === 0 : isLast,\n _a));\n var style = __assign(__assign({}, (this.props.width ? { width: this.props.width } : {})), (child.props.style || {}));\n var disabled = this.props.disabled || child.props.disabled;\n var buttonProps = __assign(__assign(__assign(__assign({}, child.props), (className ? { className: className } : {})), (Object.keys(style).length ? { style: style } : {})), (disabled !== undefined ? { disabled: disabled } : {}));\n return React.Children.count(child.props.children) > 0 ?\n React.cloneElement(child, buttonProps, child.props.children) :\n React.cloneElement(child, buttonProps);\n };\n /**\n * @hidden\n */\n ButtonGroup.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n width: PropTypes.string,\n dir: PropTypes.string\n };\n return ButtonGroup;\n}(React.Component));\nexport { ButtonGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { toolbarButtons } from './../util';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact Toolbar component]({% slug overview_toolbar %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.offsetHeight = 0;\n _this.offsetWidth = 0;\n _this.buttons = [];\n _this.focusedSelector = _this.selectors.map(function (s) { return s + ':focus'; }).join(',');\n _this.setTabIndex = function (focusedIndex) {\n var _a = _this.props.tabIndex, tabIndex = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n _this.buttons.forEach(function (button, index) {\n button.tabIndex = (index === focusedIndex) ? tabIndex : -1;\n });\n };\n _this.onKeyDown = function (event) {\n var target = event.target;\n var arrowKey = event.keyCode === Keys.left || event.keyCode === Keys.right;\n if (!arrowKey || event.defaultPrevented || _this.buttons.findIndex(function (b) { return b === target; }) === -1) {\n return;\n }\n var focusedIndex = _this.focusedIndex;\n if (event.keyCode === Keys.left) {\n _this.focusButton(focusedIndex, focusedIndex - 1);\n }\n else {\n _this.focusButton(focusedIndex, focusedIndex + 1);\n }\n };\n _this.onWindowResize = function (event) {\n var element = _this.element;\n if (!element) {\n return;\n }\n var offsetWidth = element.offsetWidth;\n var offsetHeight = element.offsetHeight;\n if (_this.offsetWidth !== offsetWidth || _this.offsetHeight !== offsetHeight) {\n _this.offsetWidth = offsetWidth;\n _this.offsetHeight = offsetHeight;\n var newSizes = { offsetWidth: _this.offsetWidth, offsetHeight: _this.offsetHeight };\n if (_this.props.onResize) {\n _this.props.onResize.call(undefined, __assign(__assign({ target: _this }, newSizes), { nativeEvent: event }));\n }\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(Toolbar.prototype, \"selectors\", {\n get: function () {\n return this.props.buttons || toolbarButtons;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Toolbar.prototype, \"focusedIndex\", {\n get: function () {\n var focused = this.element && this.element.querySelector(this.focusedSelector);\n return Math.max(0, this.buttons.findIndex(function (e) { return e === focused; }));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Toolbar.prototype, \"element\", {\n /**\n * Returns the HTML element of the Toolbar component.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Toolbar.prototype.componentDidMount = function () {\n window.addEventListener('resize', this.onWindowResize);\n var element = this.element;\n if (element) {\n this.offsetWidth = element.offsetWidth;\n this.offsetHeight = element.offsetHeight;\n if (this.props.keyboardNavigation !== false) {\n this.buttons = Array.from(element.querySelectorAll(this.selectors.join(',')));\n this.setTabIndex(0);\n }\n }\n };\n /**\n * @hidden\n */\n Toolbar.prototype.componentDidUpdate = function () {\n var element = this.element;\n if (!element || this.props.keyboardNavigation === false) {\n return;\n }\n this.buttons = Array.from(element.querySelectorAll(this.selectors.join(',')));\n this.setTabIndex(this.focusedIndex);\n };\n /**\n * @hidden\n */\n Toolbar.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.onWindowResize);\n this.buttons.length = 0;\n };\n /**\n * @hidden\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n return (React.createElement(\"div\", { id: this.props.id, className: classNames('k-widget k-toolbar', this.props.className), style: this.props.style, role: \"toolbar\", dir: this.props.dir, ref: function (element) { return _this._element = element; }, onKeyDown: this.props.keyboardNavigation !== false ? this.onKeyDown : undefined }, this.props.children));\n };\n Toolbar.prototype.focusButton = function (prevIndex, index) {\n var _a = this.props.tabIndex, tabIndex = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n var button = this.buttons[index];\n if (button) {\n button.tabIndex = tabIndex;\n button.focus();\n var prevButton = this.buttons[prevIndex];\n if (prevButton) {\n prevButton.tabIndex = -1;\n }\n }\n };\n /**\n * @hidden\n */\n Toolbar.propTypes = {\n tabIndex: PropTypes.number,\n dir: PropTypes.string,\n keyboardNavigation: PropTypes.bool,\n style: PropTypes.object,\n className: PropTypes.string,\n onResize: PropTypes.func,\n buttons: PropTypes.arrayOf(PropTypes.string)\n };\n /**\n * @hidden\n */\n Toolbar.defaultProps = {\n tabIndex: 0\n };\n return Toolbar;\n}(React.Component));\nexport { Toolbar };\n","/**\n * @hidden\n */\nexport var defaultStyle = \"\\nhtml, body {\\n margin: 0;\\n height: 100%;\\n padding: 0;\\n}\\n\\nhtml {\\n min-height: 100%;\\n}\\n\\nbody {\\n box-sizing: border-box;\\n position: relative;\\n word-wrap: break-word;\\n padding: 8px;\\n}\\n\\nbody > .k-content {\\n outline: 0;\\n height: 100%;\\n white-space: pre-wrap;\\n}\\n\\n.k-content > p {\\n margin: 0 0 1em;\\n}\\n\\n.k-content table {\\n white-space: pre-wrap;\\n}\\n\\n.k-content .k-text-selected, .k-content::selection {\\n color: HighlightText;\\n background-color: Highlight;\\n}\\n\\n.k-content .k-text-highlighted {\\n background-color: #bbdefb;\\n}\\n\\n.k-content .ProseMirror-selectednode {\\n outline: 2px solid #8cf;\\n}\\n\\n.ProseMirror-hideselection *::selection { background: transparent; }\\n.ProseMirror-hideselection *::-moz-selection { background: transparent; }\\n.ProseMirror-hideselection { caret-color: transparent; }\\n\\n.ProseMirror-gapcursor {\\n display: none;\\n pointer-events: none;\\n position: absolute;\\n}\\n\\n.ProseMirror-gapcursor:after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n top: -2px;\\n width: 20px;\\n border-top: 1px solid black;\\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\\n}\\n\\n@keyframes ProseMirror-cursor-blink {\\n to {\\n visibility: hidden;\\n }\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n display: block;\\n}\\n\\n.k-editor-resize-handles-wrapper {\\n position: absolute;\\n visibility: hidden;\\n}\\n\\n.k-editor-resize-handle {\\n position: absolute;\\n visibility: visible;\\n background-color: #fff;\\n border: 1px solid #000;\\n z-index: 100;\\n width: 5px;\\n height: 5px;\\n}\\n\\n.k-editor-resize-handle.northwest {\\n top: 0;\\n left: 0;\\n transform: translate(-50%, -50%);\\n cursor: nw-resize;\\n}\\n\\n.k-editor-resize-handle.north {\\n top: 0;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n cursor: n-resize;\\n}\\n\\n.k-editor-resize-handle.northeast {\\n top: 0;\\n right: 0;\\n transform: translate(50%, -50%);\\n cursor: ne-resize;\\n}\\n\\n.k-editor-resize-handle.southwest {\\n left: 0;\\n bottom: 0;\\n transform: translate(-50%, 50%);\\n cursor: sw-resize;\\n}\\n\\n.k-editor-resize-handle.south {\\n bottom: 0;\\n left: 50%;\\n transform: translate(-50%, 50%);\\n cursor: s-resize;\\n}\\n\\n.k-editor-resize-handle.southeast {\\n right: 0;\\n bottom: 0;\\n transform: translate(50%, 50%);\\n cursor: se-resize;\\n}\\n\\n.k-editor-resize-handle.west {\\n top: 50%;\\n left: 0;\\n transform: translate(-50%, -50%);\\n cursor: w-resize;\\n}\\n\\n.k-editor-resize-handle.east {\\n top: 50%;\\n right: 0;\\n transform: translate(50%, -50%);\\n cursor: e-resize;\\n}\\n\\n.k-editor-resize-wrap-element {\\n display: inline-block;\\n position: relative;\\n}\\n\\n.ProseMirror .row-resize-handle {\\n position: absolute;\\n right: 0; left: 0; bottom: 0;\\n transform: translate(0, 50%);\\n height: 4px;\\n z-index: 20;\\n background-color: #adf;\\n pointer-events: none;\\n}\\n\\n.ProseMirror .column-resize-handle {\\n position: absolute;\\n right: -2px; top: 0; bottom: 0;\\n width: 4px;\\n z-index: 20;\\n background-color: #adf;\\n pointer-events: none;\\n}\\n\\n.ProseMirror.resize-cursor {\\n cursor: ew-resize;\\n cursor: col-resize;\\n}\\n\\n.ProseMirror.resize-cursor-vertical {\\n cursor: sn-resize;\\n cursor: row-resize;\\n}\\n\\n.k-editor-resize-wrap-element table td p,\\n.k-editor-resize-wrap-element table th p {\\n margin: 0 auto;\\n}\\n\";\n/**\n * @hidden\n */\nexport var tablesStyles = \"\\n .ProseMirror .tableWrapper {\\n overflow-x: auto;\\n margin: 1em 0;\\n }\\n\\n .ProseMirror table {\\n margin: 0;\\n border-collapse: collapse;\\n table-layout: fixed;\\n width: 100%;\\n overflow: hidden;\\n }\\n\\n .ProseMirror td, .ProseMirror th {\\n min-width: 1em;\\n border: 1px solid #ddd;\\n padding: 3px 5px;\\n vertical-align: top;\\n box-sizing: border-box;\\n position: relative;\\n }\\n\\n .ProseMirror th {\\n font-weight: bold;\\n text-align: left;\\n }\\n\\n /* Give selected cells a blue overlay */\\n .ProseMirror .selectedCell:after {\\n z-index: 2;\\n position: absolute;\\n content: \\\"\\\";\\n left: 0; right: 0; top: 0; bottom: 0;\\n background: rgba(200, 200, 255, 0.4);\\n pointer-events: none;\\n }\\n\";\n/**\n * @hidden\n */\nexport var rtlStyles = 'body { direction: rtl }';\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 { chainCommands, exitCode, splitListItem, undo, redo, undoInputRule, goToNextCell, toggleInlineFormat } from '@progress/kendo-editor-common';\nimport { EditorToolsSettings } from './toolsSettings';\nvar bold = EditorToolsSettings.bold, underline = EditorToolsSettings.underline, italic = EditorToolsSettings.italic;\nvar mac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false;\n/**\n * @hidden\n */\nexport var getShortcuts = function (settings) {\n var insertBr = chainCommands(exitCode, function (state, dispatch) {\n var hardBreak = settings && settings.types && settings.types.hardBreak || 'hard_break';\n var br = state.schema.nodes[hardBreak];\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(br.create()).scrollIntoView());\n }\n return true;\n });\n var listItem = settings && settings.types && settings.types.listItem || 'list_item';\n var toolsSettings = settings && settings.toolsSettings || {};\n var shortcutsSettings = __assign(__assign(__assign(__assign({ 'Mod-b': function (state, dispatch) { return toggleInlineFormat(toolsSettings.bold || bold)(state, dispatch); }, 'Mod-i': function (state, dispatch) { return toggleInlineFormat(toolsSettings.italic || italic)(state, dispatch); }, 'Mod-u': function (state, dispatch) { return toggleInlineFormat(toolsSettings.underline || underline)(state, dispatch); }, 'Mod-z': undo, 'Shift-Mod-z': redo }, __assign({}, !mac ? { 'Mod-y': redo } : {})), { 'Backspace': undoInputRule, 'Mod-Enter': insertBr, 'Shift-Enter': insertBr }), __assign({}, mac ? { 'Ctrl-Enter': insertBr } : {})), { 'Enter': function (state, dispatch) {\n return splitListItem(state.schema.nodes[listItem])(state, dispatch);\n }, 'Tab': goToNextCell(1), 'Shift-Tab': goToNextCell(-1) });\n return shortcutsSettings;\n};\n","import { columnResizing } from './column-resize';\nimport { tableResizing as tableResize } from './table-resize';\nimport { rowResizing } from './row-resize';\nexport var tableResizing = function () { return [\n tableResize(),\n columnResizing(),\n rowResizing()\n]; };\nexport { tableResizeKey, tableColumnResizeKey, tableRowResizeKey } from './utils';\n","import { AllSelection } from '@progress/kendo-editor-common';\nimport { EditorUtils } from './index';\nvar setValue = function (view, value) {\n var transaction = value.tr ||\n (view.state.tr\n .setSelection(new AllSelection(view.state.doc))\n .replaceSelectionWith(value.doc || EditorUtils.createDocument(view.state.schema, value.html || ''))\n .setMeta('commandName', 'setHTML'));\n view.updateState(view.state.apply(transaction));\n};\n/**\n * @hidden\n */\nexport var updateEditorValue = function (view, value, prevValue, trOnChange, htmlOnChange) {\n if (typeof value === 'string') {\n if (trOnChange && value === htmlOnChange) {\n setValue(view, { tr: trOnChange });\n }\n else if (value !== prevValue) {\n setValue(view, { html: value });\n }\n }\n else {\n if (trOnChange && value.eq(trOnChange.doc)) {\n setValue(view, { tr: trOnChange });\n }\n else if (!view.state.doc.eq(value)) {\n setValue(view, { doc: value });\n }\n }\n};\n","/**\n * @hidden\n */\nexport var firefox = typeof window !== 'undefined' &&\n /Firefox/.test(window.navigator.userAgent);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-editor',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1656667756,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { ButtonGroup, Toolbar, ToolbarSeparator } from '@progress/kendo-react-buttons';\nimport { classNames } from '@progress/kendo-react-common';\nimport { EditorState, Plugin, PluginKey, EditorView, Schema, baseKeymap, keymap, history, dropCursor, gapCursor, getMark, spacesFix, tableEditing, caretColor } from '@progress/kendo-editor-common';\nimport { marks, nodes } from './config/schema';\nimport { defaultStyle, tablesStyles, rtlStyles } from './config/defaultStyles';\nimport { EditorToolsSettings } from './config/toolsSettings';\nimport { EditorDialogs } from './dialogs/main';\nimport { EditorUtils } from './utils';\nimport { editorPropsKey } from './utils/props-key';\nimport { updateEditorValue } from './utils/controlled-value';\nvar link = EditorToolsSettings.link, bold = EditorToolsSettings.bold, italic = EditorToolsSettings.italic, underline = EditorToolsSettings.underline;\nimport { firefox } from './utils/browser-detection';\nimport * as licensing from '@progress/kendo-licensing';\nimport { packageMetadata } from './package-metadata';\n/**\n * Represents the [KendoReact Editor component]({% slug overview_editor %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * Hello World

            \"\n * tools={[\n * [ EditorTools.Bold, EditorTools.Italic ]\n * ]}\n * />\n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar Editor = /** @class */ (function (_super) {\n __extends(Editor, _super);\n function Editor(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n view: undefined,\n linkDialog: false\n };\n _this._element = null;\n _this._contentElement = null;\n _this.iframe = null;\n _this.trOnChange = null;\n _this.htmlOnChange = null;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.view) {\n _this.view.focus();\n }\n };\n _this.renderDialog = function (Component, settings, stateFlag) {\n return _this.state[stateFlag] && (React.createElement(Component, { view: _this.view, settings: settings, dir: _this.props.dir, onClose: function () {\n var _a;\n return _this.setState((_a = {}, _a[stateFlag] = false, _a));\n } }));\n };\n _this.renderTool = function (Tool, index) {\n var tool = (React.createElement(Tool, { view: _this.view, dir: _this.props.dir, key: index }));\n return tool.type === ToolbarSeparator ? React.createElement(Tool, { key: index }) : tool;\n };\n _this.updateTools = function (view, _prevViewState) {\n _this.setState({ view: view });\n };\n _this.filterTransaction = function (transaction, state) {\n var event = { target: _this, transaction: transaction, state: state };\n return (_this.props.onExecute &&\n _this.props.onExecute.call(undefined, event)) !== false;\n };\n _this.onPasteHtml = function (html) {\n if (_this.props.onPasteHtml && _this.pasteEvent) {\n var event_1 = {\n target: _this,\n pastedHtml: html,\n nativeEvent: _this.pasteEvent\n };\n var newHtml = _this.props.onPasteHtml.call(undefined, event_1);\n _this.pasteEvent = undefined;\n if (typeof newHtml === 'string') {\n return newHtml;\n }\n }\n return html;\n };\n _this.dispatchTransaction = function (transaction) {\n var docChanged = transaction.docChanged;\n if (_this.props.onChange && docChanged) {\n _this.trOnChange = transaction;\n var doc_1 = transaction.doc, schema_1 = transaction.doc.type.schema;\n var target_1 = _this;\n var event_2 = {\n target: target_1,\n value: doc_1,\n get html() {\n target_1.htmlOnChange = EditorUtils.getHtml({ doc: doc_1, schema: schema_1 });\n return target_1.htmlOnChange;\n },\n transaction: transaction,\n schema: schema_1\n };\n _this.props.onChange.call(undefined, event_2);\n }\n if (_this.view && (_this.props.value === undefined || !docChanged)) {\n _this.view.updateState(_this.view.state.apply(transaction));\n }\n };\n _this.onFocus = function (_view, nativeEvent) {\n if (_this.props.onFocus) {\n var event_3 = {\n target: _this,\n nativeEvent: nativeEvent\n };\n _this.props.onFocus.call(undefined, event_3);\n }\n return false;\n };\n _this.onBlur = function (_view, nativeEvent) {\n if (_this.props.onBlur) {\n var event_4 = {\n target: _this,\n nativeEvent: nativeEvent\n };\n _this.props.onBlur.call(undefined, event_4);\n }\n return false;\n };\n _this.onPaste = function (_view, nativeEvent) {\n if (_this.props.onPasteHtml) {\n _this.pasteEvent = nativeEvent;\n }\n return false;\n };\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \".concat(packageMetadata.name, \"\\n\");\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \".concat(packageMetadata.licensingDocsUrl, \" for more information.\\n\");\n console.warn(message);\n }\n return _this;\n }\n Object.defineProperty(Editor.prototype, \"value\", {\n /**\n * The value of the Editor.\n */\n get: function () {\n if (this.trOnChange !== null) {\n return this.trOnChange.doc;\n }\n else if (this.props.value !== undefined) {\n return this.props.value;\n }\n else if (this.view) {\n return this.view.state.doc;\n }\n return this.props.defaultContent || '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Editor.prototype, \"element\", {\n /**\n * Returns the DOM element of the Editor.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Editor.prototype, \"contentElement\", {\n /**\n * Returns the content-editable DOM element of the Editor.\n */\n get: function () {\n return this._contentElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Editor.prototype, \"view\", {\n /**\n * Returns the `view` object of the Editor.\n */\n get: function () {\n return this._view;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Editor.prototype.componentDidMount = function () {\n if (!this.iframe || !firefox) {\n this.initialize();\n }\n };\n /**\n * @hidden\n */\n Editor.prototype.componentDidUpdate = function (prevProps) {\n var value = this.props.value;\n var view = this.view;\n if (value === undefined || !view) {\n return;\n }\n updateEditorValue(view, value, prevProps.value, this.trOnChange, this.htmlOnChange);\n this.trOnChange = null;\n this.htmlOnChange = null;\n };\n /**\n * @hidden\n */\n Editor.prototype.componentWillUnmount = function () {\n if (this.view) {\n this.view.destroy();\n }\n this._view = undefined;\n var iframeWindow = this.iframe && this.iframe.contentWindow;\n if (iframeWindow) {\n if (this._contentElement && this._contentElement.parentNode) {\n this._contentElement.parentNode.removeChild(this._contentElement);\n }\n var head = iframeWindow.document.head;\n while (head && head.firstChild) {\n head.removeChild(head.firstChild);\n }\n }\n };\n /**\n * @hidden\n */\n Editor.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.tools, tools = _b === void 0 ? [] : _b, _c = _a.defaultEditMode, defaultEditMode = _c === void 0 ? 'iframe' : _c, _d = _a.preserveWhitespace, preserveWhitespace = _d === void 0 ? 'full' : _d, style = _a.style, className = _a.className;\n if (this.view) {\n var editorProps = editorPropsKey.getState(this.view.state);\n editorProps.preserveWhitespace = preserveWhitespace;\n }\n var contentStyle = this.props.contentStyle;\n if (contentStyle === undefined && (style || {}).height === undefined) {\n contentStyle = { height: '300px' };\n }\n var buttons = tools.map(function (item, index) {\n return Array.isArray(item) ?\n React.createElement(ButtonGroup, { key: index }, item.map(_this.renderTool, index)) :\n _this.renderTool(item, index);\n });\n return (React.createElement(\"div\", { ref: function (e) { return _this._element = e; }, className: classNames('k-widget k-editor', className, { 'k-editor-resizable': this.props.resizable }), dir: this.props.dir, style: style },\n buttons.length > 0 && (React.createElement(Toolbar, { keyboardNavigation: this.props.keyboardNavigation }, buttons)),\n defaultEditMode === 'iframe' ?\n (React.createElement(\"div\", { className: \"k-editor-content\" },\n React.createElement(\"iframe\", { onLoad: firefox ? function () {\n _this.initialize();\n } : undefined, ref: function (e) { return _this.iframe = e; }, frameBorder: \"0\", style: contentStyle, className: \"k-iframe\" }))) :\n (React.createElement(\"div\", { style: contentStyle, className: \"k-editor-content\" },\n React.createElement(\"div\", { ref: function (e) { return _this._contentElement = e; }, suppressContentEditableWarning: true }))),\n this.renderDialog(EditorDialogs.InsertLinkDialog, link, 'linkDialog')));\n };\n Editor.prototype.initialize = function () {\n var _this = this;\n var iframeWindow = this.iframe && this.iframe.contentWindow;\n if (iframeWindow) {\n var iframeDocument_1 = iframeWindow.document;\n [defaultStyle, tablesStyles, this.props.dir === 'rtl' ? rtlStyles : undefined].forEach(function (styles) {\n if (styles) {\n var style = iframeDocument_1.createElement('style');\n style.appendChild(iframeDocument_1.createTextNode(styles));\n iframeDocument_1.head.appendChild(style);\n }\n });\n var meta = iframeDocument_1.createElement('meta');\n meta.setAttribute('charset', 'utf-8');\n iframeDocument_1.head.appendChild(meta);\n // The content has to be wrapped because the `dropCursor` plugin raises a `body.offsetParent is null` error.\n this._contentElement = iframeDocument_1.createElement('div');\n iframeDocument_1.body.appendChild(this._contentElement);\n this._contentElement.classList.add('k-content');\n }\n var dom = this._contentElement;\n if (!dom) {\n return;\n }\n var _a = this.props.preserveWhitespace, preserveWhitespace = _a === void 0 ? 'full' : _a;\n var target = this;\n var plugins = [\n // https://prosemirror.net/docs/ref/#state.PluginSpec\n new Plugin({\n view: function () { return ({ update: _this.updateTools }); },\n key: new PluginKey('toolbar-tools-update-plugin')\n }),\n new Plugin({\n filterTransaction: this.filterTransaction,\n key: new PluginKey('onExecute-event-plugin')\n }),\n new Plugin({\n key: editorPropsKey,\n state: {\n init: function () { return ({ preserveWhitespace: preserveWhitespace }); },\n apply: function (_, val) { return val; }\n }\n }),\n spacesFix(),\n caretColor(),\n history(),\n dropCursor(),\n gapCursor(),\n tableEditing()\n ];\n var shortcuts = __assign(__assign({}, EditorUtils.getShortcuts({\n types: { listItem: 'list_item', hardBreak: 'hard_break' },\n toolsSettings: { bold: bold, italic: italic, underline: underline }\n })), { 'Mod-k': function () {\n var linkDialog = _this.state.linkDialog;\n var editorView = _this.view;\n if (editorView) {\n var editorState = editorView.state;\n var collapsed = editorState.selection.empty;\n var linkMark = getMark(editorState, editorState.schema.marks[link.mark]);\n var disabled = collapsed && !linkMark;\n if (!linkDialog && !disabled) {\n _this.setState({ linkDialog: true });\n }\n }\n return !linkDialog;\n } });\n var _b = this.props, _c = _b.defaultContent, defaultContent = _c === void 0 ? '' : _c, value = _b.value, onMount = _b.onMount;\n var doc = (value && typeof value !== 'string') ? value :\n EditorUtils.createDocument(new Schema({ nodes: nodes, marks: marks }), value || defaultContent, { preserveWhitespace: preserveWhitespace });\n var viewProps = {\n state: EditorState.create({\n plugins: __spreadArray(__spreadArray([], plugins, true), [keymap(shortcuts), keymap(baseKeymap)], false),\n doc: doc\n }),\n transformPastedHTML: this.onPasteHtml,\n dispatchTransaction: this.dispatchTransaction,\n handleDOMEvents: {\n focus: this.onFocus,\n blur: this.onBlur,\n paste: this.onPaste\n }\n };\n var mountEvent = { plugins: plugins, shortcuts: shortcuts, target: target, viewProps: viewProps, dom: dom };\n var view = this._view = (onMount && onMount.call(undefined, mountEvent)) || new EditorView({ mount: dom }, viewProps);\n this.setState({\n view: view\n });\n };\n /**\n * @hidden\n */\n Editor.propTypes = {\n defaultContent: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n defaultEditMode: PropTypes.oneOf(['iframe', 'div']),\n contentStyle: PropTypes.object,\n dir: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n tools: PropTypes.arrayOf(PropTypes.any),\n keyboardNavigation: PropTypes.bool,\n resizable: PropTypes.bool,\n preserveWhitespace: PropTypes.oneOf([true, false, 'full']),\n onMount: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onPasteHtml: PropTypes.func,\n onExecute: PropTypes.func\n };\n return Editor;\n}(React.Component));\nexport { Editor };\n","import React from 'react';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { Editor, EditorTools } from \"@progress/kendo-react-editor\";\r\nimport { useComponentProperties } from '../../../../Hooks/Display/useComponentProperties';\r\nimport { useTranslation } from 'react-i18next';\r\nconst {\r\n Bold,\r\n Italic,\r\n Underline,\r\n AlignLeft,\r\n AlignRight,\r\n AlignCenter,\r\n InsertTable,\r\n Undo,\r\n Redo,\r\n Link,\r\n Unlink,\r\n} = EditorTools;\r\n\r\nconst TextboxComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst MirrorComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst ImageComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst TextareaComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n const [{ labelOrientation }] = useComponentProperties();\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst StateComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst NumberComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst MultiselectComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst EmailComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst DropdownComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst DatePickerComponent = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst TimePickerComponent = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst DateTimePickerComponent = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst CheckboxComponent = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst RichTextComponent = () => {\r\n const { t } = useTranslation(\"display/components/form\")\r\n const content = `

            ${t(\"column.placeholder.rich_html_content_goes_here\", { ns: \"display/components/form\" })}

            `;\r\n return (\r\n
            \r\n \r\n
            \r\n );\r\n}\r\n\r\nexport const componentMap = {\r\n 'String': TextboxComponent,\r\n 'Number': NumberComponent,\r\n 'Picklist String': DropdownComponent,\r\n 'User Identity': TextboxComponent,\r\n 'Email': EmailComponent,\r\n 'URL': TextboxComponent,\r\n 'Html': RichTextComponent,\r\n 'Boolean': CheckboxComponent,\r\n 'Multiline Text': TextareaComponent,\r\n 'Tags': MultiselectComponent,\r\n 'Tree Dropdown': DropdownComponent,\r\n 'State Field': StateComponent,\r\n 'Entity Lookup': TextboxComponent,\r\n 'Mirror': MirrorComponent,\r\n \"date\": DatePickerComponent,\r\n \"time\": TimePickerComponent,\r\n \"datetime\": DateTimePickerComponent,\r\n 'Image': ImageComponent,\r\n 'default': TextboxComponent,\r\n};","import React from 'react';\r\nimport { componentMap } from './ComponentMaps';\r\n\r\nconst Controls = ({ type, dateTimeType }) => {\r\n let Component = componentMap[type] || componentMap['default'];\r\n if (dateTimeType) {\r\n Component = componentMap[dateTimeType] || componentMap['default'];\r\n }\r\n return ;\r\n}\r\n\r\nexport default Controls;","import React from 'react';\r\nimport Controls from '../Controls/Controls';\r\nimport { useComponentProperties, useAttributes } from '../../../../Hooks/Display/useComponentProperties';\r\n\r\nconst ColumnContents = ({ column }) => {\r\n const [{ attributes }] = useAttributes();\r\n const [{ labelOrientation }] = useComponentProperties();\r\n\r\n const attribute = attributes.find((attr) => attr._id === column.attributeId);\r\n const dateTimeType = attribute.dateTimeType;\r\n const attributeType = attribute?.attributeType || 'default';\r\n\r\n const labelClass = labelOrientation === 'Top' ? 'col-12 form-buiider-label mb-1' : 'col-4 form-buiider-label mb-1';\r\n const containerClass = labelOrientation === 'Top' ? 'col-12 form-builder-control-container' : 'col-8 form-builder-control-container';\r\n\r\n return (\r\n
            \r\n \r\n
            \r\n \r\n
            \r\n
            \r\n );\r\n};\r\n\r\nexport default ColumnContents;","import React from 'react';\r\nimport Column from '../Columns/Column';\r\nimport ColumnHeader from '../Columns/ColumnHeader';\r\nimport ColumnContents from '../Columns/ColumnContents';\r\nimport RGL, { WidthProvider } from \"react-grid-layout\";\r\nimport { useAttributeFormBuilder, useLayout } from '../../../../Hooks/Display/useComponentProperties';\r\nimport { findDraggedColumn } from '../utils';\r\n\r\nconst ReactGridLayout = WidthProvider(RGL);\r\n\r\nconst SectionColumns = ({ section, draggedColumnId, onDropColumn, onDragColumn }) => {\r\n\r\n const [{ steps }, dispatch] = useAttributeFormBuilder();\r\n const layout = useLayout()\r\n\r\n const handleLayoutChange = (columns) => {\r\n dispatch.resizeColumns(columns, section.id);\r\n };\r\n\r\n const handleDropColumn = (layout) => {\r\n onDropColumn(layout, section.id)\r\n }\r\n\r\n const handleDroppingItem = () => {\r\n const column = findDraggedColumn(layout, draggedColumnId);\r\n return {\r\n i: '__dropping-elem__',\r\n w: column ? column.w : 6,\r\n h: column ? column.h : 1,\r\n }\r\n }\r\n\r\n return (\r\n \r\n {section.columns.map((column) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default SectionColumns;\r\n","import React from \"react\";\r\nimport { useAttributeFormBuilder, useLayout } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst SectionActions = ({ sectionId }) => {\r\n\r\n const { t } = useTranslation([\r\n \"display/components/form\"\r\n ]);\r\n\r\n const [{ steps }, dispatch] = useAttributeFormBuilder();\r\n const layout = useLayout()\r\n\r\n const sectionIndex = layout.findIndex((section) => section.id === sectionId);\r\n const isMoveUpDisabled = sectionIndex === 0;\r\n const isMoveDownDisabled = sectionIndex === layout.length - 1;\r\n const isRemoveDisabled = layout.length === 1;\r\n\r\n const handleMoveSectionUp = (sectionId) => {\r\n dispatch.moveSectionUp(sectionId);\r\n }\r\n\r\n const handleMoveSectionDown = (sectionId) => {\r\n dispatch.moveSectionDown(sectionId);\r\n }\r\n\r\n const handleRemoveSection = (sectionId) => {\r\n dispatch.removeSection(sectionId);\r\n }\r\n\r\n return (\r\n
            \r\n handleMoveSectionUp(sectionId)}>\r\n \r\n \r\n handleMoveSectionDown(sectionId)}>\r\n \r\n \r\n handleRemoveSection(sectionId)}>\r\n \r\n \r\n
            \r\n );\r\n};\r\n\r\nexport default SectionActions;","import React, { useState } from \"react\";\r\nimport { useAttributeFormBuilder, useLayout } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport SectionActions from \"./SectionActions\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { usePropsStoreValue } from \"../../../../Hooks/PropStore/usePropsStore\";\r\nimport GenericTranslationDialog from \"../../../Entities/GenericTranslationDialog\";\r\n\r\nconst SectionHeader = ({ sectionId }) => {\r\n\r\n const { t } = useTranslation([\r\n \"display/components/form\"\r\n ]);\r\n\r\n const [{ steps }, dispatch] = useAttributeFormBuilder();\r\n const layout = useLayout();\r\n const project = usePropsStoreValue(\"project\");\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n const currentSection = layout.find((section) => section.id === sectionId);\r\n\r\n const handleSectionName = (e) => {\r\n dispatch.updateSectionName(e.target.value, sectionId);\r\n };\r\n\r\n const setLabelTranslation = (data) => {\r\n dispatch.updateSectionLanguages(data, sectionId);\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n const isSectionNameExists = () => {\r\n const sectionCount = layout.filter((section) => section.section === currentSection.section).length;\r\n return sectionCount > 1;\r\n };\r\n\r\n return (\r\n
            \r\n
            \r\n \r\n
            \r\n \r\n
            \r\n {showLabelTranslationDialog && (\r\n { setShowLabelTranslationDialog(false) }}\r\n onSave={setLabelTranslation}\r\n languages={currentSection.languages}\r\n project={project}\r\n fields={[\"section\"]}\r\n type={t(\"section.section_name\", { ns: \"display/components/form\" })}\r\n />\r\n )}\r\n
            \r\n setShowLabelTranslationDialog(true)}\r\n className=\"btn btn-secondary\">\r\n \r\n \r\n
            \r\n
            \r\n \r\n
            \r\n );\r\n};\r\n\r\nexport default SectionHeader;\r\n","import React, { useState } from 'react';\r\nimport SectionColumns from './SectionColumns';\r\nimport SectionHeader from './SectionHeader';\r\nimport { useAttributeFormBuilder, useFetchedValues, useLayout } from '../../../../Hooks/Display/useComponentProperties';\r\nimport { findDraggedColumn, findDraggedColumnSectionId } from '../utils';\r\n\r\nconst Sections = ({ draggedAttributeId, onDropAttribute }) => {\r\n const [{ steps }, dispatch] = useAttributeFormBuilder();\r\n const layout = useLayout();\r\n const [draggedColumnId, setDraggedColumnId] = useState(null);\r\n const [fetchedValues] = useFetchedValues();\r\n\r\n // Handle drop for both attributes and columns\r\n const handleDrop = (columns, dropSectionId) => {\r\n if (draggedAttributeId) {\r\n handleDropAttribute(columns, dropSectionId);\r\n } else if (draggedColumnId) {\r\n handleDropColumn(columns, dropSectionId);\r\n }\r\n };\r\n\r\n // Handle dropping an attribute onto a section\r\n const handleDropAttribute = (columns, dropSectionId) => {\r\n const { attributes } = fetchedValues.attributeTable;\r\n const draggedAttribute = attributes.find(attribute => attribute._id === draggedAttributeId);\r\n dispatch.addColum(columns, dropSectionId, draggedAttribute);\r\n onDropAttribute(null);\r\n };\r\n\r\n // Handle dropping a column within or between sections\r\n const handleDropColumn = (columns, dropSectionId) => {\r\n const draggedColumn = findDraggedColumn(layout, draggedColumnId);\r\n const dragSectionId = findDraggedColumnSectionId(layout, draggedColumn);\r\n\r\n if (dragSectionId === dropSectionId) {\r\n dispatch.dropColumnInSameSection(columns, dropSectionId, draggedColumn);\r\n } else {\r\n dispatch.dropColumnInDifferentSection(columns, dragSectionId, dropSectionId, draggedColumn);\r\n }\r\n setDraggedColumnId(null);\r\n };\r\n\r\n // Render sections\r\n return layout.map((section, index) => (\r\n
            \r\n \r\n \r\n
            \r\n ));\r\n};\r\n\r\nexport default Sections;","import React from \"react\";\r\nimport Scrollable from \"../../../Shared/Edit/Scrollable\";\r\nimport Sections from \"../Sections/Sections\";\r\n\r\nconst Layout = ({ draggedAttributeId, onDropAttribute }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Layout;","import React from \"react\";\r\nimport Layout from \"./Layout\";\r\n\r\nconst StepLayout = ({ draggedAttributeId, onDropAttribute }) => {\r\n\r\n return (\r\n
            \r\n \r\n
            \r\n );\r\n}\r\n\r\nexport default StepLayout;","import React, { useState } from \"react\";\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\nimport { useAttributeFormBuilder } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { usePropsStoreValue } from '../../../../Hooks/PropStore/usePropsStore';\r\nimport GenericTranslationDialog from '../../../Entities/GenericTranslationDialog';\r\n\r\nconst EditStepDialog = ({ handleClose }) => {\r\n\r\n const { t } = useTranslation([\r\n \"display/components/form\"\r\n ]);\r\n\r\n const [{ selectedStepId, steps }, dispatch] = useAttributeFormBuilder();\r\n const project = usePropsStoreValue(\"project\");\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n\r\n const step = steps.find(step => step.id === selectedStepId)\r\n const [name, setName] = useState(step.name || \"\");\r\n const [languages, setLanguages] = useState(step.languages || {});\r\n const [message, setMessage] = useState({\r\n isError: false,\r\n text: \"\"\r\n });\r\n\r\n const handleSave = () => {\r\n dispatch.updateStepName(name);\r\n dispatch.updateStepLanguages(languages);\r\n handleClose();\r\n }\r\n\r\n const handleChangeName = (event) => {\r\n const filteredSteps = steps.filter(step => step.id !== selectedStepId);\r\n const isNameEmpty = event.target.value.trim() === \"\";\r\n const isNameTaken = filteredSteps.some(step => step.name.trim().toLowerCase() === event.target.value.trim().toLowerCase());\r\n\r\n setName(event.target.value);\r\n if (isNameEmpty) {\r\n setMessage({\r\n isError: true,\r\n text: t(\"step.edit_step_dialog.errors.name_required\", { ns: \"display/components/form\" })\r\n });\r\n return;\r\n } else {\r\n setMessage({\r\n isError: false,\r\n text: \"\"\r\n });\r\n }\r\n if (isNameTaken) {\r\n setMessage({\r\n isError: true,\r\n text: t(\"step.edit_step_dialog.errors.name_taken\", { ns: \"display/components/form\" })\r\n });\r\n return;\r\n } else {\r\n setMessage({\r\n isError: false,\r\n text: \"\"\r\n });\r\n }\r\n };\r\n\r\n const setLabelTranslation = (data) => {\r\n setLanguages(data);\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n return (\r\n \r\n
            \r\n
            \r\n \r\n {message.text}\r\n \r\n
            \r\n
            \r\n
            {\r\n setShowLabelTranslationDialog(true)\r\n }}>\r\n \r\n {t(\"form_labels.label_translations\")}\r\n \r\n
            \r\n
            \r\n {showLabelTranslationDialog && (\r\n { setShowLabelTranslationDialog(false) }}\r\n onSave={setLabelTranslation}\r\n languages={languages}\r\n project={project}\r\n fields={[\"name\"]}\r\n type={t(\"form_action_dialog.action_field_label\")}\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 EditStepDialog;","import React from 'react';\r\n\r\nexport const OverlayLoader = () => {\r\n return (\r\n
            \r\n )\r\n}","import React from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport InnerLoader from \"../Loader/InnerLoader\";\r\nimport { OverlayLoader } from \"../Loader/OverlayLoader\";\r\nimport Loader from \"../Loader/loader\";\r\n/* refactored - ali */\r\nconst RemoveDialog = ({ toggleDeleteDialog, onDelete, message, Title, deleteButtonText, cancelButtonText, hideCancelButton, hideDeleteButton, showLoader, process, referenceAttr, focusAttribute, orgName, projectName, currentEntity, referenceMessage, loading }) => {\r\n\tfunction remove(e) {\r\n\t\te.target.disabled = true;\r\n\t\tonDelete(e);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{showLoader && }\r\n\t\t\t{loading ?\r\n\t\t\t\t
            :\r\n\t\t\t\t<>
            \r\n\t\t\t\t\t\r\n\t\t\t\t\t
            \r\n\t\t\t\t\t\t{message}\r\n\t\t\t\t\t
            \r\n\t\t\t\t
            \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
            \r\n\t\t\t\t\t\t\t{showLoader && (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
            \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
            \r\n\t\t\t\t\t\t\t\t\t
            \r\n\t\t\t\t\t\t\t\t\t{process && process.message && process.message.length > 0 && (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{process.message}\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
            \r\n\t\t\t\t\t
            }\r\n\t\t
            \r\n\t);\r\n};\r\n\r\nexport default RemoveDialog;\r\n","import React from \"react\";\r\nimport RemoveDialog from \"../../../Shared/Remove/RemoveDialog\";\r\nimport { useAttributeFormBuilder } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst RemoveStepDialog = ({ handleClose }) => {\r\n\r\n const { t } = useTranslation([\r\n \"display/components/form\"\r\n ]);\r\n\r\n const [{ selectedStepId, steps }, dispatch] = useAttributeFormBuilder();\r\n const step = steps.find(step => step.id === selectedStepId);\r\n\r\n const handleRemove = () => {\r\n dispatch.removeStep();\r\n handleClose();\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default RemoveStepDialog;","import React, { useState } from \"react\";\r\nimport { useAttributeFormBuilder } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport EditStepDialog from \"../Dialogs/EditStepDialog\";\r\nimport RemoveStepDialog from \"../Dialogs/RemoveStepDialog\";\r\n\r\nconst StepActions = ({ step }) => {\r\n const [{ steps, selectedStepId }] = useAttributeFormBuilder();\r\n const [showEditStepDialog, setShowEditStepDialog] = useState(false);\r\n const [showRemoveStepDialog, setShowDeleteStepDialog] = useState(false);\r\n const showEditAction = selectedStepId === step.id;\r\n const showRemoveAction = selectedStepId === step.id && steps.length > 1;\r\n return (\r\n <>\r\n {showEditStepDialog && setShowEditStepDialog(false)} />}\r\n {showRemoveStepDialog && setShowDeleteStepDialog(false)} />}\r\n {\r\n showEditAction &&\r\n <>\r\n \r\n setShowEditStepDialog(true)}>\r\n \r\n \r\n \r\n }\r\n {\r\n showRemoveAction &&\r\n <>\r\n \r\n setShowDeleteStepDialog(true)}>\r\n \r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default StepActions;","import React from \"react\";\r\nimport StepActions from \"./StepActions\";\r\n\r\nconst Step = ({ step }) => {\r\n return (\r\n
            \r\n {step.name}\r\n \r\n
            \r\n );\r\n};\r\n\r\nexport default Step;","import React from 'react';\r\nimport { TabStrip, TabStripTab } from '@progress/kendo-react-layout';\r\nimport { useAttributeFormBuilder } from '../../../../Hooks/Display/useComponentProperties';\r\nimport CreateStep from './CreateStep';\r\nimport StepLayout from './StepLayout';\r\nimport Step from './Step';\r\n\r\nconst Steps = ({ draggedAttributeId, onDropAttribute }) => {\r\n\r\n const [{ steps, selectedStepId }, dispatch] = useAttributeFormBuilder();\r\n\r\n const handleSelectedStep = (e) => {\r\n const Step = steps[e.selected];\r\n dispatch.setSelectedStep(Step.id)\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {\r\n steps.length > 0 &&\r\n step.id === selectedStepId)}\r\n onSelect={handleSelectedStep}\r\n >\r\n {steps.map((step) => (\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 Steps;","import React from 'react';\r\n\r\nconst ErrorMessage = (props) => {\r\n\r\n if (props.valid) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {props.error}\r\n \r\n );\r\n};\r\n\r\nErrorMessage.displayName = 'ErrorMessage';\r\n\r\nexport default ErrorMessage;\r\n","import React, { useState } from 'react';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport IconPicker from '../../../Shared/IconPicker/IconPicker';\r\nimport { useAttributeFormBuilder } from '../../../../Hooks/Display/useComponentProperties';\r\nimport { useTranslation } from 'react-i18next';\r\nimport ErrorMessage from '../../../Shared/Error/ErrorMessage';\r\nimport GenericTranslationDialog from '../../../Entities/GenericTranslationDialog';\r\nimport { usePropsStoreValue } from '../../../../Hooks/PropStore/usePropsStore';\r\n\r\nconst EditFormActionDialog = ({ handleClose, actionId }) => {\r\n\r\n const { t } = useTranslation([\r\n \"display/components/form\"\r\n ]);\r\n const project = usePropsStoreValue(\"project\");\r\n\r\n const [{ formActions }, dispatch] = useAttributeFormBuilder();\r\n const [action, setAction] = useState(formActions.find(action => action.id === actionId) || {});\r\n const [validName, setValidName] = useState({\r\n isValid: true,\r\n errorMessage: \"\"\r\n });\r\n\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n\r\n const handleSave = () => {\r\n dispatch.updateFormAction(action);\r\n handleClose();\r\n }\r\n\r\n const handleActionNameChange = (e) => {\r\n const name = e.target.value.trim();\r\n const nameIsBlank = name === \"\";\r\n const nameStartWithNumber = /^\\d/.test(name);\r\n const isNameLong = name.length > 64;\r\n\r\n const validName = {\r\n isValid: !(nameIsBlank || nameStartWithNumber || isNameLong),\r\n errorMessage: \"\"\r\n }\r\n\r\n if (!validName.isValid) {\r\n if (nameIsBlank) {\r\n validName.errorMessage = t(\"form_action_dialog.errors.label_required\", { ns: \"display/components/form\" });\r\n } else if (nameStartWithNumber) {\r\n validName.errorMessage = t(\"form_action_dialog.errors.Label_cannot_start_with_number\", { ns: \"display/components/form\" });\r\n } else if (isNameLong) {\r\n validName.errorMessage = t(\"form_action_dialog.errors.label_cannot_be_too_long\", { ns: \"display/components/form\" });\r\n } else {\r\n validName.errorMessage = \"\";\r\n }\r\n }\r\n setValidName(validName);\r\n setAction({\r\n ...action,\r\n name: e.target.value\r\n });\r\n }\r\n\r\n function setLabelTranslation(data) {\r\n setAction({\r\n ...action,\r\n languages: data\r\n });\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n const shouldSaveDisabled = () => {\r\n return !action.name || (action.isActionHasIcon && !action.icon) || !validName.isValid;\r\n }\r\n\r\n return (\r\n \r\n
            \r\n \r\n

            \r\n {t(`form_action_dialog.actions.${action.type.toLowerCase()}`, { ns: \"display/components/form\" })}\r\n

            \r\n
            \r\n
            \r\n \r\n {!validName.isValid &&\r\n \r\n }\r\n \r\n
            \r\n
            \r\n
            {\r\n setShowLabelTranslationDialog(true)\r\n }}>\r\n \r\n {t(\"form_labels.label_translations\")}\r\n \r\n
            \r\n
            \r\n {showLabelTranslationDialog && (\r\n { setShowLabelTranslationDialog(false) }}\r\n onSave={setLabelTranslation}\r\n languages={action.languages}\r\n project={project}\r\n fields={[\"label\"]}\r\n type={t(\"form_action_dialog.action_field_label\")}\r\n />\r\n )}\r\n
            \r\n setAction({\r\n ...action,\r\n icon: \"\",\r\n isActionHasIcon: event.value\r\n })}\r\n />\r\n
            \r\n {\r\n action.isActionHasIcon &&\r\n
            \r\n \r\n setAction({\r\n ...action,\r\n icon: props,\r\n })}\r\n />\r\n
            \r\n }\r\n
            \r\n \r\n \r\n {t(\"form_action_dialog.buttons.save\", { ns: \"display/components/form\" })}\r\n \r\n
            \r\n \r\n )\r\n}\r\n\r\nexport default EditFormActionDialog;","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useAttributeFormBuilder, useComponentProperties } from '../../../../Hooks/Display/useComponentProperties';\r\nimport EditFormActionDialog from '../Dialogs/EditFormActionDialog';\r\nimport { useSelectedComponent } from '../../../../Hooks/Display/useComponents';\r\nimport { useSelectedPage } from '../../../../Hooks/Display/usePages';\r\nimport { Menu, MenuItem } from '@progress/kendo-react-layout';\r\nimport { Popup } from '@progress/kendo-react-popup';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst FormActions = ({ step }) => {\r\n const { t } = useTranslation([\r\n \"display/components/form\"\r\n ]);\r\n\r\n const [{ formActions, steps, selectedStepId }, dispatch] = useAttributeFormBuilder();\r\n const [properties, setProperty] = useComponentProperties();\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const selectedStepIndex = steps.findIndex(step => step.id === selectedStepId);\r\n const [showEditFormActionDialog, setShowEditFormActionDialog] = useState(false);\r\n const [selectedActionId, setSelectedActionId] = useState(null);\r\n const [showDropdownOptions, setShowDropdownOptions] = useState(false);\r\n\r\n const dropdownButton = useRef(null);\r\n const popupRef = useRef(null);\r\n\r\n useEffect(() => {\r\n const abc = formActions;\r\n debugger;\r\n window.addEventListener('click', handleOutsideClick);\r\n\r\n return () => {\r\n window.removeEventListener('click', handleOutsideClick);\r\n }\r\n }, [])\r\n\r\n function handleOutsideClick(e) {\r\n if (\r\n popupRef.current &&\r\n popupRef.current._popup &&\r\n !popupRef.current._popup.contains(e.target) &&\r\n !dropdownButton.current.contains(e.target)\r\n ) {\r\n setShowDropdownOptions(false);\r\n }\r\n }\r\n\r\n const getAllowedActions = () => {\r\n if (selectedComponent.componentType === \"View\") {\r\n if (properties.isMultiStepForm && steps.length > 1) {\r\n return [\"Previous\", \"Next\"];\r\n } else {\r\n return [];\r\n }\r\n } else {\r\n if (properties.isMultiStepForm) {\r\n if (steps.length === 1) {\r\n return [\"Cancel\", \"Submit\"];\r\n }\r\n\r\n if (selectedStepIndex === 0) {\r\n return [\"Cancel\", \"Next\"];\r\n }\r\n\r\n if (selectedStepIndex === steps.length - 1) {\r\n return [\"Submit\", \"Cancel\", \"Previous\"];\r\n }\r\n\r\n return [\"Cancel\", \"Previous\", \"Next\"];\r\n } else {\r\n if (selectedPage.subPageType === \"Edit Record\") {\r\n return [\"Submit\", \"Cancel\"];\r\n }\r\n return [\"Submit\", \"Cancel\", \"SaveAndNew\"];\r\n }\r\n }\r\n };\r\n\r\n\r\n const allowedActionType = getAllowedActions();\r\n\r\n const handleDialogClose = () => {\r\n setSelectedActionId(null);\r\n setShowEditFormActionDialog(false);\r\n };\r\n\r\n const handleEditButtonClick = (actionId) => {\r\n setShowEditFormActionDialog(true);\r\n setSelectedActionId(actionId);\r\n setShowDropdownOptions(false);\r\n };\r\n\r\n return (\r\n
            \r\n {showEditFormActionDialog && (\r\n \r\n )}\r\n
            \r\n {\r\n formActions.length > 0 &&\r\n allowedActionType.length > 0 &&\r\n <>\r\n setShowDropdownOptions(!showDropdownOptions)}\r\n >\r\n \r\n \r\n \r\n {\r\n formActions.length > 0 && formActions.map((action, index) => (\r\n allowedActionType.includes(action.type) && (\r\n handleEditButtonClick(action.id)}\r\n >\r\n {t(\"form_action_dialog.edit\", { ns: \"display/components/form\" })} {action.name} {t(\"form_action_dialog.button\", { ns: \"display/components/form\" })}\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 FormActions;","import React, { useEffect, useMemo, useState } from \"react\";\r\nimport ComponentAttributeToolbar from \"../AttributeTable/ComponentAttributeToolbar\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { useAttributes, useFetchedValues, useAttributeFormBuilder, useChangeBooleans, useComponentProperties } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { getAllAttributes } from \"../../Helpers/Schema/Schema\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { filterAttributesForComponent } from \"../AttributeTable/utils\";\r\nimport SyncAttributeDialog from \"../AttributeTable/SyncAttributeDialog/SyncAttributeDialog\";\r\nimport { bySystemAttributeDesc } from \"../utils\";\r\nimport Skeleton from \"../../Shared/Skeleton/Skeleton\";\r\nimport { useSelectedPage } from \"../../../Hooks/Display/usePages\";\r\nimport Toolbar from \"./Toolbar\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport { getAttributesFromLayout, isFormActionsChanged, isStepsChanged } from \"./utils\";\r\nimport { getEntityPages, getReferenceAttributeEntityPages } from \"../../../API/Display/Display\";\r\nimport Steps from \"./Steppers/Steps\";\r\nimport StepLayout from \"./Steppers/StepLayout\";\r\nimport FormActions from \"./Steppers/FormActions\";\r\nimport CreateSection from \"./Sections/CreateSection\";\r\nimport { uuidv4 } from \"../../../Hooks/Display/utils\";\r\nimport { getAttributes } from \"../../../API/Attribute/Attribute\";\r\n\r\nconst AttributeFormBuilder = () => {\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const [properties, setProperty] = useComponentProperties();\r\n const [state, dispatch] = useAttributes();\r\n const [{ steps, selectedStepId, formActions, formBuilderLoading }, dispatchLayout] = useAttributeFormBuilder();\r\n const [fetchedValues, { updateAttributeTableFetchedValue }] = useFetchedValues();\r\n const entityId = usePropsStoreValue(\"entityId\");\r\n const [draggedAttributeId, setDraggedAttributeId] = useState(null);\r\n const [{ isAttributeFormBuilderChanged }, setChangeBoolean] = useChangeBooleans();\r\n\r\n const toolbarAttributes = useMemo(() => {\r\n if (fetchedValues && fetchedValues.attributeTable && fetchedValues.attributeTable.attributes) {\r\n const attributes = filterAttributesForComponent(\r\n fetchedValues.attributeTable.attributes,\r\n selectedComponent.componentType,\r\n selectedPage.subPageType\r\n );\r\n const compponentAttributes = []\r\n for (const step of steps) {\r\n const attributes = getAttributesFromLayout(\r\n step.layout,\r\n fetchedValues.attributeTable.attributes,\r\n entityId\r\n );\r\n compponentAttributes.push(...attributes);\r\n }\r\n const selectableAttributes = attributes.filter(attribute => !compponentAttributes.some(attr => attr.attributeId === attribute._id));\r\n const sortedSelectableAttributes = selectableAttributes.sort((a, b) => a.order - b.order).sort(bySystemAttributeDesc);\r\n const normalAttributes = sortedSelectableAttributes.filter(attribute => attribute.isSystemAttribute === false || attribute.isSystemAttribute === undefined);\r\n const systemAttributes = sortedSelectableAttributes.filter(attribute => attribute.isSystemAttribute);\r\n const sortAlphabetically = normalAttributes.sort((a, b) => a.attributeLabel.localeCompare(b.attributeLabel));\r\n return [...sortAlphabetically, ...systemAttributes];;\r\n }\r\n return [];\r\n }, [fetchedValues, steps])\r\n\r\n useEffect(() => {\r\n getEntityAttributes();\r\n }, [selectedComponent]);\r\n\r\n useEffect(() => {\r\n getAttributeFromBuilderLayout();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const isAnyStepChanged = isStepsChanged(steps, selectedComponent.steps);\r\n const isAnyActionsChanged = isFormActionsChanged(formActions, selectedComponent.formActions);\r\n const isChanged = isAnyStepChanged || isAnyActionsChanged;\r\n setChangeBoolean(\"isAttributeFormBuilderChanged\", isChanged);\r\n }, [steps, formActions])\r\n\r\n async function getEntityAttributes() {\r\n if (state.loading) {\r\n const attributes = await getAttributes(entityId);\r\n updateAttributeTableFetchedValue(\"attributes\", attributes);\r\n const referenceAttributePages = await getReferenceAttributePages(attributes);\r\n updateAttributeTableFetchedValue(\"referenceAttributePages\", referenceAttributePages);\r\n const attributesTableData = attributes.map(attribute => ({\r\n ...attribute,\r\n attributeId: attribute._id,\r\n entityId: entityId\r\n }));\r\n dispatch.setAttributes(attributesTableData);\r\n }\r\n }\r\n\r\n function getAttributeFromBuilderLayout() {\r\n if (formBuilderLoading) {\r\n dispatchLayout.setSteps(selectedComponent.steps);\r\n dispatchLayout.setSelectedStep(selectedComponent.steps[0].id);\r\n dispatchLayout.setFormActions(selectedComponent.formActions);\r\n }\r\n }\r\n\r\n async function getReferenceAttributePages(attributes) {\r\n const allPages = [];\r\n for (const attribute of attributes) {\r\n attribute.entityId = entityId;\r\n if (attribute.attributeType === \"Entity Lookup\") {\r\n const { data: pages } = await getEntityPages(attribute.entityId, selectedPage.portalId);\r\n const singleAndEditRecordPages = pages.filter(page => page.subPageType === \"Single Record\" || page.subPageType === \"Edit Record\");\r\n allPages.push(...singleAndEditRecordPages);\r\n }\r\n }\r\n return allPages;\r\n }\r\n\r\n function handleRecommendation(sections) {\r\n const { attributes } = fetchedValues.attributeTable;\r\n for (const section of sections) {\r\n section.columns = section.columns.filter(column => (\r\n attributes.some(attribute => attribute._id === column.attributeId)\r\n ))\r\n for (const column of section.columns) {\r\n const attribute = attributes.find(attribute => attribute._id === column.attributeId);\r\n column.i = uuidv4();\r\n column.attributeType = attribute.attributeType;\r\n column.cellRules = attribute.showCellFormatingIfStatement && selectedComponent.componentType === \"View\";\r\n column.maxW = 12;\r\n switch (attribute.attributeType) {\r\n case \"Multiline Text\":\r\n column.minH = 2;\r\n column.minW = 6;\r\n column.h = 2;\r\n break;\r\n case \"Html\":\r\n column.minH = 3;\r\n column.minW = 6;\r\n column.h = 3;\r\n break;\r\n default:\r\n column.minH = 1;\r\n column.minW = 1;\r\n column.h = 1;\r\n break;\r\n }\r\n }\r\n }\r\n dispatch.updateLayoutFromRecommendation(sections);\r\n }\r\n\r\n if (state.loading) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n
            \r\n {state.showSyncAttributeDialog && }\r\n 1}\r\n />\r\n
            \r\n
            \r\n \r\n \r\n \r\n
            \r\n
            \r\n {properties.isMultiStepForm ?\r\n \r\n :\r\n
            \r\n \r\n \r\n
            \r\n }\r\n step.id === selectedStepId)} />\r\n
            \r\n
            \r\n
            \r\n );\r\n};\r\n\r\nexport default AttributeFormBuilder;","import { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { useChangeBooleans, useComponentProperties, useResetAttributeFormBuilder, useResetAttributeTable, useResetComponentProperties, useSaveComponent, useUpdateSyncComponentAttributes } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport componentPropertiesMap from \"./ComponentFormProperties.json\";\r\nimport { useEffect, useState } from \"react\";\r\nimport AttributeFormBuilder from \"../FormBuilder/AttributeFormBuilder\";\r\nimport { useAttributeFormBuilder } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nfunction View() {\r\n\r\n const labelOrientations = [\"Top\", \"Left\"];\r\n const columns = [\"1\", \"2\"];\r\n\r\n const formProperties = componentPropertiesMap.View;\r\n\r\n // hooks\r\n const selectedPage = useSelectedPage();\r\n const [{ steps }, dispatch] = useAttributeFormBuilder();\r\n const selectedComponent = useSelectedComponent();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const advancedMode = usePropsStoreValue(\"advancedMode\");\r\n const updateSyncedComponentAttributes = useUpdateSyncComponentAttributes();\r\n const resetContext = useResetComponentProperties();\r\n const saveComponent = useSaveComponent();\r\n const updatePageComponent = useUpdatePageComponent(selectedPage.parentId, selectedPage._id);\r\n const resetAttributes = useResetAttributeTable();\r\n const resetLayout = useResetAttributeFormBuilder();\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n const [{\r\n isGeneralPropertiesChanged,\r\n isAttributeFormBuilderChanged,\r\n isAttributeTableChanged\r\n }, setChangeProperty] = useChangeBooleans();\r\n\r\n const { t, i18n } = useTranslation([\r\n \"display/common\",\r\n \"display/component_toolbar\",\r\n \"display/components/form\"\r\n ])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (selectedPage && selectedComponent) {\r\n setProperties();\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n setLoading(false);\r\n }\r\n }, [selectedPage._id, selectedComponent.id])\r\n\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n if (!loading) {\r\n setIsChanged();\r\n }\r\n }, [properties])\r\n\r\n // state\r\n const [tabSelected, setSelectedTab] = useState(0);\r\n\r\n function handleTabSelect(event) {\r\n setSelectedTab(event.selected)\r\n }\r\n\r\n function setProperties() {\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperty(property, selectedComponent[property])\r\n }\r\n }\r\n }\r\n\r\n function handleInputChange(event) {\r\n setProperty(event.target.name, event.target.value);\r\n }\r\n\r\n function handleIsMultiStepFormChange(event) {\r\n setProperty(event.target.name, event.target.value);\r\n if (!event.target.value) {\r\n setProperty(\"allowToggleBetweenSteps\", false);\r\n setProperty(\"showSteps\", false);\r\n dispatch.removeMultipleSteps()\r\n } else {\r\n setProperty(\"allowToggleBetweenSteps\", true);\r\n setProperty(\"showSteps\", true);\r\n }\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n async function handleSave() {\r\n const updatedComponent = await saveComponent();\r\n updatePageComponent(selectedComponent.id, updatedComponent)\r\n if (isAttributeTableChanged && selectedComponent.componentsToSync && selectedComponent.componentsToSync.length > 0) {\r\n updateSyncedComponentAttributes();\r\n }\r\n }\r\n\r\n function resetComponent() {\r\n if (isGeneralPropertiesChanged) {\r\n setProperties();\r\n }\r\n if (isAttributeFormBuilderChanged) {\r\n resetLayout();\r\n }\r\n if (isAttributeTableChanged) {\r\n resetAttributes();\r\n }\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 {t(\"form_labels.label_orientation\", { ns: \"display/components/form\" })}\r\n
            \r\n \r\n \r\n \r\n {\r\n advancedMode &&\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 View;","import { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\n\r\nfunction DropDownCell({ dataItem, field, dropdownProps = {} }) {\r\n const fieldArray = field.split('.');\r\n\r\n if (dataItem.selected) {\r\n return (\r\n
  • \r\n )\r\n }\r\n\r\n const value = dataItem[fieldArray[0]] && dataItem[fieldArray[0]][fieldArray[1]] ? dataItem[fieldArray[0]][fieldArray[1]] : '';\r\n\r\n return (\r\n \r\n )\r\n\r\n}\r\n\r\nexport default DropDownCell;","function DeleteCell({ dataItem, onDelete }) {\r\n function handleDelete() {\r\n onDelete(dataItem.id);\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default DeleteCell;","import { Checkbox } from \"@progress/kendo-react-inputs\";\r\n\r\nfunction ShowCell({ hidden, dataItem, onToggleShow }) {\r\n function handleToggleShow() {\r\n onToggleShow(dataItem.id);\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default ShowCell;","import * as React from \"react\";\r\n\r\nfunction IDCell(props) {\r\n return (\r\n \r\n \r\n \r\n  \r\n {\r\n props.dataItem['#']\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default IDCell;","export function reorderData(data, activeItem, dataItem, direction) {\r\n if (activeItem === dataItem) {\r\n return data;\r\n }\r\n const reorderedData = data.slice();\r\n let prevIndex = reorderedData.findIndex((p) => p.id === activeItem.id);\r\n let nextIndex = reorderedData.findIndex((p) => p.id === dataItem.id) + (direction === \"before\" ? -1 : 0);\r\n if (prevIndex > nextIndex) {\r\n nextIndex++;\r\n }\r\n reorderedData.splice(prevIndex, 1);\r\n reorderedData.splice(nextIndex, 0, activeItem || reorderedData[0]);\r\n return reorderedData;\r\n}\r\n\r\nexport function getAvailableEntities(entities, references) {\r\n return entities.filter(entity => (\r\n !references.some(reference => reference.entity.id === entity.id)\r\n ))\r\n}\r\n\r\nexport function getAvailableRelations(relations, references) {\r\n return relations.filter(relation => (\r\n !references.some(reference => {\r\n return reference.relation && reference.relation._id === relation._id\r\n })\r\n ));\r\n}\r\n\r\nexport function getAvailablePages(dataItem) {\r\n if (dataItem.relation && dataItem.relation.relationId === \"attachment\") {\r\n const attachmentPage = dataItem.entity.pages.find(page => page._id === \"page-attachment\");\r\n return attachmentPage ? [attachmentPage] : [];\r\n }\r\n return dataItem.entity.pages.filter(page => page._id !== \"page-attachment\");\r\n}","import { Grid, GridColumn } from \"@progress/kendo-react-grid\";\r\nimport { ENTITY_LABEL } from \"../../../Helpers/Labels/EntityLabel\";\r\nimport { useSelectedComponent } from \"../../../../Hooks/Display/useComponents\";\r\nimport { useChangeBooleans, useFetchedValues, useReferences } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { usePropsStoreValue } from \"../../../../Hooks/PropStore/usePropsStore\";\r\nimport { getProjectRelations } from \"../../../Helpers/Schema/Schema\";\r\nimport { getEntityPages } from \"../../../../API/Display/Display\";\r\nimport { getPageByProperty } from \"../../utils\";\r\nimport DropDownCell from \"./Cells/DropdownCell\";\r\nimport DeleteCell from \"./Cells/DeleteCell\";\r\nimport ShowCell from \"./Cells/ShowCell\";\r\nimport IdCell from \"./Cells/IdCell\";\r\nimport { DraggableRow } from \"../../AttributeTable/Grid/Row/DraggableRow\";\r\nimport { getAvailablePages, getAvailableRelations, reorderData } from \"./utils\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport Scrollable from \"../../../Shared/Edit/Scrollable\";\r\n\r\nfunction ReferenceTable() {\r\n\r\n const selectedComponent = useSelectedComponent();\r\n\r\n const [{ referenceTable: fetchedValues }] = useFetchedValues();\r\n const [state, dispatch] = useReferences();\r\n const [, setChangeProperty] = useChangeBooleans();\r\n const [activeItem, setActiveItem] = useState(null)\r\n\r\n const { t } = useTranslation(\"display/tables/reference\", { useSuspense: false });\r\n\r\n useEffect(() => {\r\n debugger\r\n setIsChanged();\r\n }, [state.references])\r\n\r\n function handleSelect(event) {\r\n dispatch.selectReference(event.dataItem.id)\r\n }\r\n\r\n function handleAddClick() {\r\n dispatch.selectReference(state.references.length + 1)\r\n dispatch.addNewReferenceRow();\r\n }\r\n\r\n function handleEntityChange(event, dataItem) {\r\n dispatch.updateReferenceProperty(dataItem.id, \"entity\", event.target.value)\r\n dispatch.updateReferenceProperty(dataItem.id, \"relation\", null)\r\n dispatch.updateReferenceProperty(dataItem.id, \"page\", null)\r\n }\r\n\r\n function handleRelationChange(event, dataItem) {\r\n if (dataItem.page && dataItem.page._id === \"page-attachment\") {\r\n dispatch.updateReferenceProperty(dataItem.id, \"page\", null)\r\n } else if (event.target.value._id === \"attachment\") {\r\n const attachmentPage = dataItem.entity.pages.find(page => page._id === \"page-attachment\")\r\n dispatch.updateReferenceProperty(dataItem.id, \"page\", attachmentPage);\r\n }\r\n dispatch.updateReferenceProperty(dataItem.id, \"relation\", event.target.value)\r\n }\r\n\r\n function handlePageChange(event, dataItem) {\r\n dispatch.updateReferenceProperty(dataItem.id, \"page\", event.target.value)\r\n }\r\n\r\n function handleToggleShow(id) {\r\n const reference = state.references.find(reference => reference.id === id);\r\n dispatch.updateReferenceProperty(id, \"show\", !reference.show);\r\n }\r\n\r\n function handleDelete(id) {\r\n dispatch.deleteReference(id);\r\n }\r\n\r\n function dragStart(dataItem) {\r\n setActiveItem(dataItem);\r\n }\r\n\r\n function reorder(dataItem, direction) {\r\n const reorderedData = reorderData(state.references, activeItem, dataItem, direction);\r\n dispatch.setReferences(reorderedData);\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n let hasErrors = false;\r\n debugger;\r\n for (const reference of state.references) {\r\n if (!reference.entity || !reference.relation || !reference.page) {\r\n hasErrors = true;\r\n }\r\n if (hasErrors) {\r\n break;\r\n }\r\n }\r\n if (!hasErrors) {\r\n if (state.references.length !== selectedComponent.referredPages.length) {\r\n isChanged = true;\r\n } else {\r\n for (let index = 0; index < state.references.length; index++) {\r\n const reference = state.references[index];\r\n if (reference.isNew) {\r\n if (\r\n reference.entity && reference.entity._id &&\r\n reference.relation && reference.relation._id &&\r\n reference.page && reference.page._id\r\n ) {\r\n isChanged = true;\r\n }\r\n } else {\r\n const initialReference = selectedComponent.referredPages[index];\r\n if (\r\n reference.id !== initialReference.id ||\r\n reference.entity._id !== initialReference.entityId ||\r\n reference.relation._id !== initialReference.relationId ||\r\n reference.page._id !== initialReference.pageId ||\r\n reference.show !== initialReference.show\r\n ) {\r\n isChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n setChangeProperty(\"isReferenceTableChanged\", hasErrors ? false : isChanged)\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n ({\r\n ...reference,\r\n '#': index + 1,\r\n selected: reference.id === state.selectedReferenceId\r\n }))}\r\n scrollable=\"true\"\r\n selectedField=\"selected\"\r\n rowRender={(row, rowProps) => (\r\n \r\n )}\r\n onRowClick={handleSelect}\r\n >\r\n \r\n (\r\n handleEntityChange(event, props.dataItem)\r\n }}\r\n />\r\n )}\r\n />\r\n (\r\n handleRelationChange(event, props.dataItem)\r\n }}\r\n />\r\n )}\r\n />\r\n (\r\n handlePageChange(event, props.dataItem)\r\n }}\r\n />\r\n )}\r\n />\r\n (\r\n \r\n )}\r\n width={30}\r\n />\r\n (\r\n \r\n )}\r\n width={30}\r\n />\r\n \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default ReferenceTable;","import { callApiWithAuthorization } from \"../../../API/CallApi\";\r\n\r\n/**\r\n * [getAllAttributes gets all the attributes of an entity]\r\n * @param {[string]} entityId [entity id of an entity, whose attributes are returned]\r\n * @return {Promise} [all attributes of an entity]\r\n */\r\n\r\nexport async function getAllAttributes(entityId) {\r\n\tlet getAttributesRequest = await callApiWithAuthorization(\"/api/v0/nodes/\" + entityId + \"/getAllAttributes\");\r\n\tlet attributes = await getAttributesRequest.json();\r\n\treturn attributes;\r\n}\r\n\r\n/**\r\n * [getAllLinkedEntities gets all the linked entity of an entity]\r\n * @param {[string]} entityId [entity id on an entity, whose linked entities are returned]\r\n * @return {[LinkedEntity[]]} [all linked entities of an entity]\r\n */\r\n\r\nexport async function getAllLinkedEntities(entityId) {\r\n\tlet getAllLinkedEntitiesRequest = await callApiWithAuthorization(\"/api/v0/nodes/\" + entityId + \"/SubEntity\");\r\n\tlet linkedEntities = await getAllLinkedEntitiesRequest.json();\r\n\treturn linkedEntities.data;\r\n}\r\n\r\n/**\r\n * [getAllPages return all the pages only of created under entity]\r\n * @param {[string]} entityId [id of the entity]\r\n * @return {[Page[]]} [all the pages under the entity with id entityId]\r\n */\r\nexport async function getAllPages(entityId) {\r\n\tlet getAllPagesRequest = await callApiWithAuthorization(\"/api/v0/nodes/\" + entityId + \"/pagesOnly\");\r\n\tlet pages = await getAllPagesRequest.json();\r\n\treturn pages;\r\n}\r\n\r\n/**\r\n * [getAllComponents returns all the components of a page]\r\n * @param {[string]} pageId [id of the page]\r\n * @return {[Component[]]} [tree of the component of a page]\r\n */\r\nexport async function getAllComponents(pageId) {\r\n\tconst request = await callApiWithAuthorization('/api/v0/nodes/' + pageId + \"/components\");\r\n\tconst response = await request.json();\r\n\tconst components = response.records[0]?._fields[0]?.has_component;\r\n\treturn components;\r\n}\r\n\r\n/**\r\n * [getRelatedEntityAttributes returns reference attributes of a linked entity]\r\n * @param {[string]} entityId [id of the linked entity]\r\n * @return {[Attribute[]]} Reference attributes of the linked entity]\r\n */\r\n\r\nexport async function getRelatedEntityAttributes(entityId, attributeType) {\r\n\tconst request = await callApiWithAuthorization(\"/api/v0/entity/\" + entityId + \"/relatedEntityAttributes?attributeType=\" + attributeType);\r\n\tconst result = await request.json();\r\n\treturn result;\r\n}\r\n\r\nexport async function getUserAndOrganizationData(email) {\r\n\tconst response = await callApiWithAuthorization(`/api/v0/getOrganizationUserRole/${email}`);\r\n\tconst roleOfUserInOrganisations = await response.json();\r\n\treturn roleOfUserInOrganisations;\r\n}\r\n\r\nexport async function getProjectRelations(projectId) {\r\n\tconst request = await callApiWithAuthorization(`/api/v0/project/${projectId}/entityRelations`);\r\n\tconst response = await request.json();\r\n\treturn response;\r\n}","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function createEntityConfigurations(projectId, entityProperties) {\r\n try {\r\n const request = await callApiWithAuthorization(`/api/v0/entity/${projectId}`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(entityProperties),\r\n });\r\n const response = await request.json();\r\n return response;\r\n } catch (e) {\r\n return [null, e.message];\r\n }\r\n}\r\n\r\nexport async function updateEntityAndConfiguration(id, properties) {\r\n try {\r\n const request = await callApiWithAuthorization(`/api/v0/updateEntityAndConfiguration/${id}`, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(properties)\r\n });\r\n const response = await request.json();\r\n return response;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n}\r\n\r\nexport async function updateEntity(id, properties) {\r\n try {\r\n const request = await callApiWithAuthorization(`/api/v0/entity/${id}`, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(properties)\r\n });\r\n const response = await request.json();\r\n return response;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n}\r\n\r\nexport async function getEntities(projectId) {\r\n let request = await callApiWithAuthorization(\"/api/v0/entities/\" + projectId);\r\n let result = await request.json();\r\n return result;\r\n}\r\n\r\nexport async function deleteEntity(projectId, entityId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/entity/\" + entityId, {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function bulkDeleteEnities(projectId, entityIds) {\r\n const request = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/entities\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n entityIds: entityIds\r\n }),\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getPortalEntitiesAndPagesConfigurations(portalId, projectId) {\r\n const request = await callApiWithAuthorization(`/api/v0/project/${projectId}/portal/${portalId}/getPortalEntitiesAndPagesConfigurations`);\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateEntitiesConfigurations(data, portalId) {\r\n const request = await callApiWithAuthorization(`/api/v0/updateEntitiesConfigurations?portalId=` + portalId, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(data)\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\n/**\r\n * Returns an array of entities that are the target of a mirror attribute on the entity with the given id.\r\n * @param {string} entityId id of the entity to get mirror attribute target entities for\r\n * @returns {Promise>} an array of entities that are the target of a mirror attribute on the entity with the given id\r\n */\r\nexport async function getMirrorAttributeTargetEntities(entityId) {\r\n try {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/entity/${entityId}/mirror-attribute-entity-targets`\r\n );\r\n const response = await request.json();\r\n return response;\r\n } catch (e) {\r\n return e.message;\r\n }\r\n}\r\n\r\nexport async function getEntityById(entityId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/entity/${entityId}`\r\n );\r\n const response = await request.json();\r\n return response;\r\n}","import Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport componentPropertiesMap from './ComponentFormProperties.json';\r\nimport { useChangeBooleans, useComponentProperties, useFetchedValues, useReferences, useResetComponentProperties, useSaveComponent } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport { DragAndDrop } from '@progress/kendo-react-common';\r\nimport ReferenceTable from \"./ReferenceTable/ReferenceTable\";\r\nimport { useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { getProjectRelations } from \"../../Helpers/Schema/Schema\";\r\nimport { getEntityPages } from \"../../../API/Display/Display\";\r\nimport { getPageByProperty } from \"../utils\";\r\nimport ComponentFormSkeleton from \"../../Display/Shared/ComponentFormSkeleton\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getEntities } from \"../../../API/Entity/Entity\";\r\nimport GenericTranslationDialog from \"../../Entities/GenericTranslationDialog\";\r\nimport { isLanguagesChanged } from \"../utils\";\r\n\r\nfunction Reference() {\r\n\r\n const formProperties = componentPropertiesMap.Reference;\r\n\r\n const projectId = usePropsStoreValue(\"projectId\");\r\n const entityId = usePropsStoreValue(\"entityId\");\r\n const project = usePropsStoreValue(\"project\");\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const resetContext = useResetComponentProperties();\r\n const saveComponent = useSaveComponent();\r\n const updatePageComponent = useUpdatePageComponent(selectedPage.parentId, selectedPage._id);\r\n\r\n const [{ referenceTable: fetchedValues }, { updateReferenceTableFetchedValue }] = useFetchedValues();\r\n const [properties, setProperties] = useComponentProperties();\r\n const [, setChangeProperty] = useChangeBooleans();\r\n const [state, dispatch] = useReferences();\r\n\r\n const { t, i18n } = useTranslation([\r\n \"display/common\",\r\n \"display/component_toolbar\",\r\n \"display/tables/reference\"\r\n ])\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setPropertiesUsingEntities(fetchedValues.entities);\r\n }\r\n }, [selectedComponent])\r\n\r\n useEffect(() => {\r\n setIsChanged();\r\n }, [state.references])\r\n\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n if (!loading) {\r\n setIsChanged();\r\n }\r\n }, [properties]);\r\n\r\n // state\r\n const [tabSelected, setTabSelected] = useState(0);\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n\r\n // functions\r\n async function getData() {\r\n const entities = await getEntities(projectId);\r\n const relations = await getProjectRelations(projectId);\r\n for (const entity of entities) {\r\n const { data: pages } = await getEntityPages(entity._id);\r\n const entityRelations = relations.filter(relation => (\r\n (relation.fromEntity._id === entityId && relation.toEntity._id === entity._id) ||\r\n (relation.toEntity._id === entityId && relation.fromEntity._id === entity._id)\r\n ));\r\n const referencePages = [];\r\n for (const page of pages) {\r\n if (page.portalId === selectedPage.portalId && page.useAsReference && !page.showsRecordDetails) {\r\n referencePages.push(page);\r\n }\r\n }\r\n entity.pages = referencePages;\r\n entity.relations = entityRelations;\r\n if (entity._id === entityId) {\r\n entity.pages.push({\r\n _id: \"page-attachment\",\r\n pageName: \"Attachment\"\r\n });\r\n entity.relations.push({\r\n _id: \"attachment\",\r\n identifier: \"Attachment\",\r\n relationId: \"Attachment\"\r\n });\r\n }\r\n }\r\n setPropertiesUsingEntities(entities);\r\n const filteredEntities = entities.filter(entity => entity.relations.length > 0);\r\n updateReferenceTableFetchedValue(\"entities\", filteredEntities);\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n setLoading(false);\r\n }\r\n\r\n function setPropertiesUsingEntities(entities) {\r\n const references = selectedComponent.referredPages.map(reference => {\r\n switch (reference.relationType) {\r\n case \"Attachment\": {\r\n const entity = entities.find(entity => entity._id === entityId);\r\n const page = (\r\n entity.pages.find(page => page._id === \"page-attachment\") ||\r\n {\r\n // id comes from backend. Check Reference.js in DisplayGeneration\r\n _id: \"page-attachment\",\r\n pageName: \"Attachment\"\r\n }\r\n );\r\n debugger;\r\n // relationId comes from backend. Check Reference.js in DisplayGeneration\r\n const relation = (\r\n entity.relations.find(relation => relation.relationId === \"attachment\") ||\r\n { _id: \"attachment\", identifier: \"Attachment\", relationId: \"attachment\" }\r\n );\r\n return {\r\n ...reference,\r\n relationId: relation.relationId,\r\n entity,\r\n page,\r\n relation\r\n }\r\n }\r\n default: {\r\n const entity = entities.find(entity => entity._id === reference.entityId);\r\n const page = getPageByProperty(entity.pages, \"_id\", reference.pageId);\r\n const relation = entity.relations.find(relation => relation._id === reference.relationId);\r\n return {\r\n ...reference,\r\n entity,\r\n page,\r\n relation\r\n }\r\n }\r\n }\r\n });\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperties(property, selectedComponent[property])\r\n }\r\n }\r\n dispatch.setReferences(references)\r\n }\r\n\r\n function handleLabel(event) {\r\n setProperties(\"label\", event.target.value);\r\n }\r\n\r\n function setLabelTranslation(data) {\r\n setProperties(\"languages\", data);\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n switch (property) {\r\n case \"languages\":\r\n if (properties.languages && isLanguagesChanged(properties.languages, selectedComponent.languages)) {\r\n isChanged = true;\r\n }\r\n break;\r\n default:\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n if (isChanged) {\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n // handlers\r\n function handleTabSelect(event) {\r\n setTabSelected(event.selected);\r\n }\r\n\r\n async function handleSave() {\r\n const updatedComponent = await saveComponent();\r\n updatePageComponent(selectedComponent.id, updatedComponent);\r\n }\r\n\r\n if (loading) {\r\n return \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 {t(\"form_labels.label\", { ns: \"display/common\" })}\r\n
    \r\n \r\n
    \r\n
    {\r\n setShowLabelTranslationDialog(true)\r\n }}>\r\n \r\n {t(\"form_labels.label_translation\", { ns: \"display/common\" })}\r\n \r\n
    \r\n
    \r\n {showLabelTranslationDialog && (\r\n { setShowLabelTranslationDialog(false) }}\r\n onSave={setLabelTranslation}\r\n languages={properties.languages}\r\n project={project}\r\n fields={[\"label\"]}\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 Reference;","import Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport componentPropertiesMap from './ComponentFormProperties.json';\r\nimport { useChangeBooleans, useComponentProperties, useResetComponentProperties, useSaveComponent } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport { useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport GenericTranslationDialog from \"../../Entities/GenericTranslationDialog\";\r\nimport { isLanguagesChanged } from \"../utils\";\r\n\r\nfunction History() {\r\n\r\n const formProperties = componentPropertiesMap.History;\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const resetContext = useResetComponentProperties();\r\n const saveComponent = useSaveComponent();\r\n const updatePageComponent = useUpdatePageComponent(selectedPage.parentId, selectedPage._id);\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const project = usePropsStoreValue(\"project\");\r\n\r\n const [properties, setProperties] = useComponentProperties();\r\n const [, setChangeProperty] = useChangeBooleans();\r\n\r\n const [initializationDone, setInitializationDone] = useState(false);\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n\r\n useEffect(() => {\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperties(property, selectedComponent[property])\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n }\r\n setInitializationDone(true);\r\n }, [])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n debugger\r\n if (initializationDone) {\r\n setIsChanged();\r\n }\r\n }, [properties, selectedComponent, selectedPage]);\r\n\r\n // state\r\n const [tabSelected, setTabSelected] = useState(0);\r\n\r\n // functions\r\n function handleLabel(event) {\r\n setProperties(\"label\", event.target.value);\r\n }\r\n\r\n function setLabelTranslation(data) {\r\n setProperties(\"languages\", data);\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n switch (property) {\r\n case \"languages\":\r\n if (properties.languages && isLanguagesChanged(properties.languages, selectedComponent.languages)) {\r\n isChanged = true;\r\n }\r\n break;\r\n default:\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n if (isChanged) {\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n // handlers\r\n function handleTabSelect(event) {\r\n setTabSelected(event.selected);\r\n }\r\n\r\n async function handleSave() {\r\n const updatedComponent = await saveComponent();\r\n debugger;\r\n updatePageComponent(selectedComponent.id, updatedComponent);\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 Label\r\n
    \r\n \r\n
    \r\n
    {\r\n setShowLabelTranslationDialog(true)\r\n }}>\r\n \r\n Label Translation\r\n \r\n
    \r\n
    \r\n {showLabelTranslationDialog && (\r\n { setShowLabelTranslationDialog(false) }}\r\n onSave={setLabelTranslation}\r\n languages={properties.languages}\r\n project={project}\r\n fields={[\"label\"]}\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 History;","import Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport componentPropertiesMap from './ComponentFormProperties.json';\r\nimport { useChangeBooleans, useComponentProperties, useResetComponentProperties, useSaveComponent } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport { useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport GenericTranslationDialog from \"../../Entities/GenericTranslationDialog\";\r\nimport { isLanguagesChanged } from \"../utils\";\r\n\r\nfunction Discussion() {\r\n\r\n const formProperties = componentPropertiesMap.Discussion;\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const resetContext = useResetComponentProperties();\r\n const saveComponent = useSaveComponent();\r\n const updatePageComponent = useUpdatePageComponent(selectedPage.parentId, selectedPage._id);\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const project = usePropsStoreValue(\"project\");\r\n\r\n const [properties, setProperties] = useComponentProperties();\r\n const [, setChangeProperty] = useChangeBooleans();\r\n\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n\r\n useEffect(() => {\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperties(property, selectedComponent[property])\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n }\r\n setInitializationDone(true);\r\n }, [])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n const [initializationDone, setInitializationDone] = useState(false);\r\n useEffect(() => {\r\n if (initializationDone) {\r\n setIsChanged();\r\n }\r\n }, [properties]);\r\n\r\n // state\r\n const [tabSelected, setTabSelected] = useState(0);\r\n\r\n // functions\r\n function handleLabel(event) {\r\n setProperties(\"label\", event.target.value);\r\n }\r\n\r\n function setLabelTranslation(data) {\r\n setProperties(\"languages\", data);\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n switch (property) {\r\n case \"languages\":\r\n if (properties.languages && isLanguagesChanged(properties.languages, selectedComponent.languages)) {\r\n isChanged = true;\r\n }\r\n break;\r\n default:\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n if (isChanged) {\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n // handlers\r\n function handleTabSelect(event) {\r\n setTabSelected(event.selected);\r\n }\r\n\r\n async function handleSave() {\r\n const updatedComponent = await saveComponent();\r\n updatePageComponent(selectedComponent.id, updatedComponent);\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 Label\r\n
    \r\n \r\n
    \r\n
    {\r\n setShowLabelTranslationDialog(true)\r\n }}>\r\n \r\n Label Translation\r\n \r\n
    \r\n
    \r\n {showLabelTranslationDialog && (\r\n { setShowLabelTranslationDialog(false) }}\r\n onSave={setLabelTranslation}\r\n languages={properties.languages}\r\n project={project}\r\n fields={[\"label\"]}\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 Discussion;","import Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport componentPropertiesMap from './ComponentFormProperties.json';\r\nimport { useChangeBooleans, useComponentProperties, useResetComponentProperties, useSaveComponent } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport { useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport ComponentFormSkeleton from \"../../Display/Shared/ComponentFormSkeleton\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport GenericTranslationDialog from \"../../Entities/GenericTranslationDialog\";\r\nimport { isLanguagesChanged } from \"../utils\";\r\n\r\nfunction Tab() {\r\n\r\n const formProperties = componentPropertiesMap.Tab;\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const resetContext = useResetComponentProperties();\r\n const saveComponent = useSaveComponent();\r\n const updatePageComponent = useUpdatePageComponent(selectedComponent.parentId, selectedPage._id);\r\n const project = usePropsStoreValue(\"project\");\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n const [{ isGeneralPropertiesChanged }, setChangeProperty] = useChangeBooleans();\r\n\r\n const { t } = useTranslation(\"display/common\", { useSuspense: false });\r\n\r\n useEffect(() => {\r\n setProperties();\r\n setLoading(false);\r\n }, [])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n if (!loading) {\r\n setIsChanged();\r\n }\r\n }, [properties]);\r\n\r\n // state\r\n const [tabSelected, setTabSelected] = useState(0);\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n\r\n // functions\r\n function setProperties() {\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperty(property, selectedComponent[property])\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n }\r\n }\r\n\r\n function handleLabel(event) {\r\n setProperty(\"label\", event.target.value);\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n switch (property) {\r\n case \"languages\":\r\n if (properties.languages && isLanguagesChanged(properties.languages, selectedComponent.languages)) {\r\n isChanged = true;\r\n }\r\n break;\r\n default:\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n if (isChanged) {\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n function setLabelTranslation(data) {\r\n setProperty(\"languages\", data);\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n // handlers\r\n function handleTabSelect(event) {\r\n setTabSelected(event.selected);\r\n }\r\n\r\n async function handleSave() {\r\n const updatedComponent = await saveComponent();\r\n updatePageComponent(selectedComponent.id, updatedComponent);\r\n }\r\n\r\n function resetComponent() {\r\n if (isGeneralPropertiesChanged) {\r\n setProperties();\r\n }\r\n }\r\n\r\n if (loading) {\r\n return \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 {t(\"form_labels.label\")}\r\n
    \r\n \r\n
    \r\n
    {\r\n setShowLabelTranslationDialog(true)\r\n }}>\r\n \r\n {t(\"form_labels.label_translation\")}\r\n \r\n
    \r\n
    \r\n {showLabelTranslationDialog && (\r\n { setShowLabelTranslationDialog(false) }}\r\n onSave={setLabelTranslation}\r\n languages={properties.languages}\r\n project={project}\r\n fields={[\"label\"]}\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 Tab;","import * as React from \"react\";\r\n\r\nfunction IDCell(props) {\r\n return (\r\n \r\n \r\n \r\n  \r\n {\r\n props.dataItem['#']\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default IDCell;","import React, { useState } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { useComponentProperties } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport ErrorMessage from \"../../../Shared/Error/ErrorMessage\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nfunction EditTabDialog({ onClose, selectedTab }) {\r\n\r\n const { t } = useTranslation(\"display/components/tab_container\", { useSuspense: false });\r\n\r\n const [labelError, setLabelError] = useState({\r\n isValid: true,\r\n message: \"\"\r\n });\r\n\r\n const [properties, updateGeneralProperty] = useComponentProperties();\r\n\r\n const [label, setLabel] = useState(selectedTab.label);\r\n\r\n function handleLabel(event) {\r\n const label = event.target.value.trim();\r\n const labels = properties.children.filter((item) => item.id !== selectedTab.id).map((item) => item.label.toLowerCase());\r\n const checkForDuplicate = labels.includes(label.toLowerCase());\r\n setLabelError({\r\n isValid: !checkForDuplicate,\r\n message: checkForDuplicate ? t(\"editTabDialog.errors.tab_exist\") : \"\"\r\n });\r\n setLabel(event.target.value);\r\n }\r\n\r\n async function onUpdate(event) {\r\n event.preventDefault();\r\n const updatedChildren = properties.children.map((item) => {\r\n if (item.id === selectedTab.id) {\r\n return {\r\n ...item,\r\n label: label\r\n }\r\n }\r\n return item;\r\n });\r\n updateGeneralProperty(\"children\", structuredClone(updatedChildren))\r\n onClose();\r\n }\r\n\r\n function shouldDisableSave() {\r\n const labels = properties.children.map((item) => item.label.toLowerCase());\r\n if (!label || labels.includes(label.toLowerCase().trim())) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n {t(\"editTabDialog.label\")}\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n {t(\"editTabDialog.buttons.updateButtonText\")}\r\n \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default EditTabDialog;","import { Grid, GridColumn } from \"@progress/kendo-react-grid\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport IDCell from \"./Cell/IdCell\";\r\nimport { useComponentProperties } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { DraggableRow } from \"../../AttributeTable/Grid/Row/DraggableRow\";\r\nimport { useState } from \"react\";\r\nimport { reorderData } from \"./utils\";\r\nimport useComponents, { useSelectedComponent } from \"../../../../Hooks/Display/useComponents\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport EditTabDialog from \"./EditTabDialog\";\r\nimport RemoveDialog from \"../../../Shared/Remove/RemoveDialog\";\r\nimport { deleteComponent } from \"../../../../API/Display/Display\";\r\nimport { useSelectedPage } from \"../../../../Hooks/Display/usePages\";\r\nimport { DELETE_COMPONENT_TO_FLAT_LIST } from \"../../../../Context/Display/Components/ComponentsContextEvents\";\r\nimport GenericTranslationDialog from \"../../../Entities/GenericTranslationDialog\";\r\nimport { usePropsStoreValue } from \"../../../../Hooks/PropStore/usePropsStore\";\r\n\r\nfunction ChildrenTabManagementGrid() {\r\n\r\n const { t } = useTranslation(\"display/components/tab_container\", { useSuspense: false });\r\n\r\n const selectedComponent = useSelectedComponent();\r\n const selectedPage = useSelectedPage();\r\n const [properties, updateGeneralProperty] = useComponentProperties();\r\n\r\n const [activeItem, setActiveItem] = useState();\r\n const [openEditTabDialog, setOpenEditTabDialog] = useState(false);\r\n const [selectedTab, setSelectedTab] = useState({});\r\n const [showDeleteTabDialog, setShowDeleteTabDialog] = useState(false);\r\n const [deletingTab, setDeletingTab] = useState(null);\r\n const [, dispatch] = useComponents()\r\n\r\n const [inEditId, setInEditId] = useState(null);\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n const [translationData, setTranslationData] = useState(null);\r\n const project = usePropsStoreValue(\"project\");\r\n\r\n function toggleHidden(id) {\r\n const updatedChildren = properties.children.map((item) => {\r\n if (item.id === id) {\r\n return {\r\n ...item,\r\n hidden: !item.hidden,\r\n children: item.children ? toggleHideChildren(item.children, !item.hidden) : item.children\r\n }\r\n }\r\n return item;\r\n });\r\n updateGeneralProperty(\"children\", structuredClone(updatedChildren));\r\n }\r\n\r\n function toggleHideChildren(components, newHiddenState) {\r\n const updatedChildren = components.map((item) => {\r\n return {\r\n ...item,\r\n hidden: newHiddenState,\r\n children: item.children ? toggleHideChildren(item.children, newHiddenState) : item.children\r\n };\r\n });\r\n return updatedChildren;\r\n }\r\n\r\n function dragStart(dataItem) {\r\n setActiveItem(dataItem);\r\n }\r\n\r\n function endDrag(dataItem, direction) {\r\n const reorderedData = reorderData(\r\n properties.children, activeItem,\r\n dataItem, direction\r\n );\r\n updateGeneralProperty(\"children\", structuredClone(reorderedData));\r\n }\r\n\r\n async function deleteTab() {\r\n if (!deletingTab) return;\r\n await deleteComponent(selectedPage._id, deletingTab.id);\r\n const updatedChildren = properties.children.filter((item) => item.id !== deletingTab.id);\r\n updateGeneralProperty(\"children\", structuredClone(updatedChildren));\r\n dispatch({ type: DELETE_COMPONENT_TO_FLAT_LIST, payload: deletingTab.id })\r\n dispatch({ type: DELETE_COMPONENT_TO_FLAT_LIST, payload: deletingTab.children[0].id })\r\n setShowDeleteTabDialog(false);\r\n setDeletingTab(null);\r\n }\r\n\r\n function setLabelTranslation(data) {\r\n const updatedChildren = properties.children.map((item) => {\r\n if (item.id === inEditId) {\r\n return {\r\n ...item,\r\n languages: data\r\n }\r\n }\r\n return item;\r\n });\r\n updateGeneralProperty(\"children\", structuredClone(updatedChildren));\r\n setTranslationData(null);\r\n setInEditId(null);\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n return (\r\n <>\r\n {openEditTabDialog && (\r\n {\r\n setSelectedTab({});\r\n setOpenEditTabDialog(false)\r\n }}\r\n selectedTab={selectedTab}\r\n />\r\n )}\r\n {showDeleteTabDialog && (\r\n {\r\n setShowDeleteTabDialog(false);\r\n setDeletingTab(null);\r\n }}\r\n message={t(\"removeDialog.message\", { name: deletingTab.componentName })}\r\n onDelete={deleteTab}\r\n onCancel={() => {\r\n setShowDeleteTabDialog(false);\r\n setDeletingTab(null);\r\n }}\r\n cancelButtonText={t(\"removeDialog.buttons.cancelButtonText\")}\r\n deleteButtonText={t(\"removeDialog.buttons.deleteButtonText\")}\r\n />\r\n )}\r\n {showLabelTranslationDialog && (\r\n { setShowLabelTranslationDialog(false) }}\r\n onSave={setLabelTranslation}\r\n languages={translationData}\r\n project={project}\r\n fields={[\"label\"]}\r\n />\r\n )}\r\n ({\r\n ...item,\r\n _id: index + 1,\r\n selected: item.id === 0\r\n }))}\r\n selectedField=\"selected\"\r\n className=\"h-90\"\r\n rowRender={(row, rowProps) => (\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 ChildrenTabManagementGrid;","export function reorderData(data, activeItem, dataItem, direction) {\r\n if (activeItem === dataItem) {\r\n return data;\r\n }\r\n const reorderedData = data.slice();\r\n let prevIndex = reorderedData.findIndex((p) => p.id === activeItem.id);\r\n let nextIndex = reorderedData.findIndex((p) => p.id === dataItem.id) + (direction === \"before\" ? -1 : 0);\r\n if (prevIndex > nextIndex) {\r\n nextIndex++;\r\n }\r\n reorderedData.splice(prevIndex, 1);\r\n reorderedData.splice(nextIndex, 0, activeItem || reorderedData[0]);\r\n return reorderedData;\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport usePages, { useSelectedPage } from \"../../../../Hooks/Display/usePages\";\r\nimport { allowedComponentTypes } from \"../../Components/utils\";\r\nimport { createComponent } from \"../../../../API/Display/Display\";\r\nimport useComponents, { useSelectedComponent } from \"../../../../Hooks/Display/useComponents\";\r\nimport { usePropsStoreValue } from \"../../../../Hooks/PropStore/usePropsStore\";\r\nimport { ADD_COMPONENTS_TO_FLAT_LIST, TOGGLE_ADD_COMPONENT_DIALOG } from \"../../../../Context/Display/Components/ComponentsContextEvents\";\r\nimport { ADD_COMPONENT_TO_FLATLIST, ADD_COMPONENT_TO_PAGE } from \"../../../../Context/Display/Pages/PagesContextEvents\";\r\nimport { useComponentProperties } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nfunction CreateTabsDialog({ onClose }) {\r\n\r\n const { t } = useTranslation(\"display/components/tab_container\", { useSuspense: false });\r\n\r\n const [componentType, setComponentType] = useState(\"\");\r\n\r\n const [allowedComponents, setAllowedComponents] = useState([]);\r\n\r\n const [properties, updateGeneralProperty] = useComponentProperties();\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const entityName = usePropsStoreValue(\"entityName\");\r\n const [, pageDispatch] = usePages();\r\n const [, dispatch] = useComponents();\r\n\r\n useEffect(() => {\r\n let allowedTypes = allowedComponentTypes[selectedPage.subPageType].filter(type => type === \"View\" || type === \"History\" || type === \"Discussion\" || type === \"Reference\");\r\n setAllowedComponents(allowedTypes);\r\n setComponentType(allowedTypes[0]);\r\n }, [])\r\n\r\n function handleComponentType(event) {\r\n setComponentType(event.target.value);\r\n }\r\n\r\n async function createComponents(event) {\r\n event.preventDefault();\r\n try {\r\n const tabComponentName = componentType === \"View\" ? \"Detail\" : componentType;\r\n const tabComponentLabel = componentType === \"View\" ? \"Detail\" : componentType;\r\n let tabName = t(\"new-tab-name.\" + tabComponentName.toLowerCase());\r\n let tabLabel = t(\"new-tab-label.\" + tabComponentLabel.toLowerCase());\r\n debugger;\r\n tabName = generateTabName(tabName);\r\n tabLabel = generateTabLabel(tabLabel);\r\n const createdTabResponse = await createComponent(selectedPage._id, selectedComponent.id, entityName, { componentName: tabName, componentType: \"Tab\", label: tabLabel });\r\n const response = await createComponent(selectedPage._id, createdTabResponse.id, entityName, { componentName: tabLabel, componentType: componentType, label: tabLabel });\r\n createdTabResponse.children = [response];\r\n dispatch({\r\n type: ADD_COMPONENTS_TO_FLAT_LIST,\r\n payload: createdTabResponse\r\n })\r\n dispatch({\r\n type: ADD_COMPONENTS_TO_FLAT_LIST,\r\n payload: response\r\n })\r\n dispatch({ type: TOGGLE_ADD_COMPONENT_DIALOG })\r\n pageDispatch({\r\n type: ADD_COMPONENT_TO_FLATLIST,\r\n payload: {\r\n parentId: selectedPage.parentId,\r\n pageId: selectedPage._id,\r\n component: createdTabResponse\r\n }\r\n })\r\n pageDispatch({\r\n type: ADD_COMPONENT_TO_FLATLIST,\r\n payload: {\r\n parentId: selectedPage.parentId,\r\n pageId: selectedPage._id,\r\n component: response\r\n }\r\n })\r\n dispatch({ type: TOGGLE_ADD_COMPONENT_DIALOG })\r\n const updatedChildren = [...properties.children, createdTabResponse]\r\n updateGeneralProperty(\"children\", structuredClone(updatedChildren))\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n onClose();\r\n }\r\n }\r\n\r\n function generateTabName(tabName, count = 1) {\r\n const tabComponentType = componentType === \"View\" ? \"Details\" : componentType;\r\n let tabNameExists = properties.children.filter((child) => child.componentName === tabName);\r\n if (tabNameExists.length > 0) {\r\n tabName = \"Tab - \" + tabComponentType + count;\r\n return generateTabName(tabName, count + 1);\r\n }\r\n return tabName;\r\n }\r\n\r\n function generateTabLabel(tabLabel, count = 1) {\r\n const tabComponentType = componentType === \"View\" ? \"Detail\" : componentType;\r\n let tabLabelExists = properties.children.filter((child) => child.label === tabLabel);\r\n if (tabLabelExists.length > 0) {\r\n tabLabel = tabComponentType + count;\r\n return generateTabLabel(tabLabel, count + 1);\r\n }\r\n return tabLabel;\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n {t(\"createTabDialog.type\")}\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 CreateTabsDialog;","import Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport componentPropertiesMap from './ComponentFormProperties.json';\r\nimport { useChangeBooleans, useComponentProperties, useResetComponentProperties, useSaveComponent } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport ChildrenTabManagementGrid from \"./TabContainer/ChildrenTabManagementGrid\";\r\nimport { DragAndDrop } from \"@progress/kendo-react-common\";\r\nimport { useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport CreateTabsDialog from \"./TabContainer/CreateTabsDialog\";\r\nimport { isLanguagesChanged } from \"../utils\";\r\n\r\nfunction TabContainer() {\r\n\r\n const formProperties = componentPropertiesMap.TabContainer;\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const resetContext = useResetComponentProperties();\r\n const saveComponent = useSaveComponent();\r\n const updatePageComponent = useUpdatePageComponent(selectedPage.parentId, selectedPage._id);\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n const [{ isGeneralPropertiesChanged }, setChangeProperty] = useChangeBooleans();\r\n const [openTabDialog, setOpenTabDialog] = useState(false);\r\n\r\n const { t } = useTranslation([\r\n \"display/common\",\r\n \"display/component_toolbar\",\r\n \"display/components/tab_container\"\r\n ], { useSuspense: false })\r\n\r\n useEffect(() => {\r\n setProperties();\r\n setInitializationDone(true);\r\n }, [])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n const [initializationDone, setInitializationDone] = useState(false);\r\n useEffect(() => {\r\n if (initializationDone) {\r\n setIsChanged();\r\n }\r\n }, [properties, selectedPage, selectedComponent]);\r\n\r\n // state\r\n const [tabSelected, setTabSelected] = useState(0);\r\n\r\n // functions\r\n function setProperties() {\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperty(property, selectedComponent[property])\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n }\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n switch (property) {\r\n case \"children\":\r\n if (selectedComponent[property].length !== properties[property].length) {\r\n isChanged = true;\r\n break;\r\n }\r\n for (let childrenIndex = 0; childrenIndex < selectedComponent[property].length; childrenIndex++) {\r\n const currentChildProperties = properties[property][childrenIndex];\r\n const oldChildProperties = selectedComponent[property][childrenIndex];\r\n if (\r\n // hidden changed\r\n currentChildProperties.hidden !== oldChildProperties.hidden ||\r\n // child reordered\r\n currentChildProperties.id !== oldChildProperties.id\r\n ) {\r\n isChanged = true;\r\n break;\r\n }\r\n if (currentChildProperties.label !== oldChildProperties.label) {\r\n isChanged = true;\r\n break;\r\n }\r\n if (isLanguagesChanged(currentChildProperties.languages, oldChildProperties.languages)) {\r\n isChanged = true;\r\n break;\r\n }\r\n }\r\n break;\r\n default:\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n // handlers\r\n function handleTabSelect(event) {\r\n setTabSelected(event.selected);\r\n }\r\n\r\n async function handleSave() {\r\n await saveComponent();\r\n updatePageComponent(selectedComponent.id, properties);\r\n }\r\n\r\n function resetComponent() {\r\n if (isGeneralPropertiesChanged) {\r\n setProperties();\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n setOpenTabDialog(true)}\r\n className=\"btn btn-outline-primary float-right me-3 mt-3\"\r\n >\r\n {t(\"newTab\", { ns: \"display/components/tab_container\" })}\r\n \r\n {openTabDialog && setOpenTabDialog(false)} />}\r\n \r\n {\r\n initializationDone &&\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 TabContainer;","import { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport componentPropertiesMap from './ComponentFormProperties.json';\r\nimport { useChangeBooleans, useComponentProperties, useFetchedValues, useResetComponentProperties, useSaveComponent } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { getAllAttributes } from \"../../Helpers/Schema/Schema\";\r\nimport { byAttributeName, bySystemAttributeDesc } from \"../utils\";\r\nimport ActionTable from \"../ActionTable/ActionTable\";\r\nimport ComponentFormSkeleton from \"../../Display/Shared/ComponentFormSkeleton\";\r\nimport useInternalUserCheck from \"../../../Hooks/Misc/useInternalUserCheck\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useContext, cloneElement } from \"react\";\r\nimport { GlobalContext } from \"../../../Renderers/GlobalContext\";\r\nimport React from \"react\";\r\nimport { getAttributes } from \"../../../API/Attribute/Attribute\";\r\nimport GenericTranslationDialog from \"../../Entities/GenericTranslationDialog\";\r\n\r\nfunction SpecificHeading() {\r\n\r\n const formProperties = componentPropertiesMap.SpecificHeading;\r\n const { user } = useContext(GlobalContext).state;\r\n // hooks\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const entityId = usePropsStoreValue(\"entityId\");\r\n const project = usePropsStoreValue(\"project\");\r\n const advancedMode = usePropsStoreValue(\"advancedMode\");\r\n const isInternalUser = useInternalUserCheck(user.email);\r\n const resetContext = useResetComponentProperties();\r\n const saveComponent = useSaveComponent()\r\n const updatePageComponent = useUpdatePageComponent(selectedPage.parentId, selectedPage._id);\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n\r\n const [properties, setProperties] = useComponentProperties();\r\n const [{ isGeneralPropertiesChanged }, setChangeProperty] = useChangeBooleans();\r\n const [{ generalProperties: fetchedValues }, { updateGeneralFetchedValue }] = useFetchedValues();\r\n\r\n const { t, ready: tReady } = useTranslation([\r\n \"display/common\",\r\n \"display/component_toolbar\",\r\n \"display/components/specific_heading\"\r\n ]);\r\n\r\n const [loading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n if (selectedComponent) {\r\n getData();\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (\r\n tReady &&\r\n fetchedValues.attributes &&\r\n fetchedValues.attributes.length > 0 &&\r\n fetchedValues.attributes[0].id !== \"\"\r\n ) {\r\n updateGeneralFetchedValue([\r\n { attributeName: t(\"attributes.select_attribute\", { ns: \"display/common\" }), id: \"\" },\r\n ...fetchedValues.attributes\r\n ]);\r\n }\r\n }, [tReady, fetchedValues.attributes])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setPropertiesUsingAttributes(fetchedValues.attributes)\r\n }\r\n }, [selectedComponent, selectedPage])\r\n\r\n useEffect(() => {\r\n setIsChanged();\r\n }, [properties])\r\n\r\n // state\r\n const [selectedTab, setSelectedTab] = useState(0);\r\n\r\n // functions\r\n async function getData() {\r\n const attributes = await getAttributes(entityId);\r\n const sortedAttributes = attributes.sort(byAttributeName).sort(bySystemAttributeDesc);\r\n const filteredAttributes = sortedAttributes.filter(attribute => (\r\n attribute.attributeType !== \"Image\" &&\r\n !(attribute.attributeType === \"Mirror\" && [\"Image\", \"Html\"].includes(attribute.attribute.attributeType))\r\n ))\r\n setPropertiesUsingAttributes(filteredAttributes);\r\n updateGeneralFetchedValue(\"attributes\", filteredAttributes);\r\n setLoading(false);\r\n }\r\n\r\n function setPropertiesUsingAttributes(attributes) {\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperties(property, selectedComponent[property])\r\n }\r\n }\r\n const firstAttribute = attributes.find(attr => attr._id === selectedComponent.firstAttributeId);\r\n const secondAttribute = attributes.find(attr => attr._id === selectedComponent.secondAttributeId);\r\n setProperties(\"firstAttribute\", firstAttribute || { _id: \"\" });\r\n setProperties(\"secondAttribute\", secondAttribute || { _id: \"\" });\r\n }\r\n\r\n // handlers\r\n function handleTabSelect(e) {\r\n setSelectedTab(e.selected);\r\n };\r\n\r\n function handleInputChange(e) {\r\n setProperties(e.target.name, e.target.value);\r\n };\r\n\r\n function setLabelTranslation(data) {\r\n setProperties(\"languages\", data);\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n function removeSecondAttribute() {\r\n setProperties(\"secondAttribute\", null);\r\n }\r\n\r\n function handleCheckboxChange(e) {\r\n setProperties(e.target.name, e.target.value);\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined &&\r\n selectedComponent[property] !== properties[property]\r\n ) {\r\n isChanged = true;\r\n break;\r\n }\r\n }\r\n if (properties.firstAttribute && properties.firstAttribute._id !== \"\" && properties.firstAttribute._id !== selectedComponent.firstAttributeId) {\r\n isChanged = true;\r\n }\r\n if (properties.secondAttribute && properties.secondAttribute._id !== \"\" && properties.secondAttribute._id !== selectedComponent.secondAttributeId) {\r\n isChanged = true;\r\n } else if (properties.secondAttribute === null && selectedComponent.secondAttributeId !== \"\") {\r\n isChanged = true;\r\n }\r\n if (properties.languages && isLanguagesChanged(properties.languages, selectedComponent.languages)) {\r\n isChanged = true;\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged)\r\n }\r\n\r\n async function handleSave() {\r\n const updatedComponent = await saveComponent();\r\n updatePageComponent(selectedComponent.id, updatedComponent);\r\n }\r\n\r\n function isLanguagesChanged(languages, defaultLanguages) {\r\n const keys = Object.keys(languages);\r\n for (const key of keys) {\r\n if (languages[key] === undefined || defaultLanguages[key] === undefined) {\r\n debugger;\r\n }\r\n if (\r\n languages[key].label !== defaultLanguages[key].label ||\r\n languages[key].tooltip !== defaultLanguages[key].tooltip\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function resetComponent() {\r\n if (isGeneralPropertiesChanged) {\r\n setPropertiesUsingAttributes(fetchedValues.attributes);\r\n }\r\n }\r\n\r\n function getPropertyToShowInHeadingAttributes() {\r\n const attributes = fetchedValues.attributes;\r\n if (!attributes) {\r\n return [];\r\n }\r\n const filteredAttributes = attributes.filter(attribute => attribute.attributeType !== \"Html\");\r\n return filteredAttributes;\r\n }\r\n\r\n if (loading) {\r\n return \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 {t(\"form_labels.label\", { ns: \"display/components/specific_heading\" })}\r\n
    \r\n \r\n
    \r\n
    {\r\n setShowLabelTranslationDialog(true)\r\n }}>\r\n \r\n {t(\"form_labels.label_translation\", { ns: \"display/components/specific_heading\" })}\r\n \r\n
    \r\n
    \r\n {showLabelTranslationDialog && (\r\n { setShowLabelTranslationDialog(false) }}\r\n onSave={setLabelTranslation}\r\n languages={properties.languages}\r\n project={project}\r\n fields={[\"label\"]}\r\n type={t(\"form_labels.heading\", { ns: \"display/components/specific_heading\" })}\r\n />\r\n )}\r\n {\r\n accessedFromDesigner &&\r\n \r\n }\r\n
    \r\n {t(\"form_labels.property_to_show_in_heading\", { ns: \"display/components/specific_heading\" })}\r\n
    \r\n {properties.isDuplicateName &&\r\n \r\n \r\n {t(\"errors.attribute_selected_twice\", { ns: \"display/components/specific_heading\" })}\r\n \r\n }\r\n
    \r\n {t(\"form_labels.property_1\", { ns: \"display/components/specific_heading\" })}\r\n
    \r\n \r\n
    \r\n {t(\"form_labels.property_2\", { ns: \"display/components/specific_heading\" })}\r\n
    \r\n (\r\n \r\n )}\r\n className=\"form-control-custom w-50\"\r\n textField=\"attributeLabel\"\r\n value={properties.secondAttribute}\r\n data={getPropertyToShowInHeadingAttributes()}\r\n dataItemKey=\"_id\"\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\nconst ValueRender = ({ element, value, onRemove }) => {\r\n if (!value) {\r\n return element;\r\n }\r\n\r\n function handleRemove(e) {\r\n e.stopPropagation();\r\n onRemove(e);\r\n }\r\n\r\n const children = [\r\n
    \r\n   {element.props.children}\r\n \r\n
    \r\n ];\r\n\r\n return cloneElement(element, { ...element.props }, children);\r\n};\r\n\r\nexport default SpecificHeading;","import Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport componentPropertiesMap from './ComponentFormProperties.json';\r\nimport { useChangeBooleans, useComponentProperties, useResetComponentProperties } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\n\r\nfunction StackedSection() {\r\n\r\n const formProperties = componentPropertiesMap.StackedSection;\r\n\r\n const selectedComponent = useSelectedComponent();\r\n const resetContext = useResetComponentProperties();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n\r\n const [properties, setProperties] = useComponentProperties();\r\n const [, setChangeProperty] = useChangeBooleans();\r\n\r\n useEffect(() => {\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperties(property, selectedComponent[property])\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n }\r\n setInitializationDone(true);\r\n }, [])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n const [initializationDone, setInitializationDone] = useState(false);\r\n useEffect(() => {\r\n if (initializationDone) {\r\n setIsChanged();\r\n }\r\n }, [properties]);\r\n\r\n // state\r\n const [tabSelected, setTabSelected] = useState(0);\r\n\r\n // functions\r\n function handleLabel(event) {\r\n setProperties(\"label\", event.target.value);\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n // handlers\r\n function handleTabSelect(event) {\r\n setTabSelected(event.selected);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default StackedSection;","import { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { useChangeBooleans, useComponentProperties, useResetAttributeTable, useResetComponentProperties, useSaveComponent, useUpdateSyncComponentAttributes, useResetAttributeFormBuilder, useAttributeFormBuilder } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport componentPropertiesMap from \"./ComponentFormProperties.json\";\r\nimport { useEffect, useState } from \"react\";\r\nimport AttributeFormBuilder from \"../FormBuilder/AttributeFormBuilder\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nfunction Form() {\r\n\r\n const [labelOrientations, setLabelOrientations] = useState([\r\n { text: \"Top\", value: \"Top\" },\r\n { text: \"Left\", value: \"Left\" }\r\n ]);\r\n const columns = [\"1\", \"2\"];\r\n\r\n const formProperties = componentPropertiesMap.Form;\r\n\r\n // hooks\r\n const selectedPage = useSelectedPage();\r\n const [{ steps }, dispatch] = useAttributeFormBuilder();\r\n const selectedComponent = useSelectedComponent();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const advancedMode = usePropsStoreValue(\"advancedMode\");\r\n const resetContext = useResetComponentProperties();\r\n const saveComponent = useSaveComponent();\r\n const updatePageComponent = useUpdatePageComponent(selectedPage.parentId, selectedPage._id);\r\n const updateSyncedComponentAttributes = useUpdateSyncComponentAttributes();\r\n const resetAttributes = useResetAttributeTable();\r\n const resetLayout = useResetAttributeFormBuilder();\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n const [{\r\n isGeneralPropertiesChanged,\r\n isAttributeFormBuilderChanged,\r\n isAttributeTableChanged\r\n }, setChangeProperty] = useChangeBooleans();\r\n\r\n const { t, ready: tReady } = useTranslation([\r\n \"display/common\",\r\n \"display/component_toolbar\",\r\n \"display/components/form\"\r\n ]);\r\n\r\n useEffect(() => {\r\n debugger\r\n if (selectedPage && selectedComponent) {\r\n setProperties();\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n setInitializationDone(true);\r\n }\r\n }, [selectedPage._id, selectedComponent.id])\r\n\r\n useEffect(() => {\r\n if (tReady) {\r\n setLabelOrientations([\r\n { text: t(\"label_orientation_options.top\", { ns: \"display/components/form\" }), value: \"Top\" },\r\n { text: t(\"label_orientation_options.left\", { ns: \"display/components/form\" }), value: \"Left\" }\r\n ])\r\n }\r\n }, [tReady])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n const [initializationDone, setInitializationDone] = useState(false);\r\n useEffect(() => {\r\n if (initializationDone) {\r\n setIsChanged();\r\n }\r\n }, [properties])\r\n\r\n // state\r\n const [tabSelected, setSelectedTab] = useState(0);\r\n\r\n function setProperties() {\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperty(property, selectedComponent[property])\r\n }\r\n }\r\n }\r\n\r\n function handleTabSelect(event) {\r\n setSelectedTab(event.selected)\r\n }\r\n\r\n function handleInputChange(event) {\r\n setProperty(event.target.name, event.target.value);\r\n }\r\n\r\n function handleInputChangeWithObject(event) {\r\n setProperty(event.target.name, event.target.value.value);\r\n }\r\n\r\n function handleIsMultiStepFormChange(event) {\r\n setProperty(event.target.name, event.target.value);\r\n if (!event.target.value) {\r\n setProperty(\"allowToggleBetweenSteps\", false);\r\n setProperty(\"showSteps\", false);\r\n dispatch.removeMultipleSteps()\r\n } else {\r\n setProperty(\"allowToggleBetweenSteps\", true);\r\n setProperty(\"showSteps\", true);\r\n }\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n switch (property) {\r\n case \"labelOrientation\":\r\n if (selectedComponent[property] !== properties[property].value) {\r\n isChanged = true;\r\n }\r\n break;\r\n default:\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n if (isChanged) {\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n async function handleSave() {\r\n const updatedComponent = await saveComponent();\r\n updatePageComponent(selectedComponent.id, updatedComponent)\r\n if (isAttributeTableChanged && selectedComponent.componentsToSync && selectedComponent.componentsToSync.length > 0) {\r\n updateSyncedComponentAttributes();\r\n }\r\n }\r\n\r\n function resetComponent() {\r\n if (isGeneralPropertiesChanged) {\r\n setProperties();\r\n }\r\n if (isAttributeFormBuilderChanged) {\r\n resetLayout();\r\n }\r\n if (isAttributeTableChanged) {\r\n resetAttributes();\r\n }\r\n }\r\n\r\n function getLabelOrientationValue(value) {\r\n if (!value) return null;\r\n return labelOrientations.find(orientation => orientation.value === 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 {t(\"form_labels.label_orientation\", { ns: \"display/components/form\" })}\r\n
    \r\n \r\n \r\n \r\n {advancedMode &&\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 Form;","/**\n * Lists the possible states of a file.\n */\nexport var UploadFileStatus;\n(function (UploadFileStatus) {\n /**\n * Indicates that the file upload process has failed.\n */\n UploadFileStatus[UploadFileStatus[\"UploadFailed\"] = 0] = \"UploadFailed\";\n /**\n * An initially selected fake file without a set state.\n */\n UploadFileStatus[UploadFileStatus[\"Initial\"] = 1] = \"Initial\";\n /**\n * The file is selected.\n */\n UploadFileStatus[UploadFileStatus[\"Selected\"] = 2] = \"Selected\";\n /**\n * The file is in the process of uploading.\n */\n UploadFileStatus[UploadFileStatus[\"Uploading\"] = 3] = \"Uploading\";\n /**\n * The file is successfully uploaded.\n */\n UploadFileStatus[UploadFileStatus[\"Uploaded\"] = 4] = \"Uploaded\";\n /**\n * The remove process has failed.\n */\n UploadFileStatus[UploadFileStatus[\"RemoveFailed\"] = 5] = \"RemoveFailed\";\n /**\n * The file is in the process of removing.\n */\n UploadFileStatus[UploadFileStatus[\"Removing\"] = 6] = \"Removing\";\n})(UploadFileStatus || (UploadFileStatus = {}));\n","var _a;\n/**\n * @hidden\n */\nexport var cancel = 'upload.cancel';\n/**\n * @hidden\n */\nexport var clearSelectedFiles = 'upload.clearSelectedFiles';\n/**\n * @hidden\n */\nexport var dropFilesHere = 'upload.dropFilesHere';\n/**\n * @hidden\n */\nexport var headerStatusUploaded = 'upload.headerStatusUploaded';\n/**\n * @hidden\n */\nexport var headerStatusUploading = 'upload.headerStatusUploading';\n/**\n * @hidden\n */\nexport var invalidFileExtension = 'upload.invalidFileExtension';\n/**\n * @hidden\n */\nexport var invalidFiles = 'upload.invalidFiles';\n/**\n * @hidden\n */\nexport var invalidMaxFileSize = 'upload.invalidMaxFileSize';\n/**\n * @hidden\n */\nexport var invalidMinFileSize = 'upload.invalidMinFileSize';\n/**\n * @hidden\n */\nexport var remove = 'upload.remove';\n/**\n * @hidden\n */\nexport var retry = 'upload.retry';\n/**\n * @hidden\n */\nexport var select = 'upload.select';\n/**\n * @hidden\n */\nexport var selectTitle = 'upload.selectTitle';\n/**\n * @hidden\n */\nexport var selectNoFilesTitle = 'upload.selectNoFilesTitle';\n/**\n * @hidden\n */\nexport var uploadSelectedFiles = 'upload.uploadSelectedFiles';\n/**\n * @hidden\n */\nexport var total = 'upload.total';\n/**\n * @hidden\n */\nexport var files = 'upload.files';\n/**\n * @hidden\n */\nexport var statusUploaded = 'upload.statusUploaded';\n/**\n * @hidden\n */\nexport var statusUploadFailed = 'upload.statusUploadFailed';\n/**\n * @hidden\n */\nexport var dropZoneHint = 'upload.dropZoneHint';\n/**\n * @hidden\n */\nexport var dropZoneNote = 'upload.defaultDropZoneNote';\n/**\n * @hidden\n */\nexport var restrictionsDropZoneNote = 'upload.dropZoneNote';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[cancel] = 'Cancel',\n _a[clearSelectedFiles] = 'Clear',\n _a[dropFilesHere] = 'Drop files here to upload',\n _a[headerStatusUploaded] = 'Done',\n _a[headerStatusUploading] = 'Uploading...',\n _a[invalidFileExtension] = 'File type not allowed.',\n _a[invalidFiles] = 'Invalid file(s). Please check file upload requirements.',\n _a[invalidMaxFileSize] = 'File size too large.',\n _a[invalidMinFileSize] = 'File size too small.',\n _a[remove] = 'Remove',\n _a[retry] = 'Retry',\n _a[select] = 'Select files...',\n _a[selectTitle] = 'Press to select more files',\n _a[selectNoFilesTitle] = 'No files selected',\n _a[uploadSelectedFiles] = 'Upload',\n _a[total] = 'Total',\n _a[files] = 'files',\n _a[statusUploaded] = 'File(s) successfully uploaded.',\n _a[statusUploadFailed] = 'File(s) failed to upload.',\n _a[dropZoneHint] = 'Drag and drop files here to upload.',\n _a[dropZoneNote] = '',\n _a[restrictionsDropZoneNote] = 'Only {0} files are allowed.',\n _a);\n","import { UploadFileStatus } from '../interfaces/UploadFileStatus';\nimport { guid } from '@progress/kendo-react-common';\nvar ampRegExp = /&/g;\nvar ltRegExp = //g;\nvar htmlEncode = function (value) {\n return ('' + value).replace(ampRegExp, '&')\n .replace(ltRegExp, '<')\n .replace(gtRegExp, '>')\n .replace(quoteRegExp, '"')\n .replace(aposRegExp, ''');\n};\nvar getFileExtension = function (fileName) {\n var rFileExtension = /\\.([^\\.]+)$/;\n var matches = fileName.match(rFileExtension);\n return matches ? matches[0] : '';\n};\nvar getFileInfo = function (rawFile) {\n var fileName = rawFile.name;\n var fileSize = rawFile.size;\n return {\n extension: getFileExtension(fileName),\n name: htmlEncode(fileName),\n getRawFile: function () { return rawFile; },\n size: fileSize,\n status: UploadFileStatus.Selected,\n progress: 0,\n uid: ''\n };\n};\nvar getAllFileInfo = function (rawFiles) {\n var allFileInfo = new Array();\n var i;\n for (i = 0; i < rawFiles.length; i++) {\n allFileInfo.push(getFileInfo(rawFiles[i]));\n }\n return allFileInfo;\n};\nvar fileHasValidationErrors = function (file) {\n if (file.validationErrors && file.validationErrors.length > 0) {\n return true;\n }\n return false;\n};\nvar filesHaveValidationErrors = function (files) {\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var file = files_1[_i];\n if (fileHasValidationErrors(file)) {\n return true;\n }\n }\n return false;\n};\nvar getTotalFilesSizeMessage = function (files) {\n var totalSize = 0;\n var i;\n if (typeof files[0].size === 'number') {\n for (i = 0; i < files.length; i++) {\n if (files[i].size) {\n totalSize += (files[i].size || 0);\n }\n }\n }\n else {\n return '';\n }\n totalSize /= 1024;\n if (totalSize < 1024) {\n return totalSize.toFixed(2) + ' KB';\n }\n else {\n return (totalSize / 1024).toFixed(2) + ' MB';\n }\n};\nvar assignGuidToFiles = function (files, batchFiles) {\n var uid = guid();\n return files.map(function (file) {\n file.uid = batchFiles ? uid : guid();\n return file;\n });\n};\nvar getFileStatus = function (currentFiles) {\n var isUploading = false;\n var isUploaded = false;\n var isUploadFailed = false;\n var isUploadValidationFailed = false;\n var checkFilesStatus = function (files) {\n files.forEach(function (file) {\n if (file.status === UploadFileStatus.Uploading) {\n isUploading = true;\n }\n if (file.status === UploadFileStatus.Uploaded) {\n isUploaded = true;\n }\n if (file.status === UploadFileStatus.UploadFailed) {\n isUploadFailed = true;\n }\n if (fileHasValidationErrors(file)) {\n isUploadValidationFailed = true;\n }\n });\n };\n if (Array.isArray(currentFiles)) {\n checkFilesStatus(currentFiles);\n }\n else {\n Object.keys(currentFiles).forEach(function (key) {\n checkFilesStatus(currentFiles[key]);\n });\n }\n return [isUploading, isUploaded, isUploadFailed, isUploadValidationFailed];\n};\nexport default {\n fileHasValidationErrors: fileHasValidationErrors,\n filesHaveValidationErrors: filesHaveValidationErrors,\n getTotalFilesSizeMessage: getTotalFilesSizeMessage,\n getAllFileInfo: getAllFileInfo,\n getFileInfo: getFileInfo,\n getFileExtension: getFileExtension,\n htmlEncode: htmlEncode,\n assignGuidToFiles: assignGuidToFiles,\n getFileStatus: getFileStatus\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { classNames } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, cancel, retry, remove } from './messages';\n/**\n * @hidden\n */\nvar UploadListActionButton = /** @class */ (function (_super) {\n __extends(UploadListActionButton, _super);\n function UploadListActionButton(props) {\n var _this = _super.call(this, props) || this;\n _this.buttonClassNames = function (type) {\n var _a = _this.state, actionFocused = _a.actionFocused, retryFocused = _a.retryFocused;\n return classNames('k-button k-button-icon k-flat k-upload-action', _this.props.disabled ? 'k-disabled' : '', (actionFocused && type === 'action') || (retryFocused && type === 'retry') ? 'k-focus' : '');\n };\n _this.onRetryFocus = function () {\n _this.setState({\n retryFocused: true\n });\n };\n _this.onRetryBlur = function () {\n _this.setState({\n retryFocused: false\n });\n };\n _this.onActionFocus = function () {\n _this.setState({\n actionFocused: true\n });\n };\n _this.onActionBlur = function () {\n _this.setState({\n actionFocused: false\n });\n };\n _this.onActionClick = function () {\n var _a = _this.props, status = _a.status, uid = _a.uid, disabled = _a.disabled, onCancel = _a.onCancel, onRemove = _a.onRemove;\n if (disabled || status === UploadFileStatus.Removing) {\n return;\n }\n if (status === UploadFileStatus.Uploading) {\n onCancel.call(undefined, uid);\n }\n else {\n onRemove.call(undefined, uid);\n }\n };\n _this.onRetryClick = function () {\n var _a = _this.props, uid = _a.uid, disabled = _a.disabled, onRetry = _a.onRetry;\n if (disabled) {\n return;\n }\n onRetry.call(undefined, uid);\n };\n _this.state = {\n retryFocused: false,\n actionFocused: false\n };\n return _this;\n }\n UploadListActionButton.prototype.actionButtonTitle = function (status, localizationService) {\n if (status === UploadFileStatus.Uploading) {\n return localizationService.toLanguageString(cancel, messages[cancel]);\n }\n return localizationService.toLanguageString(remove, messages[remove]);\n };\n UploadListActionButton.prototype.retryButtonTitle = function (localizationService) {\n return localizationService.toLanguageString(retry, messages[retry]);\n };\n UploadListActionButton.prototype.render = function () {\n var _a = this.props, status = _a.status, progress = _a.progress;\n var actionButtonClassNames = classNames('k-icon', status === UploadFileStatus.Uploading ? 'k-cancel k-i-deny' : '', status !== UploadFileStatus.Uploading ? 'k-delete k-i-x' : '');\n var isRetryVisible = status === UploadFileStatus.UploadFailed;\n var isProgressVisible = status === UploadFileStatus.Uploading;\n var isActionHidden = (status === UploadFileStatus.Uploaded || status === UploadFileStatus.Initial) &&\n !this.props.async.removeUrl;\n var localizationService = provideLocalizationService(this);\n var percent = '%';\n return (React.createElement(\"strong\", { className: 'k-upload-status' },\n isProgressVisible ?\n React.createElement(\"span\", { className: 'k-upload-pct' },\n progress,\n percent) :\n undefined,\n isRetryVisible ?\n (React.createElement(\"button\", { type: \"button\", tabIndex: -1, className: this.buttonClassNames('retry'), onFocus: this.onRetryFocus, onBlur: this.onRetryBlur, onClick: this.onRetryClick },\n React.createElement(\"span\", { \"aria-label\": this.retryButtonTitle(localizationService), title: this.retryButtonTitle(localizationService), className: 'k-icon k-retry k-i-refresh-sm' }))) :\n undefined,\n !isActionHidden ?\n (React.createElement(\"button\", { type: \"button\", tabIndex: -1, className: this.buttonClassNames('action'), onFocus: this.onActionFocus, onBlur: this.onActionBlur, onClick: this.onActionClick },\n React.createElement(\"span\", { \"aria-label\": this.actionButtonTitle(status, localizationService), title: this.actionButtonTitle(status, localizationService), className: actionButtonClassNames }))) :\n undefined));\n };\n return UploadListActionButton;\n}(React.Component));\nexport { UploadListActionButton };\nregisterForLocalization(UploadListActionButton);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, statusUploaded, statusUploadFailed } from './messages';\nimport utils from './utils/utils';\nimport { UploadListActionButton } from './UploadListActionButton';\n/**\n * @hidden\n */\nvar UploadListSingleItem = /** @class */ (function (_super) {\n __extends(UploadListSingleItem, _super);\n function UploadListSingleItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.getFileExtension = function (file) {\n return file.extension ? file.extension.substring(1) : '';\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.getFileValidationMessage = function (file, isUploadFailed) {\n var localizationService = provideLocalizationService(this);\n var validationMessage = '';\n if (isUploadFailed) {\n validationMessage = localizationService.toLanguageString(statusUploadFailed, messages[statusUploadFailed]);\n }\n else if (file.validationErrors && file.validationErrors.length > 0) {\n var messageKey = \"upload.\".concat(file.validationErrors[0]);\n validationMessage = localizationService.toLanguageString(messageKey, messages[messageKey]);\n }\n return validationMessage;\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.getFileExtensionIcon = function (file) {\n switch (file.extension) {\n case '.png':\n case '.jpg':\n case '.jpeg':\n case '.tiff':\n case '.bmp':\n case '.gif':\n return 'k-i-file-image';\n case '.mp3':\n case '.mp4':\n case '.wav':\n return 'k-i-file-audio';\n case '.mkv':\n case '.webm':\n case '.flv':\n case '.gifv':\n case '.avi':\n case '.wmv':\n return 'k-i-file-video';\n case '.txt':\n return 'k-i-file-txt';\n case '.pdf':\n return 'k-i-file-pdf';\n case '.ppt':\n case '.pptx':\n return 'k-i-file-presentation';\n case '.csv':\n case '.xls':\n case '.xlsx':\n return 'k-i-file-data';\n case '.html':\n case '.css':\n case '.js':\n case '.ts':\n return 'k-i-file-programming';\n case '.exe':\n return 'k-i-file-config';\n case '.zip':\n case '.rar':\n return 'k-i-file-zip';\n default:\n return 'k-i-file';\n }\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.renderValidationError = function (file, isUploadFailed) {\n return (React.createElement(\"span\", { className: 'k-file-name-size-wrapper', key: '2' },\n React.createElement(\"span\", { className: 'k-file-name k-file-name-invalid', title: file.name }, file.name),\n React.createElement(\"span\", { className: 'k-file-validation-message k-text-error' }, this.getFileValidationMessage(file, isUploadFailed))));\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.renderFileDetails = function (file) {\n var localizationService = provideLocalizationService(this);\n var successMessage = localizationService.toLanguageString(statusUploaded, messages[statusUploaded]);\n return (React.createElement(\"span\", { className: 'k-file-name-size-wrapper', key: '2' },\n React.createElement(\"span\", { className: 'k-file-name', title: file.name }, file.name),\n file.progress !== 100 ?\n React.createElement(\"span\", { className: 'k-file-size' }, utils.getTotalFilesSizeMessage([file])) :\n React.createElement(\"span\", { className: 'k-file-validation-message k-text-success' }, successMessage)));\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.render = function () {\n var _a = this.props, files = _a.files, others = __rest(_a, [\"files\"]);\n var file = files[0];\n var itemClassName = classNames('k-file-single');\n var _b = utils.getFileStatus([file]), isUploaded = _b[1], isUploadFailed = _b[2], isUploadValidationFailed = _b[3];\n var showProgressBar = !isUploadValidationFailed && !isUploaded && !isUploadFailed;\n return (React.createElement(\"div\", { className: itemClassName },\n React.createElement(\"div\", { className: 'k-progressbar', style: {\n transition: 'opacity 1s ease-in-out',\n opacity: showProgressBar ? 1 : 0\n } },\n React.createElement(\"span\", { className: 'k-progress', style: { width: (file.progress || 0) + '%' } })),\n React.createElement(\"span\", { className: 'k-file-group-wrapper', key: '1' },\n React.createElement(\"span\", { className: 'k-file-group k-icon ' + this.getFileExtensionIcon(file) }),\n React.createElement(\"span\", { className: 'k-file-state' })),\n isUploadValidationFailed || isUploadFailed ?\n this.renderValidationError(file, isUploadFailed) :\n this.renderFileDetails(file),\n React.createElement(UploadListActionButton, __assign({ uid: file.uid, status: file.status, progress: file.progress }, others))));\n };\n return UploadListSingleItem;\n}(React.Component));\nexport { UploadListSingleItem };\nregisterForLocalization(UploadListSingleItem);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport utils from './utils/utils';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, total, files as filesM, statusUploadFailed, statusUploaded } from './messages';\nimport { UploadListActionButton } from './UploadListActionButton';\n/**\n * @hidden\n */\nvar UploadListMultiItem = /** @class */ (function (_super) {\n __extends(UploadListMultiItem, _super);\n function UploadListMultiItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.mapFiles = function () {\n var files = _this.props.files;\n return files.map(function (file) {\n return (React.createElement(\"span\", { key: file.name, className: 'k-file-name-size-wrapper' },\n React.createElement(\"span\", { className: 'k-file-name', title: file.name }, file.name),\n utils.fileHasValidationErrors(file) ?\n (React.createElement(\"span\", { className: 'k-file-validation-message k-text-error' }, _this.getFileValidationMessage(file))) :\n (React.createElement(\"span\", { key: \"\".concat(file.name, \"-size\"), className: 'k-file-size' }, utils.getTotalFilesSizeMessage([file])))));\n });\n };\n /**\n * @hidden\n */\n _this.progress = function () {\n var files = _this.props.files;\n var sum = 0;\n files.forEach(function (file) {\n sum += file.progress || 0;\n });\n return sum / files.length;\n };\n return _this;\n }\n /**\n * @hidden\n */\n UploadListMultiItem.prototype.getFileValidationMessage = function (file) {\n var localizationService = provideLocalizationService(this);\n var validationMessage = '';\n if (file.validationErrors && file.validationErrors.length > 0) {\n var messageKey = \"upload.\".concat(file.validationErrors[0]);\n validationMessage = localizationService.toLanguageString(messageKey, messages[messageKey]);\n }\n return validationMessage;\n };\n UploadListMultiItem.prototype.render = function () {\n var _a = this.props, files = _a.files, others = __rest(_a, [\"files\"]);\n var itemClassName = classNames('k-file-multiple');\n var _b = utils.getFileStatus(files), isUploaded = _b[1], isUploadFailed = _b[2], isUploadValidationFailed = _b[3];\n var localizationService = provideLocalizationService(this);\n var totalMessage = localizationService.toLanguageString(total, messages[total]);\n var filesMessage = localizationService.toLanguageString(filesM, messages[filesM]);\n var uploadFailedMessage = localizationService.toLanguageString(statusUploadFailed, messages[statusUploadFailed]);\n var successMessage = localizationService.toLanguageString(statusUploaded, messages[statusUploaded]);\n var progress = this.progress();\n var showProgressBar = !isUploadValidationFailed && !isUploaded && !isUploadFailed;\n return (React.createElement(\"div\", { className: itemClassName },\n React.createElement(\"div\", { className: 'k-progressbar', style: {\n transition: 'opacity 1s ease-in-out',\n opacity: showProgressBar ? 1 : 0\n } },\n React.createElement(\"span\", { className: 'k-progress', style: { width: (progress || 0) + '%' } })),\n React.createElement(\"span\", { className: 'k-multiple-files-group-wrapper' },\n React.createElement(\"span\", { className: 'k-file-group k-icon k-i-copy' })),\n React.createElement(\"span\", { className: \"k-multiple-files-wrapper\" },\n this.mapFiles(),\n !isUploadFailed ?\n (progress !== 100 ?\n (React.createElement(\"span\", { className: 'k-file-information' }, \"\".concat(totalMessage, \": \").concat(files.length, \" \").concat(filesMessage, \", \").concat(utils.getTotalFilesSizeMessage(files)))) :\n (React.createElement(\"span\", { className: 'k-file-information k-text-success' }, \"\".concat(files.length, \" \").concat(successMessage)))) :\n (React.createElement(\"span\", { className: 'k-file-validation-message k-text-error' }, \"\".concat(files.length, \" \").concat(uploadFailedMessage)))),\n React.createElement(UploadListActionButton, __assign({ uid: files[0].uid, status: files[0].status, progress: progress }, others))));\n };\n return UploadListMultiItem;\n}(React.Component));\nexport { UploadListMultiItem };\nregisterForLocalization(UploadListMultiItem);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { UploadListSingleItem } from './UploadListSingleItem';\nimport { UploadListMultiItem } from './UploadListMultiItem';\nimport utils from './utils/utils';\n/**\n * @hidden\n */\nvar UploadListGroup = /** @class */ (function (_super) {\n __extends(UploadListGroup, _super);\n function UploadListGroup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n _this.onClick = function () {\n _this.props.onClick.call(undefined, _this.props.index);\n };\n return _this;\n }\n UploadListGroup.prototype.componentDidUpdate = function () {\n var _a = this.props, navigationIndex = _a.navigationIndex, index = _a.index;\n if (navigationIndex === index &&\n this._element &&\n document.activeElement !== this._element) {\n this._element.focus();\n }\n };\n UploadListGroup.prototype.render = function () {\n var _this = this;\n var _a = this.props, files = _a.files, async = _a.async, disabled = _a.disabled, navigationIndex = _a.navigationIndex, index = _a.index, listItemUI = _a.listItemUI, onCancel = _a.onCancel, onRemove = _a.onRemove, onRetry = _a.onRetry;\n var firstFile = files[0];\n var isFileSuccess = firstFile.status === UploadFileStatus.Uploaded ||\n firstFile.status === UploadFileStatus.Initial;\n var liClassName = classNames('k-file', utils.filesHaveValidationErrors(files) ? 'k-file-invalid' : '', firstFile.status === UploadFileStatus.UploadFailed || firstFile.status === UploadFileStatus.RemoveFailed ?\n 'k-file-error' : '', firstFile.status === UploadFileStatus.Uploading ? 'k-file-progress' : '', isFileSuccess ? 'k-file-success' : '', navigationIndex === index ? 'k-focus' : '');\n var itemOptions = {\n async: async,\n disabled: disabled,\n onCancel: onCancel,\n onRemove: onRemove,\n onRetry: onRetry\n };\n var ItemComponent = listItemUI || (files.length === 1 ? UploadListSingleItem : UploadListMultiItem);\n return (React.createElement(\"li\", { ref: function (ref) { return _this._element = ref; }, className: liClassName, \"data-uid\": firstFile.uid, tabIndex: -1, onClick: this.onClick },\n React.createElement(ItemComponent, __assign({ files: files }, itemOptions))));\n };\n return UploadListGroup;\n}(React.Component));\nexport { UploadListGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadListGroup } from './UploadListGroup';\n/**\n * @hidden\n */\nvar UploadList = /** @class */ (function (_super) {\n __extends(UploadList, _super);\n function UploadList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UploadList.prototype.mapListGroups = function () {\n var _a = this.props, groupedFiles = _a.groupedFiles, navigationIndex = _a.navigationIndex, others = __rest(_a, [\"groupedFiles\", \"navigationIndex\"]);\n return Object\n .keys(groupedFiles)\n .map(function (key, index) {\n var files = groupedFiles[key];\n return (React.createElement(UploadListGroup, __assign({ key: key, files: files, index: index, navigationIndex: navigationIndex }, others)));\n });\n };\n UploadList.prototype.render = function () {\n var ulClassName = classNames('k-upload-files', 'k-reset');\n return (React.createElement(\"ul\", { className: ulClassName }, this.mapListGroups()));\n };\n return UploadList;\n}(React.Component));\nexport { UploadList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport * as React from 'react';\nimport { selectTitle, selectNoFilesTitle, messages } from './messages';\nvar CHROME_REGEX = /(chrome)[ \\/]([\\w.]+)/i;\nvar SAFARI_REGEX = /(webkit)[ \\/]([\\w.]+)/i;\n/**\n * @hidden\n */\nvar UploadInput = /** @class */ (function (_super) {\n __extends(UploadInput, _super);\n function UploadInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._input = null;\n _this.onMouseDown = function (e) {\n if (_this.props.onMouseDown) {\n _this.props.onMouseDown(e);\n }\n };\n _this.onAdd = function () {\n var ua = navigator.userAgent;\n var input = _this._input;\n if (input) {\n if (_this.props.onAdd && input.files) {\n _this.props.onAdd.call(undefined, input.files);\n }\n /*\n Chrome and Internet Explorer do not trigger a `change` event\n when a file with the same name is selected a number of consecutive times.\n As a workaround, clear the input value after handling the file.\n */\n if (!(!ua.match(CHROME_REGEX) && ua.match(SAFARI_REGEX))) {\n input.type = '';\n input.type = 'file';\n }\n }\n };\n return _this;\n }\n Object.defineProperty(UploadInput.prototype, \"actionElement\", {\n get: function () {\n return this._input;\n },\n enumerable: false,\n configurable: true\n });\n UploadInput.prototype.render = function () {\n var _this = this;\n var _a = this.props, multiple = _a.multiple, async = _a.async, disabled = _a.disabled, accept = _a.accept, hasFiles = _a.hasFiles;\n var localizationService = provideLocalizationService(this);\n var message = hasFiles ? selectTitle : selectNoFilesTitle;\n var selectMessage = localizationService.toLanguageString(message, messages[message]);\n return (React.createElement(\"input\", { ref: function (ref) { return _this._input = ref; }, autoComplete: 'off', name: async.saveField, accept: accept, type: 'file', tabIndex: -1, multiple: multiple, disabled: disabled, onChange: this.onAdd, onMouseDown: this.onMouseDown, title: selectMessage }));\n };\n return UploadInput;\n}(React.Component));\nexport { UploadInput };\nregisterForLocalization(UploadInput);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, select } from './messages';\nimport { UploadInput } from './UploadInput';\n/** @hidden */\nvar defaultSelectMessageUI = function (props) { return React.createElement(\"span\", null, props.message); };\n/**\n * @hidden\n */\nvar UploadAddButton = /** @class */ (function (_super) {\n __extends(UploadAddButton, _super);\n function UploadAddButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n _this._uploadInput = null;\n _this.focus = function () {\n if (_this._element) {\n _this._element.focus();\n }\n };\n _this.onClick = function () {\n _this.props.onClick.call(undefined, _this.props.addButtonIndex);\n };\n _this.onInputMouseDown = function (e) {\n if (_this._element) {\n e.preventDefault();\n _this._element.focus();\n }\n };\n return _this;\n }\n Object.defineProperty(UploadAddButton.prototype, \"actionElement\", {\n get: function () {\n if (this._uploadInput) {\n return this._uploadInput.actionElement;\n }\n },\n enumerable: false,\n configurable: true\n });\n UploadAddButton.prototype.componentDidUpdate = function (prevProps) {\n var _a = this.props, navigationIndex = _a.navigationIndex, addButtonIndex = _a.addButtonIndex, notFocusedIndex = _a.notFocusedIndex;\n if (navigationIndex !== prevProps.navigationIndex &&\n prevProps.navigationIndex !== notFocusedIndex &&\n navigationIndex === addButtonIndex &&\n this._element) {\n this._element.focus();\n }\n };\n UploadAddButton.prototype.render = function () {\n var _this = this;\n var _a = this.props, navigationIndex = _a.navigationIndex, addButtonIndex = _a.addButtonIndex, tabIndex = _a.tabIndex, id = _a.id, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, selectMessageUI = _a.selectMessageUI, others = __rest(_a, [\"navigationIndex\", \"addButtonIndex\", \"tabIndex\", \"id\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"selectMessageUI\"]);\n var localizationService = provideLocalizationService(this);\n var selectMessage = localizationService.toLanguageString(select, messages[select]);\n var buttonClassName = classNames('k-button k-button-md k-rounded-md k-button-solid k-button-solid-base', 'k-upload-button', navigationIndex === addButtonIndex ? 'k-focus' : '');\n var SelectMessageUI = selectMessageUI ? selectMessageUI : defaultSelectMessageUI;\n return (React.createElement(\"div\", { id: id, ref: function (ref) { return _this._element = ref; }, role: \"button\", className: buttonClassName, \"aria-label\": selectMessage, \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy, tabIndex: tabIndex, onClick: this.onClick },\n React.createElement(UploadInput, __assign({}, others, { onMouseDown: this.onInputMouseDown, ref: function (ref) { return _this._uploadInput = ref; } })),\n React.createElement(SelectMessageUI, { message: selectMessage })));\n };\n return UploadAddButton;\n}(React.Component));\nexport { UploadAddButton };\nregisterForLocalization(UploadAddButton);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, clearSelectedFiles, uploadSelectedFiles } from './messages';\n/**\n * @hidden\n */\nvar UploadActionButtons = /** @class */ (function (_super) {\n __extends(UploadActionButtons, _super);\n function UploadActionButtons() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._uploadElement = null;\n _this._clearElement = null;\n _this.onClearClick = function () {\n if (_this.props.disabled) {\n return;\n }\n if (_this.props.onClear) {\n _this.props.onClear.call(undefined);\n }\n };\n _this.onUploadClick = function () {\n if (_this.props.disabled) {\n return;\n }\n _this.props.onClick.call(undefined, _this.props.uploadButtonIndex);\n if (_this.props.onUpload) {\n _this.props.onUpload.call(undefined);\n }\n };\n return _this;\n }\n UploadActionButtons.prototype.componentDidUpdate = function (prevProps) {\n var _a = this.props, navigationIndex = _a.navigationIndex, clearButtonIndex = _a.clearButtonIndex, uploadButtonIndex = _a.uploadButtonIndex;\n if (navigationIndex !== prevProps.navigationIndex) {\n if (navigationIndex === clearButtonIndex && this._clearElement) {\n this._clearElement.focus();\n }\n if (navigationIndex === uploadButtonIndex && this._uploadElement) {\n this._uploadElement.focus();\n }\n }\n };\n UploadActionButtons.prototype.render = function () {\n var _this = this;\n var _a = this.props, disabled = _a.disabled, navigationIndex = _a.navigationIndex, clearButtonIndex = _a.clearButtonIndex, uploadButtonIndex = _a.uploadButtonIndex, actionsLayout = _a.actionsLayout;\n var localizationService = provideLocalizationService(this);\n var wrapperClasses = classNames('k-actions', 'k-hstack', {\n 'k-justify-content-start': actionsLayout === 'start',\n 'k-justify-content-center': actionsLayout === 'center',\n 'k-justify-content-end': actionsLayout === 'end',\n 'k-justify-content-stretch': actionsLayout === 'stretched'\n });\n var clearButtonClasses = classNames('k-button k-button-md k-rounded-md k-button-solid k-button-solid-base', 'k-clear-selected', disabled ? 'k-disabled' : '', navigationIndex === clearButtonIndex ? 'k-focus' : '');\n var uploadButtonClasses = classNames('k-button k-button-md k-rounded-md k-button-solid k-button-solid-primary', 'k-primary', 'k-upload-selected', disabled ? 'k-disabled' : '', navigationIndex === uploadButtonIndex ? 'k-focus' : '');\n return (React.createElement(\"div\", { className: wrapperClasses },\n React.createElement(\"button\", { ref: function (ref) { return _this._clearElement = ref; }, type: 'button', className: clearButtonClasses, tabIndex: -1, onClick: this.onClearClick }, localizationService\n .toLanguageString(clearSelectedFiles, messages[clearSelectedFiles])),\n React.createElement(\"button\", { ref: function (ref) { return _this._uploadElement = ref; }, type: 'button', className: uploadButtonClasses, tabIndex: -1, onClick: this.onUploadClick }, localizationService\n .toLanguageString(uploadSelectedFiles, messages[uploadSelectedFiles]))));\n };\n return UploadActionButtons;\n}(React.Component));\nexport { UploadActionButtons };\nregisterForLocalization(UploadActionButtons);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, headerStatusUploading, headerStatusUploaded } from './messages';\n/**\n * @hidden\n */\nvar UploadStatus = /** @class */ (function (_super) {\n __extends(UploadStatus, _super);\n function UploadStatus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UploadStatus.prototype.render = function () {\n var _a = this.props, isUploading = _a.isUploading, isUploaded = _a.isUploaded, isUploadFailed = _a.isUploadFailed;\n var className = classNames('k-upload-status', 'k-upload-status-total');\n var statusClassName = classNames(!isUploading && !isUploadFailed && isUploaded ? 'k-i-checkmark' : '', !isUploading && isUploadFailed ? 'k-i-exception' : '', isUploading ? 'k-i-loading' : '', 'k-icon');\n var statusText = '';\n var localizationService = provideLocalizationService(this);\n if (isUploading) {\n statusText = localizationService\n .toLanguageString(headerStatusUploading, messages[headerStatusUploading]);\n }\n else if (isUploaded || isUploadFailed) {\n statusText = localizationService\n .toLanguageString(headerStatusUploaded, messages[headerStatusUploaded]);\n }\n return (React.createElement(\"div\", { className: className },\n React.createElement(\"span\", { className: statusClassName }),\n statusText));\n };\n return UploadStatus;\n}(React.Component));\nexport { UploadStatus };\nregisterForLocalization(UploadStatus);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, dropFilesHere } from './messages';\nimport utils from './utils/utils';\nimport { UploadStatus } from './UploadStatus';\n/**\n * @hidden\n */\nvar TIME_TO_CHECK_DRAG = 100;\n/**\n * @hidden\n */\nvar UploadDropZone = /** @class */ (function (_super) {\n __extends(UploadDropZone, _super);\n function UploadDropZone() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._lastDocumentDragOver = null;\n _this._lastElementDragOver = null;\n _this._documentActive = false;\n _this._elementActive = false;\n _this.onDocumentDragEnter = function () {\n if (!_this.documentActive) {\n _this.documentActive = true;\n var documentInterval = function () {\n if (_this.isDragOver(_this._lastDocumentDragOver)) {\n _this.documentActive = false;\n clearInterval(_this._documentInterval);\n _this._documentInterval = null;\n _this._lastDocumentDragOver = null;\n }\n };\n _this._documentInterval = setInterval(documentInterval, TIME_TO_CHECK_DRAG);\n }\n };\n _this.onDocumentDragOver = function () {\n _this._lastDocumentDragOver = new Date();\n };\n _this.onElementDragEnter = function () {\n if (!_this.elementActive) {\n _this.elementActive = true;\n var elementInterval = function () {\n if (_this.isDragOver(_this._lastElementDragOver)) {\n _this.elementActive = false;\n clearInterval(_this._elementInterval);\n _this._elementInterval = null;\n _this._lastElementDragOver = null;\n }\n };\n _this._elementInterval = setInterval(elementInterval, TIME_TO_CHECK_DRAG);\n }\n };\n _this.onElementDragOver = function (event) {\n event.preventDefault();\n _this._lastElementDragOver = new Date();\n };\n _this.onDrop = function (event) {\n event.preventDefault();\n var droppedFiles = event.dataTransfer.files;\n if (droppedFiles.length > 0 &&\n !_this.props.disabled &&\n _this.props.onAdd &&\n (_this.props.multiple || droppedFiles.length <= 1)) {\n _this.props.onAdd.call(undefined, droppedFiles);\n }\n };\n _this.isDragOver = function (prevDate) {\n return (new Date().getTime() - (prevDate || new Date()).getTime()) > TIME_TO_CHECK_DRAG;\n };\n return _this;\n }\n Object.defineProperty(UploadDropZone.prototype, \"documentActive\", {\n get: function () {\n return this._documentActive;\n },\n set: function (active) {\n var prevActive = this.documentActive;\n this._documentActive = active;\n if (active !== prevActive) {\n this.forceUpdate();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadDropZone.prototype, \"elementActive\", {\n get: function () {\n return this._elementActive;\n },\n set: function (active) {\n var currentActive = this._elementActive;\n this._elementActive = active;\n if (active !== currentActive) {\n this.setState({});\n }\n },\n enumerable: false,\n configurable: true\n });\n UploadDropZone.prototype.componentDidMount = function () {\n document.addEventListener('dragenter', this.onDocumentDragEnter);\n document.addEventListener('dragover', this.onDocumentDragOver);\n };\n UploadDropZone.prototype.componentWillUnmount = function () {\n document.removeEventListener('dragenter', this.onDocumentDragEnter);\n document.removeEventListener('dragover', this.onDocumentDragOver);\n };\n UploadDropZone.prototype.render = function () {\n var _a = this.props, addButtonComponent = _a.addButtonComponent, fileGroup = _a.fileGroup;\n var localizationService = provideLocalizationService(this);\n var dropFilesMessage = localizationService\n .toLanguageString(dropFilesHere, messages[dropFilesHere]);\n var className = classNames('k-dropzone', this.documentActive ? 'k-dropzone-active' : '', this.elementActive ? 'k-dropzone-hovered' : '');\n var _b = utils.getFileStatus(fileGroup), isUploading = _b[0], isUploaded = _b[1], isUploadFailed = _b[2], isUploadValidationFailed = _b[3];\n var dropZoneClassName = classNames('k-dropzone-hint', {\n // Unsure about that, since it hides the \"Drop Files Message\" when we remove all uploaded components.\n // 'k-hidden': this.isDragged && !this.elementActive\n });\n return (React.createElement(\"div\", { className: className, onDrop: this.onDrop, onDragEnter: this.onElementDragEnter, onDragOver: this.onElementDragOver },\n addButtonComponent,\n isUploading || isUploaded || isUploadFailed || isUploadValidationFailed\n ? React.createElement(UploadStatus, { isUploading: isUploading, isUploaded: isUploaded, isUploadFailed: isUploadFailed })\n : React.createElement(\"div\", { className: dropZoneClassName }, dropFilesMessage)));\n };\n return UploadDropZone;\n}(React.Component));\nexport { UploadDropZone };\nregisterForLocalization(UploadDropZone);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { classNames } from '@progress/kendo-react-common';\nimport { UploadList } from './UploadList';\nimport { UploadAddButton } from './UploadAddButton';\nimport { UploadActionButtons } from './UploadActionButtons';\nimport { UploadDropZone } from './UploadDropZone';\nvar ADD_BUTTON_NAV_INDEX = -1;\n/**\n * @hidden\n */\nvar UploadUI = /** @class */ (function (_super) {\n __extends(UploadUI, _super);\n function UploadUI() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._container = null;\n _this._uploadAddButton = null;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._uploadAddButton) {\n return _this._uploadAddButton.focus();\n }\n };\n /**\n * @hidden\n */\n _this.onAdd = function (files) {\n if (_this.props.onAdd) {\n _this.props.onAdd.call(undefined, files);\n }\n };\n /**\n * @hidden\n */\n _this.onRetry = function (uid) {\n if (_this.props.onRetry) {\n _this.props.onRetry.call(undefined, uid);\n }\n };\n /**\n * @hidden\n */\n _this.onCancel = function (uid) {\n if (_this.props.onCancel) {\n _this.props.onCancel.call(undefined, uid);\n }\n };\n /**\n * @hidden\n */\n _this.onClear = function () {\n if (_this.props.onClear) {\n _this.props.onClear.call(undefined);\n }\n };\n /**\n * @hidden\n */\n _this.onUpload = function () {\n if (_this.props.onUpload) {\n _this.props.onUpload.call(undefined);\n }\n };\n /**\n * @hidden\n */\n _this.onRemove = function (uid) {\n if (_this.props.onRemove) {\n _this.props.onRemove.call(undefined, uid);\n }\n };\n /**\n * @hidden\n */\n _this.onKeyDown = function (event) {\n if (_this.props.onKeyDown) {\n _this.props.onKeyDown.call(undefined, event, _this.isRtl);\n }\n };\n /**\n * @hidden\n */\n _this.onFocus = function (event) {\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, event);\n }\n };\n /**\n * @hidden\n */\n _this.onBlur = function (event) {\n if (_this.props.onBlur) {\n _this.props.onBlur.call(undefined, event);\n }\n };\n /**\n * @hidden\n */\n _this.onClick = function (navIndex) {\n if (_this.props.onClick) {\n _this.props.onClick.call(undefined, navIndex);\n }\n };\n return _this;\n }\n Object.defineProperty(UploadUI.prototype, \"async\", {\n get: function () {\n var _a = this.props, autoUpload = _a.autoUpload, batch = _a.batch, withCredentials = _a.withCredentials, saveField = _a.saveField, saveHeaders = _a.saveHeaders, saveMethod = _a.saveMethod, saveUrl = _a.saveUrl, responseType = _a.responseType, removeField = _a.removeField, removeHeaders = _a.removeHeaders, removeMethod = _a.removeMethod, removeUrl = _a.removeUrl;\n return {\n autoUpload: autoUpload,\n batch: batch,\n withCredentials: withCredentials,\n saveField: saveField,\n saveHeaders: saveHeaders,\n saveMethod: saveMethod,\n saveUrl: saveUrl,\n responseType: responseType,\n removeField: removeField,\n removeHeaders: removeHeaders,\n removeMethod: removeMethod,\n removeUrl: removeUrl\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"groupsCount\", {\n get: function () {\n return Object.keys(this.props.groupedFiles).length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"lastGroupIndex\", {\n get: function () {\n return this.groupsCount - 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"addButtonIndex\", {\n get: function () {\n return ADD_BUTTON_NAV_INDEX;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"clearButtonIndex\", {\n get: function () {\n return this.lastGroupIndex + 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"uploadButtonIndex\", {\n get: function () {\n return this.lastGroupIndex + 2;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"isRtl\", {\n get: function () {\n return this._container && (getComputedStyle(this._container).direction === 'rtl') || false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"actionElement\", {\n /**\n * @hidden\n */\n get: function () {\n if (this._uploadAddButton) {\n return this._uploadAddButton.actionElement;\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n UploadUI.prototype.render = function () {\n var _this = this;\n var _a = this.props, multiple = _a.multiple, disabled = _a.disabled, tabIndex = _a.tabIndex, accept = _a.accept, showFileList = _a.showFileList, groupedFiles = _a.groupedFiles, navigationIndex = _a.navigationIndex, showActionButtons = _a.showActionButtons, actionsLayout = _a.actionsLayout, notFocusedIndex = _a.notFocusedIndex, listItemUI = _a.listItemUI, id = _a.id, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, selectMessageUI = _a.selectMessageUI;\n var className = classNames('k-widget', 'k-upload', this.props.className, disabled ? 'k-disabled' : '');\n var addButtonComponent = (React.createElement(UploadAddButton, { id: id, ariaLabelledBy: ariaLabelledBy, ariaDescribedBy: ariaDescribedBy, ref: function (ref) { return _this._uploadAddButton = ref; }, accept: accept, async: this.async, addButtonIndex: this.addButtonIndex, navigationIndex: navigationIndex, notFocusedIndex: notFocusedIndex, tabIndex: tabIndex, multiple: multiple, disabled: disabled, hasFiles: groupedFiles ? Object.keys(groupedFiles).length > 0 : false, selectMessageUI: selectMessageUI, onAdd: this.onAdd, onClick: this.onClick }));\n return (React.createElement(\"div\", { ref: function (ref) { return _this._container = ref; }, className: className, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur },\n React.createElement(UploadDropZone, { addButtonComponent: addButtonComponent, fileGroup: groupedFiles, disabled: disabled, multiple: multiple, onAdd: this.onAdd }),\n showFileList ?\n React.createElement(UploadList, { groupedFiles: groupedFiles, disabled: disabled, async: this.async, navigationIndex: navigationIndex, listItemUI: listItemUI, onCancel: this.onCancel, onRemove: this.onRemove, onRetry: this.onRetry, onClick: this.onClick }) : undefined,\n showActionButtons ?\n React.createElement(UploadActionButtons, { disabled: disabled, navigationIndex: navigationIndex, clearButtonIndex: this.clearButtonIndex, uploadButtonIndex: this.uploadButtonIndex, actionsLayout: actionsLayout, onUpload: this.onUpload, onClear: this.onClear, onClick: this.onClick }) : undefined));\n };\n UploadUI.defaultProps = {\n disabled: false,\n groupedFiles: {},\n multiple: true,\n actionsLayout: 'end'\n };\n return UploadUI;\n}(React.Component));\nexport { UploadUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Keys } from '@progress/kendo-react-common';\nimport { UploadUI } from './UploadUI';\n/**\n * @hidden\n */\nvar NOT_FOCUSED_INDEX = -2;\n/**\n * @hidden\n */\nvar DEFAULT_INDEX = -1;\n/**\n * @hidden\n */\nvar UploadNavigation = /** @class */ (function (_super) {\n __extends(UploadNavigation, _super);\n function UploadNavigation(props) {\n var _this = _super.call(this, props) || this;\n _this._uploadUI = null;\n _this.focus = function () {\n if (_this._uploadUI) {\n _this._uploadUI.focus();\n }\n };\n _this.onKeyDown = function (event, isRtl) {\n var navIndex = _this.navIndex;\n var groupKeys = Object.keys(_this.props.groupedFiles);\n var maxFileIndex = (groupKeys.length - 1);\n var maxNavIndex = _this.props.autoUpload || groupKeys.length === 0 ? maxFileIndex : maxFileIndex + 1;\n var cancelButtonIndex = maxFileIndex + 1;\n var uploadButtonIndex = cancelButtonIndex + 1;\n var prevIndex = navIndex === NOT_FOCUSED_INDEX ? DEFAULT_INDEX : navIndex;\n var nextIndex = navIndex;\n switch (event.keyCode) {\n case Keys.up:\n if (navIndex > -1) {\n nextIndex = prevIndex - 1;\n }\n break;\n case Keys.down:\n if (navIndex < maxNavIndex) {\n nextIndex = prevIndex + 1;\n }\n break;\n case Keys.left:\n if (isRtl) {\n if (navIndex === cancelButtonIndex) {\n nextIndex = prevIndex + 1;\n }\n }\n else {\n if (navIndex === uploadButtonIndex) {\n nextIndex = prevIndex - 1;\n }\n }\n break;\n case Keys.right:\n if (isRtl) {\n if (navIndex === uploadButtonIndex) {\n nextIndex = prevIndex - 1;\n }\n }\n else {\n if (navIndex === cancelButtonIndex) {\n nextIndex = prevIndex + 1;\n }\n }\n break;\n case Keys.enter:\n if (navIndex === DEFAULT_INDEX || navIndex === NOT_FOCUSED_INDEX) {\n if (_this.actionElement) {\n _this.actionElement.click();\n }\n }\n if (navIndex >= 0 && navIndex <= maxFileIndex) {\n _this.onRetry(groupKeys[navIndex]);\n }\n break;\n case Keys.space:\n if (navIndex === DEFAULT_INDEX || navIndex === NOT_FOCUSED_INDEX) {\n if (_this.actionElement) {\n _this.actionElement.click();\n }\n }\n break;\n case Keys.tab:\n nextIndex = NOT_FOCUSED_INDEX;\n break;\n case Keys.delete:\n if (navIndex >= 0 && navIndex <= maxFileIndex) {\n nextIndex = prevIndex - 1;\n _this.onRemove(groupKeys[navIndex]);\n }\n break;\n case Keys.esc:\n if (navIndex >= 0 && navIndex <= maxFileIndex) {\n nextIndex = prevIndex - 1;\n _this.onCancel(groupKeys[navIndex]);\n }\n break;\n default:\n }\n _this.navIndex = nextIndex;\n };\n _this.onCancel = function (uid) {\n if (_this.props.onCancel) {\n _this.props.onCancel.call(undefined, uid);\n }\n };\n _this.onClear = function () {\n _this.navIndex = DEFAULT_INDEX;\n if (_this.props.onClear) {\n _this.props.onClear.call(undefined);\n }\n };\n _this.onUpload = function () {\n _this.navIndex = DEFAULT_INDEX;\n if (_this.props.onUpload) {\n _this.props.onUpload.call(undefined);\n }\n };\n _this.onRetry = function (uid) {\n if (_this.props.onRetry) {\n _this.props.onRetry.call(undefined, uid);\n }\n };\n _this.onRemove = function (uid) {\n _this.navIndex = _this.navIndex > DEFAULT_INDEX ? _this.navIndex - 1 : DEFAULT_INDEX;\n if (_this.props.onRemove) {\n _this.props.onRemove.call(undefined, uid);\n }\n };\n _this.onAdd = function (files) {\n _this.navIndex = DEFAULT_INDEX;\n if (_this.props.onAdd) {\n _this.props.onAdd.call(undefined, files);\n }\n };\n _this.onClick = function (navIndex) {\n _this.navIndex = navIndex;\n };\n _this.onFocus = function () {\n if (_this._blurTimeout) {\n clearTimeout(_this._blurTimeout);\n _this._blurTimeout = undefined;\n }\n };\n _this.onBlurTimeout = function () {\n _this.navIndex = NOT_FOCUSED_INDEX;\n _this._blurTimeout = undefined;\n };\n _this.onBlur = function () {\n clearTimeout(_this._blurTimeout);\n _this._blurTimeout = window.setTimeout(_this.onBlurTimeout);\n };\n _this._navIndex = NOT_FOCUSED_INDEX;\n return _this;\n }\n Object.defineProperty(UploadNavigation.prototype, \"navIndex\", {\n get: function () {\n return this._navIndex;\n },\n set: function (navIndex) {\n var prevNavIndex = this.navIndex;\n this._navIndex = navIndex;\n if (navIndex !== prevNavIndex) {\n this.forceUpdate();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadNavigation.prototype, \"actionElement\", {\n get: function () {\n if (this._uploadUI) {\n return this._uploadUI.actionElement;\n }\n },\n enumerable: false,\n configurable: true\n });\n UploadNavigation.prototype.componentDidUpdate = function (prevProps) {\n var prevGroupLength = Object.keys(prevProps.groupedFiles).length;\n var groupLength = Object.keys(this.props.groupedFiles).length;\n if (prevGroupLength > groupLength && this.navIndex > DEFAULT_INDEX) {\n this.navIndex = this.navIndex - (prevGroupLength - groupLength);\n }\n };\n UploadNavigation.prototype.render = function () {\n var _this = this;\n var _a = this.props, onClear = _a.onClear, onRemove = _a.onRemove, onRetry = _a.onRetry, onCancel = _a.onCancel, onUpload = _a.onUpload, onAdd = _a.onAdd, others = __rest(_a, [\"onClear\", \"onRemove\", \"onRetry\", \"onCancel\", \"onUpload\", \"onAdd\"]);\n return (React.createElement(UploadUI, __assign({ ref: function (ref) { return _this._uploadUI = ref; }, className: this.props.className, onKeyDown: this.onKeyDown, navigationIndex: this.navIndex, notFocusedIndex: NOT_FOCUSED_INDEX, onAdd: this.onAdd, onClear: this.onClear, onUpload: this.onUpload, onRemove: this.onRemove, onRetry: this.onRetry, onCancel: this.onCancel, onClick: this.onClick, onFocus: this.onFocus, onBlur: this.onBlur }, others)));\n };\n return UploadNavigation;\n}(React.Component));\nexport { UploadNavigation };\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 { UploadFileStatus } from '../interfaces/UploadFileStatus';\nvar copyState = function (state) {\n return (state || []).map(function (file) {\n return __assign({}, file);\n });\n};\nvar add = function (file, filesState) {\n filesState.push(file);\n};\nvar addMany = function (fileList, filesState) {\n fileList.forEach(function (file) { return add(file, filesState); });\n};\nvar groupFilesByUid = function (files) {\n var fileGroup = {};\n files.forEach(function (file) {\n if (fileGroup[file.uid]) {\n fileGroup[file.uid].push(file);\n }\n else {\n fileGroup[file.uid] = [file];\n }\n });\n return fileGroup;\n};\nvar filesForUpload = function (files) {\n var notUploadedGroups = {};\n groupForEach(files, function (currentFiles, uid) {\n var currentFilesValid = true;\n currentFiles.forEach(function (file) {\n if (file.status !== UploadFileStatus.Selected ||\n (file.validationErrors && file.validationErrors.length > 0)) {\n currentFilesValid = false;\n }\n });\n if (currentFilesValid) {\n notUploadedGroups[uid] = currentFiles;\n }\n });\n return notUploadedGroups;\n};\nvar setFilesStatus = function (filesGroup, status) {\n groupForEach(filesGroup, function (currentFiles) {\n currentFiles.forEach(function (file) {\n file.status = status;\n });\n });\n};\nvar flatFileGroup = function (fileGroup) {\n var transformed = [];\n groupForEach(fileGroup, function (currentFiles) {\n transformed.push.apply(transformed, currentFiles);\n });\n return transformed;\n};\nvar groupForEach = function (fileGroup, callBack) {\n Object.keys(fileGroup).forEach(function (uidKey) {\n callBack(fileGroup[uidKey], uidKey);\n });\n};\nexport default {\n copyState: copyState,\n addMany: addMany,\n add: add,\n groupFilesByUid: groupFilesByUid,\n filesForUpload: filesForUpload,\n setFilesStatus: setFilesStatus,\n flatFileGroup: flatFileGroup,\n groupForEach: groupForEach\n};\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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar populateClientFormData = function (data, clientData) {\n Object.keys(clientData).forEach(function (key) {\n data.append(key, clientData[key]);\n });\n};\nvar populateUploadFormData = function (files, saveField, clientData) {\n var data = new FormData();\n populateClientFormData(data, clientData);\n files.forEach(function (file) {\n var rawFile = file.getRawFile ? file.getRawFile() : '';\n if (rawFile) {\n data.append(saveField, rawFile, file.name);\n }\n else {\n data.append(saveField, rawFile);\n }\n });\n return data;\n};\nvar populateRemoveFormData = function (fileNames, removeField, clientData) {\n var data = new FormData();\n populateClientFormData(data, clientData);\n fileNames.forEach(function (fileName) {\n data.append(removeField, fileName);\n });\n return data;\n};\nvar populateRequestOptions = function (headers, async) {\n return {\n headers: headers,\n responseType: async.responseType,\n withCredentials: async.withCredentials\n };\n};\nvar cloneRequestHeaders = function (headers) {\n var cloned = {};\n Object.keys(headers).forEach(function (key) {\n cloned[key] = headers[key];\n });\n return cloned;\n};\nvar convertAxiosResponse = function (event) {\n var data = event.data, config = event.config, others = __rest(event, [\"data\", \"config\"]);\n return __assign({ response: data }, others);\n};\nexport default {\n populateClientFormData: populateClientFormData,\n populateUploadFormData: populateUploadFormData,\n populateRemoveFormData: populateRemoveFormData,\n populateRequestOptions: populateRequestOptions,\n cloneRequestHeaders: cloneRequestHeaders,\n convertAxiosResponse: convertAxiosResponse\n};\n","var INVALIDMAXFILESIZE = 'invalidMaxFileSize';\nvar INVALIDMINFILESIZE = 'invalidMinFileSize';\nvar INVALIDFILEEXTENSION = 'invalidFileExtension';\nvar validateFileExtension = function (file, allowedExtensions) {\n if (allowedExtensions.length > 0) {\n if (allowedExtensions.indexOf((file.extension || '').toLowerCase()) < 0) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDFILEEXTENSION) < 0) {\n file.validationErrors.push(INVALIDFILEEXTENSION);\n }\n }\n }\n};\nvar validateFileSize = function (file, minFileSize, maxFileSize) {\n if (minFileSize !== 0 && (file.size || 0) < minFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMINFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMINFILESIZE);\n }\n }\n if (maxFileSize !== 0 && (file.size || 0) > maxFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMAXFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMAXFILESIZE);\n }\n }\n};\nvar parseAllowedExtensions = function (extensions) {\n var allowedExtensions = extensions.map(function (ext) {\n var parsedExt = (ext.substring(0, 1) === '.') ? ext : ('.' + ext);\n return parsedExt.toLowerCase();\n });\n return allowedExtensions;\n};\nvar validateFiles = function (files, restrictionInfo) {\n var allowedExtensions = parseAllowedExtensions(restrictionInfo.allowedExtensions || []);\n var maxFileSize = restrictionInfo.maxFileSize || 0;\n var minFileSize = restrictionInfo.minFileSize || 0;\n var i;\n for (i = 0; i < files.length; i++) {\n validateFileExtension(files[i], allowedExtensions);\n validateFileSize(files[i], minFileSize, maxFileSize);\n }\n};\nexport default {\n validateFiles: validateFiles\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-upload',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1656668380,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { getTabIndex } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { UploadNavigation } from './UploadNavigation';\nimport axios from 'axios';\nimport utils from './utils/utils';\nimport stateUtils from './utils/stateUtils';\nimport connectionUtils from './utils/connectionUtils';\nimport validationUtils from './utils/validationUtils';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nvar Upload = /** @class */ (function (_super) {\n __extends(Upload, _super);\n function Upload(props) {\n var _this = _super.call(this, props) || this;\n _this._httpSubscriptions = {};\n _this._uploadNavigation = null;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._uploadNavigation) {\n _this._uploadNavigation.focus();\n }\n };\n /**\n * Upload the selected files. Usable when the upload action is triggered by external code.\n */\n _this.triggerUpload = function () {\n _this.onUpload();\n };\n /**\n * @hidden\n */\n _this.uploadFiles = function (filesForUpload) {\n var async = _this.async;\n stateUtils.setFilesStatus(filesForUpload, UploadFileStatus.Uploading);\n stateUtils.groupForEach(filesForUpload, function (currentFiles, uid) {\n var headers = connectionUtils.cloneRequestHeaders(async.saveHeaders || {});\n var additionalData = {};\n var eventData = {\n target: _this,\n files: currentFiles,\n headers: headers,\n additionalData: additionalData\n };\n if (_this.props.onBeforeUpload) {\n _this.props.onBeforeUpload.call(undefined, eventData);\n }\n var requestOptions = connectionUtils.populateRequestOptions(eventData.headers, _this.async);\n var formData = connectionUtils.populateUploadFormData(currentFiles, async.saveField, eventData.additionalData);\n if (_this.isCustomSave) {\n _this.props.saveUrl(currentFiles, { formData: formData, requestOptions: requestOptions }, _this.onUploadProgress)\n .then(function (event) { return _this.onUploadSuccess(event.uid); })\n .catch(function (event) { return _this.onUploadError(event.uid); });\n }\n else {\n var cancelTokenSource = axios.CancelToken.source();\n _this._httpSubscriptions[uid] = cancelTokenSource;\n axios(__assign(__assign({ method: async.saveMethod, url: async.saveUrl, data: formData, cancelToken: cancelTokenSource.token }, requestOptions), { onUploadProgress: function (event) { return _this.onUploadProgress(uid, event); } }))\n .then(function (event) { return _this.onUploadSuccess(uid, event); })\n .catch(function (event) { return _this.onUploadError(uid, event); });\n }\n });\n };\n /**\n * @hidden\n */\n _this.removeFiles = function (filesForRemove) {\n var async = _this.async;\n stateUtils.groupForEach(filesForRemove, function (currentFiles, uid) {\n var headers = connectionUtils.cloneRequestHeaders(async.removeHeaders || {});\n var additionalData = {};\n var eventData = {\n target: _this,\n files: currentFiles,\n headers: headers,\n additionalData: additionalData\n };\n if (_this.props.onBeforeRemove) {\n _this.props.onBeforeRemove.call(undefined, eventData);\n }\n var fileNames = currentFiles.map(function (file) { return file.name; });\n var requestOptions = connectionUtils.populateRequestOptions(eventData.headers, _this.async);\n var formData = connectionUtils.populateRemoveFormData(fileNames, async.removeField, eventData.additionalData);\n if (_this.isCustomRemove) {\n _this.props.removeUrl(currentFiles, { formData: formData, requestOptions: requestOptions })\n .then(function (event) { return _this.onRemoveSuccess(event.uid); })\n .catch(function (event) { return _this.onRemoveError(event.uid); });\n }\n else {\n axios(__assign({ method: async.removeMethod, url: async.removeUrl, data: formData }, requestOptions))\n .then(function (event) { return _this.onRemoveSuccess(uid, event); })\n .catch(function (event) { return _this.onRemoveError(uid, event); });\n }\n });\n };\n /**\n * @hidden\n */\n _this.onUpload = function () {\n var newState = _this.fileStateCopy;\n var groupedFiles = stateUtils.groupFilesByUid(newState);\n var filesForUpload = stateUtils.filesForUpload(groupedFiles);\n _this.uploadFiles(filesForUpload);\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: stateUtils.flatFileGroup(filesForUpload)\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onAdd = function (files) {\n // The problem when removing rawFile is that there is no reliable way of preserving it internally.\n // For example, uid + filename - the filename can be changed at any moment.\n var selectedFiles = utils.getAllFileInfo(files);\n var newState;\n selectedFiles = utils.assignGuidToFiles(selectedFiles, _this.async.batch);\n validationUtils.validateFiles(selectedFiles, _this.props.restrictions);\n if (!_this.props.multiple) {\n newState = [];\n }\n else {\n newState = _this.fileStateCopy;\n }\n stateUtils.addMany(selectedFiles, newState);\n if (_this.async.autoUpload) {\n var groupedFiles = stateUtils.groupFilesByUid(newState);\n _this.uploadFiles(stateUtils.filesForUpload(groupedFiles));\n }\n var onAddEvent = function () {\n if (_this.props.onAdd) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: selectedFiles\n };\n _this.props.onAdd.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onAddEvent();\n }\n else {\n _this.setState({ files: newState }, onAddEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onUploadProgress = function (uid, event) {\n var percentComplete = Math.round(100 * event.loaded / event.total) || 0;\n var newState = _this.fileStateCopy;\n var filesWithProgress = newState.filter(function (file) { return file.uid === uid; });\n if (!filesWithProgress.length) {\n return;\n }\n filesWithProgress.forEach(function (file) {\n file.progress = percentComplete;\n });\n var onProgressEvent = function () {\n if (_this.props.onProgress) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: filesWithProgress\n };\n _this.props.onProgress.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onProgressEvent();\n }\n else {\n _this.setState({ files: newState }, onProgressEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onUploadSuccess = function (uid, event) {\n var newState = _this.fileStateCopy;\n var successFiles = newState.filter(function (file) { return file.uid === uid; });\n successFiles.forEach(function (file) {\n file.status = UploadFileStatus.Uploaded;\n });\n delete _this._httpSubscriptions[uid];\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: successFiles,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onUploadError = function (uid, event) {\n var newState = _this.fileStateCopy;\n var failedFiles = newState.filter(function (file) { return file.uid === uid; });\n failedFiles.forEach(function (file) {\n file.status = UploadFileStatus.UploadFailed;\n });\n delete _this._httpSubscriptions[uid];\n if (!failedFiles.length) {\n return;\n }\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: failedFiles,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onRemove = function (uid) {\n var _a;\n var newState = _this.fileStateCopy;\n var filesForRemove = newState.filter(function (file) { return file.uid === uid; });\n var filesToKeep = newState.filter(function (file) { return file.uid !== uid; });\n var remoteRemoveStatuses = [\n UploadFileStatus.Uploaded,\n UploadFileStatus.Initial,\n UploadFileStatus.RemoveFailed\n ];\n if (remoteRemoveStatuses.indexOf(filesForRemove[0].status) > -1) {\n var fileGroup = (_a = {},\n _a[uid] = filesForRemove,\n _a);\n stateUtils.setFilesStatus(fileGroup, UploadFileStatus.Removing);\n _this.removeFiles(fileGroup);\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: filesForRemove\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n }\n else {\n var onRemoveEvent = function () {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: filesToKeep,\n affectedFiles: filesForRemove\n };\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onRemoveEvent();\n }\n else {\n _this.setState({ files: filesToKeep }, onRemoveEvent);\n }\n }\n };\n /**\n * @hidden\n */\n _this.onRemoveSuccess = function (uid, event) {\n var newState = _this.fileStateCopy;\n var filesForRemove = newState.filter(function (file) { return file.uid === uid; });\n var filesToKeep = newState.filter(function (file) { return file.uid !== uid; });\n var onRemoveEvent = function () {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: filesToKeep,\n affectedFiles: filesForRemove,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onRemoveEvent();\n }\n else {\n _this.setState({ files: filesToKeep }, onRemoveEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onRemoveError = function (uid, event) {\n var newState = _this.fileStateCopy;\n var failedFiles = newState.filter(function (file) { return file.uid === uid; });\n failedFiles.forEach(function (file) {\n file.status = UploadFileStatus.RemoveFailed;\n });\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: failedFiles,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onRetry = function (uid) {\n var newState = _this.fileStateCopy;\n var filesForRetry = stateUtils.groupFilesByUid(newState.filter(function (file) { return file.uid === uid; }));\n stateUtils.setFilesStatus(filesForRetry, UploadFileStatus.Uploading);\n _this.uploadFiles(filesForRetry);\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: stateUtils.flatFileGroup(filesForRetry)\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onCancel = function (uid) {\n var newState = _this.fileStateCopy;\n var filesToKeep = newState.filter(function (file) { return file.uid !== uid; });\n var filesForRemove = newState.filter(function (file) { return file.uid === uid; });\n if (_this._httpSubscriptions[uid]) {\n _this._httpSubscriptions[uid].cancel();\n delete _this._httpSubscriptions[uid];\n }\n if (_this.props.onCancel) {\n var eventData = {\n target: _this,\n uid: uid\n };\n _this.props.onCancel.call(undefined, eventData);\n }\n var onRemoveEvent = function () {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: filesToKeep,\n affectedFiles: filesForRemove\n };\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onRemoveEvent();\n }\n else {\n _this.setState({ files: filesToKeep }, onRemoveEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onClear = function () {\n if (!_this.files.length) {\n return;\n }\n Object.keys(_this._httpSubscriptions).forEach(function (key) {\n _this._httpSubscriptions[key].cancel();\n });\n _this._httpSubscriptions = {};\n var onRemoveEvent = function () {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: [],\n affectedFiles: _this.fileStateCopy\n };\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onRemoveEvent();\n }\n else {\n _this.setState({ files: [] }, onRemoveEvent);\n }\n };\n validatePackage(packageMetadata);\n _this.state = {\n files: props.defaultFiles || []\n };\n return _this;\n }\n Object.defineProperty(Upload.prototype, \"async\", {\n get: function () {\n var _a = this.props, autoUpload = _a.autoUpload, batch = _a.batch, removeField = _a.removeField, removeHeaders = _a.removeHeaders, removeMethod = _a.removeMethod, removeUrl = _a.removeUrl, responseType = _a.responseType, saveField = _a.saveField, saveHeaders = _a.saveHeaders, saveMethod = _a.saveMethod, saveUrl = _a.saveUrl, withCredentials = _a.withCredentials;\n return {\n autoUpload: autoUpload,\n batch: batch,\n removeField: removeField,\n removeHeaders: removeHeaders,\n removeMethod: removeMethod,\n removeUrl: removeUrl,\n responseType: responseType,\n saveField: saveField,\n saveHeaders: saveHeaders,\n saveMethod: saveMethod,\n saveUrl: saveUrl,\n withCredentials: withCredentials\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"files\", {\n get: function () {\n var files = this.isControlled ? this.props.files : this.state.files;\n return files || [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"isControlled\", {\n get: function () {\n return !this.props.defaultFiles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"isCustomSave\", {\n get: function () {\n return this.props.saveUrl && typeof this.props.saveUrl === 'function';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"isCustomRemove\", {\n get: function () {\n return this.props.removeUrl && typeof this.props.removeUrl === 'function';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"fileStateCopy\", {\n get: function () {\n if (this.isControlled) {\n return stateUtils.copyState(this.props.files);\n }\n else {\n return stateUtils.copyState(this.state.files);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"actionElement\", {\n /**\n * @hidden\n */\n get: function () {\n if (this._uploadNavigation) {\n return this._uploadNavigation.actionElement;\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Upload.prototype.render = function () {\n var _this = this;\n var _a = this.props, showFileList = _a.showFileList, onAdd = _a.onAdd, onRemove = _a.onRemove, onCancel = _a.onCancel, autoUpload = _a.autoUpload, showActionButtons = _a.showActionButtons, actionsLayout = _a.actionsLayout, tabIndex = _a.tabIndex, disabled = _a.disabled, others = __rest(_a, [\"showFileList\", \"onAdd\", \"onRemove\", \"onCancel\", \"autoUpload\", \"showActionButtons\", \"actionsLayout\", \"tabIndex\", \"disabled\"]);\n var groupedFiles = stateUtils.groupFilesByUid(this.files);\n var filesForUpload = stateUtils.filesForUpload(groupedFiles);\n return (React.createElement(UploadNavigation, __assign({ groupedFiles: groupedFiles, className: this.props.className, showFileList: showFileList && !!Object.keys(groupedFiles).length, showActionButtons: showActionButtons && !autoUpload && !!Object.keys(filesForUpload).length, actionsLayout: actionsLayout, autoUpload: autoUpload, disabled: disabled, onAdd: this.onAdd, onRemove: this.onRemove, onClear: this.onClear, onUpload: this.onUpload, onRetry: this.onRetry, onCancel: this.onCancel, tabIndex: getTabIndex(tabIndex, disabled), ref: function (ref) { return _this._uploadNavigation = ref; } }, others)));\n };\n /**\n * @hidden\n */\n Upload.defaultProps = {\n autoUpload: true,\n batch: false,\n removeField: 'fileNames',\n removeHeaders: {},\n removeMethod: 'POST',\n removeUrl: '',\n responseType: 'json',\n saveField: 'files',\n saveHeaders: {},\n saveMethod: 'POST',\n saveUrl: '',\n withCredentials: true,\n restrictions: {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n },\n multiple: true,\n showFileList: true,\n showActionButtons: true,\n actionsLayout: 'end',\n disabled: false\n };\n /**\n * @hidden\n */\n Upload.propTypes = {\n autoUpload: PropTypes.bool,\n batch: PropTypes.bool,\n withCredentials: PropTypes.bool,\n saveField: PropTypes.string,\n saveHeaders: PropTypes.object,\n saveMethod: PropTypes.string,\n saveUrl: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n responseType: PropTypes.oneOf(['arraybuffer', 'blob', 'json', 'text']),\n removeField: PropTypes.string,\n removeHeaders: PropTypes.object,\n removeMethod: PropTypes.string,\n removeUrl: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n multiple: PropTypes.bool,\n disabled: PropTypes.bool,\n showFileList: PropTypes.bool,\n showActionButtons: PropTypes.bool,\n actionsLayout: PropTypes.oneOf(['start', 'center', 'end', 'stretched']),\n tabIndex: PropTypes.number,\n accept: PropTypes.string,\n listItemUI: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.string,\n PropTypes.shape({ render: PropTypes.func.isRequired })\n ]),\n restrictions: PropTypes.shape({\n allowedExtensions: PropTypes.arrayOf(PropTypes.string),\n maxFileSize: PropTypes.number,\n minFileSize: PropTypes.number\n }),\n files: PropTypes.arrayOf(PropTypes.shape({\n uid: PropTypes.string,\n name: PropTypes.string,\n extension: PropTypes.string,\n size: PropTypes.number,\n validationErrors: PropTypes.arrayOf(PropTypes.string),\n status: PropTypes.oneOf([\n UploadFileStatus.Initial,\n UploadFileStatus.RemoveFailed,\n UploadFileStatus.Removing,\n UploadFileStatus.Selected,\n UploadFileStatus.UploadFailed,\n UploadFileStatus.Uploaded,\n UploadFileStatus.Uploading\n ]),\n progress: PropTypes.number,\n getRawFile: PropTypes.func\n })),\n defaultFiles: PropTypes.arrayOf(PropTypes.shape({\n uid: PropTypes.string,\n name: PropTypes.string,\n extension: PropTypes.string,\n size: PropTypes.number,\n validationErrors: PropTypes.arrayOf(PropTypes.string),\n status: PropTypes.oneOf([\n UploadFileStatus.Initial,\n UploadFileStatus.RemoveFailed,\n UploadFileStatus.Removing,\n UploadFileStatus.Selected,\n UploadFileStatus.UploadFailed,\n UploadFileStatus.Uploaded,\n UploadFileStatus.Uploading\n ]),\n progress: PropTypes.number,\n getRawFile: PropTypes.func\n }))\n };\n return Upload;\n}(React.Component));\nexport { Upload };\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Button } from '@progress/kendo-react-buttons';\r\nimport { Window } from '@progress/kendo-react-dialogs';\r\nimport { Upload } from '@progress/kendo-react-upload';\r\nimport { TabStrip, TabStripTab } from '@progress/kendo-react-layout';\r\nimport { EditorUtils } from '@progress/kendo-react-editor';\r\nimport { UploadFiletoDirectory } from '../../../../Helpers/DateLakeStorage';\r\n\r\nexport class InsertImageDialog extends React.Component {\r\n\r\n state = {\r\n selected: 0,\r\n files: [],\r\n organizationId: \"\",\r\n projectId: \"\"\r\n };\r\n\r\n src = null;\r\n altText = null;\r\n title = null;\r\n width = null;\r\n height = null;\r\n\r\n onTabSelect = event => this.setState({ selected: event.selected, files: [] });\r\n\r\n onClose = () => this.props.onClose.call(undefined);\r\n\r\n onAddFiles = (event) => {\r\n this.setState({\r\n files: event.newState,\r\n organizationId: this.props.organizationId,\r\n projectId: this.props.projectId\r\n })\r\n }\r\n\r\n\r\n onInsert = async (event) => {\r\n\r\n const { view, imageNode } = this.props;\r\n const { files } = this.state;\r\n const nodes = view.state.schema.nodes;\r\n const nodeType = nodes[imageNode];\r\n const data = {\r\n src: this.src ? this.src.value : null,\r\n title: this.title ? this.title.value : null,\r\n alt: this.altText ? this.altText.value : null,\r\n width: this.width ? this.width.value : null,\r\n height: this.height ? this.height.value : null\r\n };\r\n\r\n const attrs = Object.keys(data)\r\n .filter(key => data[key] !== null && data[key] !== '')\r\n .reduce((acc, curr) => Object.assign(acc, { [curr]: data[curr] }), {});\r\n\r\n if (files.length) {\r\n const data = new FormData();\r\n let fileName = files[0].name.split('.jpg' || '.png' || '.jpeg' || '.ico')[0] + '_' + new Date().getTime() + files[0].extension\r\n data.append(`file`, files[0].getRawFile(), fileName)\r\n\r\n let path = this.state.organizationId + \"/\" + this.state.projectId + \"/SchemaImages\"\r\n data.append(\"path\", path)\r\n\r\n const response = await UploadFiletoDirectory(data)\r\n\r\n attrs.src = `${process.env.REACT_APP_DATALAKESTORAGE_URL}/${process.env.REACT_APP_DATALAKESTORAGE_CONTAINER}/${this.state.organizationId}/${this.state.projectId}/SchemaImages/${fileName}`\r\n\r\n const newImage = nodeType.createAndFill(attrs);\r\n EditorUtils.insertNode(view, newImage, true);\r\n view.focus();\r\n this.onClose();\r\n\r\n } else {\r\n const newImage = nodeType.createAndFill(attrs);\r\n EditorUtils.insertNode(view, newImage, true);\r\n view.focus();\r\n this.onClose();\r\n }\r\n }\r\n\r\n render() {\r\n const { view, imageNode } = this.props;\r\n const state = view && view.state;\r\n let attrs = {};\r\n\r\n if (state && state.selection.node &&\r\n state.selection.node.type === state.schema.nodes[imageNode]) {\r\n attrs = state.selection.node.attrs;\r\n }\r\n\r\n const fields = (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n this.altText = e}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.title = e}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.width = e}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.height = e}\r\n />\r\n
    \r\n \r\n );\r\n\r\n const buttons = (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n\r\n return ReactDOM.createPortal(\r\n (\r\n \r\n \r\n {Object.entries(attrs).length === 0 && \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {fields}\r\n {buttons}\r\n
    \r\n
    }\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.src = e}\r\n autoFocus={true}\r\n />\r\n
    \r\n {fields}\r\n {buttons}\r\n
    \r\n
    \r\n \r\n \r\n \r\n ),\r\n document.body);\r\n }\r\n}","import * as React from 'react';\r\nimport { Button } from '@progress/kendo-react-buttons';\r\nimport { EditorUtils, EditorToolsSettings } from '@progress/kendo-react-editor';\r\nimport { InsertImageDialog } from './insertImageDialog.jsx';\r\nconst imageSettings = EditorToolsSettings.image;\r\n\r\nlet organizationId = \"\";\r\nlet projectId = \"\";\r\n\r\nexport class InsertImage extends React.Component {\r\n state = { openedDialog: false };\r\n toggleDialog = () => this.setState({ openedDialog: !this.state.openedDialog });\r\n\r\n render() {\r\n const { view } = this.props;\r\n const state = view && view.state;\r\n const nodeType = state ? state.schema.nodes[imageSettings.node] : undefined;\r\n\r\n return (\r\n <>\r\n e.preventDefault()}\r\n onPointerDown={e => e.preventDefault()}\r\n title=\"Insert Image\"\r\n {...imageSettings.props}\r\n />\r\n { \r\n this.state.openedDialog && view && (\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport const setOrganizationId = (value) => {\r\n organizationId = value;\r\n}\r\n\r\nexport const setProjectId = (value) => {\r\n projectId = value;\r\n}","import { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport { Editor, EditorTools } from \"@progress/kendo-react-editor\";\r\nimport { useSelectedPage } from \"../../../Hooks/Display/usePages\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { useComponentProperties } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { InsertImage } from \"./Content/InsertImage/insertImageTool\";\r\n\r\nconst {\r\n Bold,\r\n Italic,\r\n Underline,\r\n Strikethrough,\r\n Subscript,\r\n Superscript,\r\n ForeColor,\r\n BackColor,\r\n CleanFormatting,\r\n AlignLeft,\r\n AlignCenter,\r\n AlignRight,\r\n AlignJustify,\r\n Indent,\r\n Outdent,\r\n OrderedList,\r\n UnorderedList,\r\n Undo,\r\n Redo,\r\n FontSize,\r\n FontName,\r\n FormatBlock,\r\n Link,\r\n Unlink,\r\n ViewHtml,\r\n InsertTable,\r\n AddRowBefore,\r\n AddRowAfter,\r\n AddColumnBefore,\r\n AddColumnAfter,\r\n DeleteRow,\r\n DeleteColumn,\r\n DeleteTable,\r\n MergeCells,\r\n SplitCell,\r\n} = EditorTools;\r\n\r\nfunction Content() {\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n\r\n function handleContent(e) {\r\n setProperty(\"value\", e.htmlValue);\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 if (selectedComponent.hidden) {\r\n return !e.transaction.docChanged;\r\n }\r\n }}\r\n contentStyle={{\r\n height: 500,\r\n width: \"100%\",\r\n }}\r\n defaultContent={selectedComponent.value}\r\n value={properties.value}\r\n onChange={handleContent}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default Content;","import { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { useSelectedComponent } from \"../../../../Hooks/Display/useComponents\";\r\nimport { useComponentProperties, useFetchedValues } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { byAttributeName } from \"../../utils\";\r\n\r\nconst DependentProperty = () => {\r\n\r\n const selectedComponent = useSelectedComponent();\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n\r\n const [{ generalProperties: fetchedValues }] = useFetchedValues();\r\n\r\n const [dependentAttributes, setDependentAttributes] = useState([]);\r\n\r\n const { t } = useTranslation(\"display/components/calendar\");\r\n\r\n useEffect(() => {\r\n if (fetchedValues.attributes && fetchedValues.attributes.length > 0) {\r\n const dependentAttributes = fetchedValues.attributes\r\n .filter(attribute => !attribute.isSystemAttribute && attribute.attributeType === \"String\")\r\n .sort(byAttributeName);\r\n setDependentAttributes(dependentAttributes)\r\n }\r\n }, [fetchedValues.attributes])\r\n\r\n const handleDependentPropertyChange = (e) => {\r\n setProperty(\"dependentAttribute\", e.target.value)\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default DependentProperty;","import { DropDownList } from '@progress/kendo-react-dropdowns'\r\nimport { useComponentProperties, useFetchedValues } from '../../../../Hooks/Display/useComponentProperties';\r\nimport { useEffect, useState } from 'react';\r\nimport { useSelectedComponent } from '../../../../Hooks/Display/useComponents';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { byAttributeName } from '../../utils';\r\n\r\nfunction MappingAttributesForGanntChart() {\r\n\r\n const selectedComponent = useSelectedComponent();\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n const [{ generalProperties: fetchedValues }] = useFetchedValues();\r\n\r\n const [mappingAttributes, setMappingAttributes] = useState([]);\r\n\r\n const { t } = useTranslation(\"display/components/calendar\");\r\n\r\n useEffect(() => {\r\n if (fetchedValues.attributes && fetchedValues.attributes.length > 0) {\r\n const mappingAttributes = fetchedValues.attributes\r\n .filter(attribute => {\r\n // Exclude attributes with formulaEnabled in triggerSetting\r\n if (attribute.triggerSetting && JSON.parse(attribute.triggerSetting).formulaEnabled) {\r\n return false;\r\n }\r\n\r\n // Include only non-system DateTime attributes that are not \"time\" type\r\n return (\r\n !attribute.isSystemAttribute &&\r\n attribute.attributeType === \"DateTime\" &&\r\n attribute.dateTimeType !== \"time\"\r\n );\r\n })\r\n .sort(byAttributeName);\r\n setMappingAttributes(mappingAttributes)\r\n }\r\n }, [fetchedValues.attributes])\r\n\r\n function handleStartAttribute(e) {\r\n setProperty(\"startDateAttribute\", e.target.value)\r\n if (\r\n e.target.value._id === properties.endDateAttribute._id ||\r\n e.target.value.dateTimeType !== properties.endDateAttribute.dateTimeType\r\n ) {\r\n setProperty(\"endDateAttribute\", {})\r\n }\r\n }\r\n\r\n function handleEndAttribute(e) {\r\n setProperty(\"endDateAttribute\", e.target.value)\r\n }\r\n\r\n function filterStartAttribute() {\r\n return mappingAttributes\r\n }\r\n\r\n function filterEndAttribute() {\r\n const startDateAttributeType = properties.startDateAttribute ? properties.startDateAttribute.dateTimeType : \"\";\r\n if (startDateAttributeType === \"\") {\r\n return mappingAttributes\r\n } else if (startDateAttributeType === \"date\") {\r\n const endDataAttributes = mappingAttributes.filter(attribute => attribute.dateTimeType === \"date\" && attribute._id !== properties.startDateAttribute._id)\r\n return endDataAttributes ? endDataAttributes : []\r\n } else if (startDateAttributeType === \"datetime\") {\r\n const endDataAttributes = mappingAttributes.filter(attribute => attribute.dateTimeType === \"datetime\" && attribute._id !== properties.startDateAttribute._id)\r\n return endDataAttributes ? endDataAttributes : []\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n mappingAttributes && mappingAttributes.length > 0 ?\r\n <>\r\n
    \r\n
    \r\n {t(\"form_labels.mapping_attributes.start_property\")}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"form_labels.mapping_attributes.end_property\")}\r\n
    \r\n \r\n
    \r\n \r\n :\r\n
    \r\n {t(\"form_labels.mapping_attributes.no_properties_error\")}\r\n
    \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default MappingAttributesForGanntChart;","import { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport { useSelectedComponent } from \"../../../../Hooks/Display/useComponents\";\r\nimport { useComponentProperties, useFetchedValues } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from 'react';\r\nimport { byAttributeName } from \"../../utils\";\r\n\r\nconst WorkProperty = () => {\r\n\r\n const selectedComponent = useSelectedComponent();\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n\r\n const [{ generalProperties: fetchedValues }] = useFetchedValues();\r\n\r\n const [workAttributes, setWorkAttributes] = useState([]);\r\n\r\n useEffect(() => {\r\n if (fetchedValues.attributes && fetchedValues.attributes.length > 0) {\r\n const workAttributes = fetchedValues.attributes\r\n .filter(attribute => !attribute.isSystemAttribute && attribute.attributeType === \"Number\")\r\n .sort(byAttributeName);\r\n setWorkAttributes(workAttributes)\r\n }\r\n }, [fetchedValues.attributes])\r\n\r\n const handleWorkPropertyChange = (e) => {\r\n const workAttribute = e.target.value && e.target.value._id ? e.target.value : { _id: \"\" };\r\n setProperty(\"workAttribute\", workAttribute);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default WorkProperty;","import { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport { useSelectedComponent } from \"../../../../Hooks/Display/useComponents\";\r\nimport { useComponentProperties, useFetchedValues } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from 'react';\r\nimport { byAttributeName } from \"../../utils\";\r\n\r\nconst DurationProperty = () => {\r\n\r\n const selectedComponent = useSelectedComponent();\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n\r\n const [{ generalProperties: fetchedValues }] = useFetchedValues();\r\n\r\n const [durationAttributes, setDurationAttributes] = useState([]);\r\n\r\n useEffect(() => {\r\n if (fetchedValues.attributes && fetchedValues.attributes.length > 0) {\r\n const durationAttributes = fetchedValues.attributes\r\n .filter(attribute => !attribute.isSystemAttribute && attribute.attributeType === \"Number\")\r\n .sort(byAttributeName);\r\n setDurationAttributes(durationAttributes)\r\n }\r\n }, [fetchedValues.attributes])\r\n\r\n const handleDurationPropertyChange = (e) => {\r\n setProperty(\"durationAttribute\", e.target.value ? e.target.value : { _id: \"\" });\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default DurationProperty;","import { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport { useSelectedComponent } from \"../../../../Hooks/Display/useComponents\";\r\nimport { useComponentProperties, useFetchedValues } from \"../../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from 'react';\r\nimport { byAttributeName } from \"../../utils\";\r\n\r\nconst ProgressProperty = () => {\r\n\r\n const selectedComponent = useSelectedComponent();\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n\r\n const [{ generalProperties: fetchedValues }] = useFetchedValues();\r\n\r\n const [progressAttributes, setProgressAttributes] = useState([]);\r\n\r\n useEffect(() => {\r\n if (fetchedValues.attributes && fetchedValues.attributes.length > 0) {\r\n const progressAttributes = fetchedValues.attributes\r\n .filter(attribute => !attribute.isSystemAttribute && attribute.attributeType === \"Number\")\r\n .sort(byAttributeName);\r\n setProgressAttributes(progressAttributes)\r\n }\r\n }, [fetchedValues.attributes])\r\n\r\n const handleProgressPropertyChange = (e) => {\r\n setProperty(\"progressAttribute\", e.target.value ? e.target.value : { _id: \"\" });\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default ProgressProperty;","import { useEffect, useState, useContext } from \"react\";\r\nimport { useChangeBooleans, useComponentProperties, useFetchedValues, useResetActions, useResetAttributeTable, useResetComponentProperties, useSaveComponent, useUpdateSyncComponentAttributes } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { usePortalPages, useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport componentPropertiesMap from \"./ComponentFormProperties.json\";\r\nimport { getAllAttributes } from \"../../Helpers/Schema/Schema\";\r\nimport ActionTable from \"../ActionTable/ActionTable\";\r\nimport AttributeTable from \"../AttributeTable/AttributeTable\";\r\nimport WorkWeekMultiSelect from \"./CalendarComponents/WorkWeekMultiSelect\";\r\nimport ComponentFormSkeleton from \"../../Display/Shared/ComponentFormSkeleton\";\r\nimport useInternalUserCheck from \"../../../Hooks/Misc/useInternalUserCheck\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport DependentProperty from \"./GanttChartComponents/DependentProperty\";\r\nimport MappingAttributesForGanntChart from \"./GanttChartComponents/MappingAttributesForGanntChart\";\r\nimport { GlobalContext } from \"../../../Renderers/GlobalContext\";\r\nimport WorkProperty from \"./GanttChartComponents/WorkProperty\";\r\nimport DurationProperty from \"./GanttChartComponents/DurationProperty\";\r\nimport ProgressProperty from \"./GanttChartComponents/ProgressProperty\";\r\nimport EventActions from \"./CalendarComponents/EventActions\";\r\nimport { getAttributes } from \"../../../API/Attribute/Attribute\";\r\n\r\nfunction GanttChart() {\r\n\r\n const [gridLinesData, setGridLinesData] = useState([\r\n {\r\n \"value\": \"Both\",\r\n \"text\": \"Both\"\r\n },\r\n {\r\n \"value\": \"Horizontal\",\r\n \"text\": \"Horizontal\"\r\n },\r\n {\r\n \"value\": \"Vertical\",\r\n \"text\": \"Vertical\"\r\n },\r\n {\r\n \"value\": \"None\",\r\n \"text\": \"None\"\r\n }\r\n ]);\r\n\r\n const [ganttChartViewData, setGanttChartViewData] = useState([\r\n {\r\n \"value\": \"Task View\",\r\n \"text\": \"Task View\"\r\n },\r\n {\r\n \"value\": \"Resource View\",\r\n \"text\": \"Resource View\"\r\n }\r\n ]);\r\n\r\n const workWeekCountData = [\"1\", \"2\", \"3\", \"4\", \"5\"];\r\n\r\n const [unitData, setUnitData] = useState([\r\n {\r\n \"text\": \"Year\",\r\n \"value\": \"Year\"\r\n },\r\n {\r\n \"text\": \"Month\",\r\n \"value\": \"Month\"\r\n },\r\n {\r\n \"text\": \"Week\",\r\n \"value\": \"Week\"\r\n },\r\n {\r\n \"text\": \"Day\",\r\n \"value\": \"Day\"\r\n },\r\n {\r\n \"text\": \"Hour\",\r\n \"value\": \"Hour\"\r\n }\r\n ]);\r\n\r\n const [sortOrderData, setSortOrderData] = useState([\r\n {\r\n \"text\": \"Ascending\",\r\n \"value\": \"Ascending\"\r\n },\r\n {\r\n \"text\": \"Descending\",\r\n \"value\": \"Descending\"\r\n }\r\n ]);\r\n\r\n const formData = {\r\n \"Year\": [\r\n \"Jan '18\",\r\n \"2018\",\r\n \"January 18\"\r\n ],\r\n \"Month\": [\r\n \"Jan 01, 2018\",\r\n \"January\",\r\n \"Jan\"\r\n ],\r\n \"Week\": [\r\n \"Jan 01, 2018\",\r\n \"Mon Jan 01, '18\",\r\n \"Mon Jan 01\"\r\n ],\r\n \"Day\": [\r\n \"Mon, 01\",\r\n \"Mon\",\r\n \"01\"\r\n ],\r\n \"Hour\": [\r\n \"00\",\r\n \"00 : 00 AM\",\r\n \"0 : 00 AM\"\r\n ]\r\n }\r\n\r\n const [topFormatData, setTopFormatData] = useState(formData[\"Week\"]);\r\n const [bottomFormatData, setBottomFormatData] = useState(formData[\"Day\"]);\r\n\r\n const formProperties = componentPropertiesMap[\"Gantt Chart\"];\r\n const { user } = useContext(GlobalContext).state;\r\n // hooks\r\n const selectedPage = useSelectedPage();\r\n const portalPages = usePortalPages();\r\n const selectedComponent = useSelectedComponent();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const entityId = usePropsStoreValue(\"entityId\");\r\n const advancedMode = usePropsStoreValue(\"advancedMode\");\r\n const isInternalUser = useInternalUserCheck(user.email);\r\n const saveComponent = useSaveComponent();\r\n const updateSyncedComponentAttributes = useUpdateSyncComponentAttributes();\r\n const updatePageComponent = useUpdatePageComponent(selectedPage.parentId, selectedPage._id);\r\n const resetContext = useResetComponentProperties();\r\n const resetActions = useResetActions();\r\n const resetAttributes = useResetAttributeTable();\r\n\r\n const [properties, setProperties] = useComponentProperties();\r\n const [{ generalProperties: fetchedValues }, { updateGeneralFetchedValue }] = useFetchedValues();\r\n const [{\r\n isGeneralPropertiesChanged,\r\n isActionTableChanged,\r\n isAttributeTableChanged\r\n }, setChangeProperty] = useChangeBooleans();\r\n\r\n const [loading, setLoading] = useState(true);\r\n\r\n const { t, ready } = useTranslation([\r\n \"display/common\",\r\n \"display/component_toolbar\",\r\n \"display/components/GanttChart\",\r\n \"display/tables/attribute\",\r\n \"display/components/calendar\",\r\n ])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (selectedPage && selectedComponent) {\r\n getData();\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setComponentPropertiesUsingAttributes(fetchedValues.attributes)\r\n }\r\n }, [selectedPage, selectedComponent])\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setIsChanged();\r\n }\r\n }, [properties])\r\n\r\n useEffect(() => {\r\n if (ready) {\r\n setGridLinesData([\r\n {\r\n \"text\": t(\"grid_lines.both\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Both\"\r\n },\r\n {\r\n \"text\": t(\"grid_lines.horizontal\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Horizontal\"\r\n },\r\n {\r\n \"text\": t(\"grid_lines.vertical\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Vertical\"\r\n },\r\n {\r\n \"text\": t(\"grid_lines.none\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"None\"\r\n }\r\n ]);\r\n setGanttChartViewData([\r\n {\r\n \"text\": t(\"gantt_chart_views.task_view\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Task View\"\r\n },\r\n {\r\n \"text\": t(\"gantt_chart_views.resource_view\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Resource View\"\r\n }\r\n ]);\r\n setUnitData(\r\n [\r\n {\r\n \"text\": t(\"units.year\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Year\"\r\n },\r\n {\r\n \"text\": t(\"units.month\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Month\"\r\n },\r\n {\r\n \"text\": t(\"units.week\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Week\"\r\n },\r\n {\r\n \"text\": t(\"units.day\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Day\"\r\n },\r\n {\r\n \"text\": t(\"units.hour\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Hour\"\r\n }\r\n ]\r\n );\r\n setSortOrderData([\r\n {\r\n \"text\": t(\"sort_orders.ascending\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Ascending\"\r\n },\r\n {\r\n \"text\": t(\"sort_orders.descending\", { ns: \"display/components/GanttChart\" }),\r\n \"value\": \"Descending\"\r\n }\r\n ]);\r\n }\r\n }, [ready])\r\n\r\n // state\r\n const [tabSelected, setSelectedTab] = useState(0);\r\n\r\n // functions\r\n\r\n async function getData() {\r\n const attributes = await getAttributes(entityId);\r\n const attributesToStore = attributes.sort((a, b) => {\r\n if (a.isSystemAttribute && !b.isSystemAttribute) {\r\n return 1\r\n } else if (a.isSystemAttribute && b.isSystemAttribute) {\r\n return 0;\r\n } else {\r\n return -1\r\n }\r\n })\r\n setComponentPropertiesUsingAttributes(attributesToStore);\r\n updateGeneralFetchedValue(\"attributes\", attributesToStore)\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n setLoading(false);\r\n }\r\n\r\n function setComponentPropertiesUsingAttributes(attributes) {\r\n for (const property of formProperties) {\r\n switch (property) {\r\n case \"startDateAttributeId\":\r\n const startDateAttribute = attributes.find(attribute => attribute._id === selectedComponent.startDateAttributeId);\r\n setProperties(\"startDateAttribute\", startDateAttribute || { id: \"\" });\r\n break;\r\n case \"endDateAttributeId\":\r\n const endDateAttribute = attributes.find(attribute => attribute._id === selectedComponent.endDateAttributeId);\r\n setProperties(\"endDateAttribute\", endDateAttribute || { id: \"\" });\r\n break;\r\n\r\n case \"dependentAttributeId\":\r\n const dependentAttribute = attributes.find(attribute => attribute._id === selectedComponent.dependentAttributeId);\r\n setProperties(\"dependentAttribute\", dependentAttribute || { id: \"\" });\r\n break;\r\n case \"workAttributeId\":\r\n const workAttribute = attributes.find(attribute => attribute._id === selectedComponent.workAttributeId);\r\n setProperties(\"workAttribute\", workAttribute || { id: \"\" });\r\n break;\r\n case \"durationAttributeId\":\r\n const durationAttribute = attributes.find(attribute => attribute._id === selectedComponent.durationAttributeId);\r\n setProperties(\"durationAttribute\", durationAttribute || { id: \"\" });\r\n break;\r\n case \"progressAttributeId\":\r\n const progressAttribute = attributes.find(attribute => attribute._id === selectedComponent.progressAttributeId);\r\n setProperties(\"progressAttribute\", progressAttribute || { id: \"\" });\r\n break;\r\n case \"addPageId\": {\r\n const page = portalPages.find(page => page._id === selectedComponent.addPageId);\r\n setProperties(\"addPage\", page);\r\n break;\r\n }\r\n case \"editPageId\": {\r\n const page = portalPages.find(page => page._id === selectedComponent.editPageId);\r\n setProperties(\"editPage\", page);\r\n break;\r\n }\r\n case \"sortByAttributeId\":\r\n const sortByAttribute = attributes.find(attribute => attribute._id === selectedComponent.sortByAttributeId);\r\n setProperties(\"sortByAttribute\", sortByAttribute || { id: \"\" });\r\n break;\r\n case \"gridLines\":\r\n const gridLines = gridLinesData.find(gridLine => gridLine.value === selectedComponent[property]);\r\n const gridLinesValue = gridLines || gridLinesData[0];\r\n gridLinesValue.text = t(`grid_lines.${gridLinesValue.value.toLowerCase()}`, { ns: \"display/components/GanttChart\" });\r\n setProperties(property, gridLinesValue);\r\n break;\r\n case \"ganttChartView\":\r\n const ganttChartView = ganttChartViewData.find(view => view.value === selectedComponent[property]);\r\n const ganttChartViewValue = ganttChartView || ganttChartViewData[0];\r\n ganttChartViewValue.text = t(`gantt_chart_views.${ganttChartViewValue.value.toLowerCase().replace(\" \", \"_\")}`, { ns: \"display/components/GanttChart\" });\r\n setProperties(property, ganttChartViewValue);\r\n break;\r\n case \"topUnit\":\r\n const topUnit = unitData.find(unit => unit.value === selectedComponent[property]);\r\n const topUnitValue = topUnit || unitData[0];\r\n topUnitValue.text = t(`units.${topUnitValue.value.toLowerCase()}`, { ns: \"display/components/GanttChart\" });\r\n setProperties(property, topUnitValue);\r\n setTopFormatData(formData[selectedComponent[property]]);\r\n break;\r\n case \"bottomUnit\":\r\n const bottomUnit = unitData.find(unit => unit.value === selectedComponent[property]);\r\n const bottomUnitValue = bottomUnit || unitData[0];\r\n bottomUnitValue.text = t(`units.${bottomUnitValue.value.toLowerCase()}`, { ns: \"display/components/GanttChart\" });\r\n setProperties(property, bottomUnitValue);\r\n setBottomFormatData(formData[selectedComponent[property]]);\r\n break;\r\n case \"sortOrder\":\r\n const sortOrder = sortOrderData.find(sortOrder => sortOrder.value === selectedComponent[property]);\r\n const sortOrderValue = sortOrder || sortOrderData[0];\r\n sortOrderValue.text = t(`sort_orders.${sortOrderValue.value.toLowerCase()}`, { ns: \"display/components/GanttChart\" });\r\n setProperties(property, sortOrder || sortOrderData[0]);\r\n break;\r\n default:\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperties(property, selectedComponent[property])\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function handleTabSelect(event) {\r\n setSelectedTab(event.selected)\r\n }\r\n\r\n function handleInputChange(event) {\r\n setProperties(event.target.name, event.target.value);\r\n }\r\n\r\n function handleTopUnitChange(event) {\r\n const unit = event.target.value.value;\r\n handleInputChange(event);\r\n setTopFormatData(formData[unit]);\r\n if (!formData[unit].includes(properties.topFormat.value)) {\r\n setProperties(\"topFormat\", formData[unit][0] || \"\");\r\n }\r\n }\r\n\r\n function handleBottomUnitChange(event) {\r\n const unit = event.target.value.value;\r\n handleInputChange(event);\r\n setBottomFormatData(formData[unit]);\r\n if (!formData[unit].includes(properties.bottomFormat.value)) {\r\n setProperties(\"bottomFormat\", formData[unit][0] || \"\");\r\n }\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n switch (property) {\r\n case \"startDateAttributeId\":\r\n if (selectedComponent.startDateAttributeId !== properties.startDateAttribute._id) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"endDateAttributeId\":\r\n if (selectedComponent.endDateAttributeId !== properties.endDateAttribute._id) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"dependentAttributeId\":\r\n if (selectedComponent.dependentAttributeId !== properties.dependentAttribute._id) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"workAttributeId\":\r\n if (selectedComponent.workAttributeId !== properties.workAttribute._id) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"durationAttributeId\":\r\n if (selectedComponent.durationAttributeId !== properties.durationAttribute._id) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"progressAttributeId\":\r\n if (selectedComponent.progressAttributeId !== properties.progressAttribute._id) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"addPageId\": {\r\n if (\r\n properties.addPage &&\r\n selectedComponent.addPageId !== properties.addPage._id\r\n ) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n case \"editPageId\": {\r\n if (\r\n properties.editPage &&\r\n selectedComponent.editPageId !== properties.editPage._id\r\n ) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n case \"sortByAttributeId\":\r\n if (selectedComponent.sortByAttributeId !== properties.sortByAttribute._id) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"workWeek\":\r\n const previousWorkWeek = selectedComponent.workWeek\r\n const currentWorkWeek = properties.workWeek\r\n const addedItems = currentWorkWeek.filter(item => !previousWorkWeek.includes(item));\r\n const removedItems = previousWorkWeek.filter(item => !currentWorkWeek.includes(item));\r\n if (addedItems.length > 0 || removedItems.length > 0) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"gridLines\":\r\n case \"ganttChartView\":\r\n case \"topUnit\":\r\n case \"bottomUnit\":\r\n case \"sortOrder\":\r\n if (selectedComponent[property] !== properties[property].value) {\r\n isChanged = true;\r\n }\r\n break;\r\n default:\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n async function handleSave() {\r\n const updatedComponent = await saveComponent();\r\n updatePageComponent(selectedComponent.id, updatedComponent);\r\n if (isAttributeTableChanged && selectedComponent.componentsToSync && selectedComponent.componentsToSync.length > 0) {\r\n updateSyncedComponentAttributes();\r\n }\r\n }\r\n\r\n function resetComponent() {\r\n if (isGeneralPropertiesChanged) {\r\n setComponentPropertiesUsingAttributes(fetchedValues.attributes);\r\n }\r\n if (isAttributeTableChanged) {\r\n resetAttributes();\r\n }\r\n if (isActionTableChanged) {\r\n resetActions();\r\n }\r\n }\r\n\r\n if (loading) {\r\n return (\r\n \r\n )\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 accessedFromDesigner &&\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
    {t(\"form_labels.grid_lines\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    \r\n
    {t(\"form_labels.gantt_chart_view\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {t(\"form_labels.time_scale\", { ns: \"display/components/GanttChart\" })}
    \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
    {t(\"form_labels.top_week_count\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    \r\n
    {t(\"form_labels.bottom_week_count\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {t(\"form_labels.top_unit\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    \r\n
    {t(\"form_labels.bottom_unit\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {t(\"form_labels.top_format\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    \r\n
    {t(\"form_labels.bottom_format\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {t(\"form_labels.work_weeks\", { ns: \"display/components/GanttChart\" })}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n }\r\n {/*
    \r\n
    \r\n
    {t(\"form_labels.sort_by\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    \r\n
    {t(\"form_labels.sort_order\", { ns: \"display/components/GanttChart\" })}
    \r\n \r\n
    \r\n
    */}\r\n
    \r\n
    \r\n {t(\"form_labels.gantt_chart_mapping_properties\", { ns: \"display/components/GanttChart\" })}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {t(\"form_labels.dependent_property\", { ns: \"display/components/GanttChart\" })}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"form_labels.work_property\", { ns: \"display/components/GanttChart\" })}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"form_labels.duration_property\", { ns: \"display/components/GanttChart\" })}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"form_labels.progress_property\", { ns: \"display/components/GanttChart\" })}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {t(\"form_labels.event_actions.label\", { ns: \"display/components/calendar\" })}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {t(\"form_labels.task_bar_view_settings\", { ns: \"display/components/GanttChart\" })}\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 isInternalUser &&\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 GanttChart;","import Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ComponentToolbar from \"./ComponentToolbar/ComponentToolbar\";\r\nimport componentPropertiesMap from './ComponentFormProperties.json';\r\nimport { useChangeBooleans, useComponentProperties, useResetComponentProperties, useSaveComponent } from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport { useSelectedPage, useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport ComponentFormSkeleton from \"../../Display/Shared/ComponentFormSkeleton\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\n\r\nfunction SplitSection() {\r\n\r\n const splitSizes = [\"1/3\", \"1/2\", \"2/3\"];\r\n\r\n const formProperties = componentPropertiesMap.SplitSection;\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n const accessedFromDesigner = usePropsStoreValue(\"accessedFromDesigner\");\r\n const resetContext = useResetComponentProperties();\r\n const saveComponent = useSaveComponent();\r\n const updatePageComponent = useUpdatePageComponent(selectedComponent.parentId, selectedPage._id);\r\n\r\n const [properties, setProperty] = useComponentProperties();\r\n const [{ isGeneralPropertiesChanged }, setChangeProperty] = useChangeBooleans();\r\n\r\n const { t } = useTranslation(\"display/common\", { useSuspense: false });\r\n\r\n useEffect(() => {\r\n setProperties();\r\n setLoading(false);\r\n }, [])\r\n\r\n // componentWillUnmount\r\n useEffect(() => {\r\n return () => {\r\n resetContext();\r\n }\r\n }, [])\r\n\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n if (!loading) {\r\n setIsChanged();\r\n }\r\n }, [properties]);\r\n\r\n // state\r\n const [tabSelected, setTabSelected] = useState(0);\r\n\r\n // functions\r\n function setProperties() {\r\n for (const property of formProperties) {\r\n if (\r\n selectedComponent[property] !== undefined\r\n ) {\r\n setProperty(property, selectedComponent[property])\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", false);\r\n }\r\n }\r\n\r\n function handleChange(e) {\r\n const otherProperty = e.target.name === \"firstSectionSize\" ? \"secondSectionSize\" : \"firstSectionSize\";\r\n if (e.target.value === \"1/3\") {\r\n setProperty(otherProperty, \"2/3\");\r\n } else if (e.target.value === \"2/3\") {\r\n setProperty(otherProperty, \"1/3\");\r\n } else {\r\n setProperty(otherProperty, \"1/2\");\r\n }\r\n setProperty(e.target.name, e.target.value);\r\n }\r\n\r\n function setIsChanged() {\r\n let isChanged = false;\r\n for (const property of formProperties) {\r\n if (selectedComponent[property] !== properties[property]) {\r\n isChanged = true;\r\n break;\r\n }\r\n }\r\n setChangeProperty(\"isGeneralPropertiesChanged\", isChanged);\r\n }\r\n\r\n // handlers\r\n function handleTabSelect(event) {\r\n setTabSelected(event.selected);\r\n }\r\n\r\n async function handleSave() {\r\n const updatedComponent = await saveComponent();\r\n updatePageComponent(selectedComponent.id, updatedComponent);\r\n }\r\n\r\n function resetComponent() {\r\n if (isGeneralPropertiesChanged) {\r\n setProperties();\r\n }\r\n }\r\n\r\n if (loading) {\r\n return \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 First Section\r\n
    \r\n \r\n
    \r\n Second Section\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 SplitSection;","// hooks\r\nimport useComponents, { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\n\r\n// components\r\nimport GroupHeading from \"./GroupHeading\";\r\nimport Table from \"./Table\";\r\n\r\n// utils\r\nimport { getComponentByProperty } from \"../Components/utils\";\r\nimport Cards from \"./Cards\";\r\nimport Calendar from \"./Calendar\";\r\nimport List from \"./List\";\r\nimport SplitView from \"./SplitView\";\r\nimport Kanban from \"./Kanban\";\r\nimport Summary from \"./Summary\";\r\nimport ProgressBar from \"./ProgressBar\";\r\nimport View from \"./View\";\r\nimport Reference from \"./Reference\";\r\nimport History from \"./History\";\r\nimport Discussion from \"./Discussion\";\r\nimport Tab from \"./Tab\";\r\nimport TabContainer from \"./TabContainer\";\r\nimport { useSelectedPage } from \"../../../Hooks/Display/usePages\";\r\nimport SpecificHeading from \"./SpecificHeading\";\r\nimport StackedSection from \"./StackedSection\";\r\nimport Form from \"./Form\";\r\nimport Content from \"./Content\";\r\n\r\n// Hooks\r\nimport useComponentPropertiesContext from \"../../../Hooks/Display/useComponentProperties\";\r\nimport { OverlayLoader } from \"../../Shared/Loader/OverlayLoader\";\r\nimport GanttChart from \"./GanttChart\";\r\nimport SplitSection from \"./SplitSection\";\r\n\r\nfunction EditComponentForm() {\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n\r\n const [componentState] = useComponentPropertiesContext();\r\n\r\n const componentFormMap = {\r\n \"Entity Group\": {\r\n \"Heading\": ,\r\n \"Gantt Chart\": ,\r\n \"Table\":
    \r\n \r\n \r\n {value}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n toggleHidden(props.dataItem.id)}\r\n checked={!props.dataItem.hidden}\r\n />\r\n \r\n
    \r\n {\r\n setInEditId(props.dataItem.id);\r\n setTranslationData(props.dataItem.languages);\r\n setShowLabelTranslationDialog(true);\r\n }}\r\n title=\"Language Translation\"\r\n className=\"fas fa-language cursor-pointer\"\r\n />\r\n {\r\n setSelectedTab(props.dataItem);\r\n setOpenEditTabDialog(true)\r\n }}\r\n title=\"Edit Tab\"\r\n className=\"ms-4 fas fa-pencil text-secondary cursor-pointer\"\r\n >\r\n {\r\n setDeletingTab(props.dataItem);\r\n setShowDeleteTabDialog(true);\r\n }}\r\n title=\"Delete Tab\"\r\n className=\"fas fa-trash-alt text-danger ms-4 cursor-pointer\"\r\n >\r\n
    \r\n
    ,\r\n \"Cards\": ,\r\n \"Calendar\": ,\r\n \"List\": ,\r\n \"Split View\": ,\r\n \"Kanban\": ,\r\n \"Content\": \r\n },\r\n \"Entity Specific\": {\r\n \"Heading\": ,\r\n \"Summary\": ,\r\n \"Progress Bar\": ,\r\n \"View\": ,\r\n \"Reference\": ,\r\n \"History\": ,\r\n \"Discussion\": ,\r\n \"Tab\": ,\r\n \"Tab Container\": ,\r\n \"Stacked Section\": ,\r\n \"Split Section\": ,\r\n \"Form\":
    ,\r\n \"Content\": \r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n (componentState.isSaving || componentState.isPublishing) &&\r\n \r\n }\r\n {\r\n selectedPage && selectedComponent && componentFormMap[selectedPage.pageType][selectedComponent.componentType]\r\n }\r\n {\r\n (!selectedPage || !selectedComponent) &&

    Nothing Selected

    \r\n }\r\n {\r\n selectedPage && selectedComponent && !componentFormMap[selectedPage.pageType][selectedComponent.componentType] &&\r\n

    Component Form Not Found

    \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default EditComponentForm;","import React, { Component, useEffect, useState } from 'react';\r\nimport { MsalContext, useMsal } from \"@azure/msal-react\";\r\nimport { checkIfPageIsSyncedToForm, publishApp } from '../Helpers/DisplayConfig/DisplayConfig';\r\nimport { updateNode } from '../Helpers/Nodes';\r\nimport { syncGroupAttributesWithComponents, syncViewAttributesWithComponents } from '../../API/Display/Display';\r\nimport EditComponentForm from '../Display/EditComponentForm/EditComponent';\r\nimport { ComponentPropertiesProvider } from '../../Context/Display/ComponentProperties/ComponentPropertiesContext';\r\nimport { usePropsStoreSetter, usePropsStoreValue } from '../../Hooks/PropStore/usePropsStore';\r\n\r\nexport function RuntimeConfigForm(props) {\r\n\r\n\tconst msalContext = useMsal();\r\n\r\n\tconst publishAppFun = usePropsStoreValue(\"publishApp\");\r\n\tconst setPublishAppProp = usePropsStoreSetter(\"publishApp\");\r\n\r\n\tconst [state, setState] = useState({\r\n\t\tproject: {},\r\n\t\tentity: {},\r\n\t\tpage: {},\r\n\t\tcomponent: {},\r\n\t\tuser: {},\r\n\t\terror: {}\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tconst { project, entity, page, user, component } = props;\r\n\t\tsetState({\r\n\t\t\tproject, entity, page, component, user\r\n\t\t})\r\n\t\tsetPublishAppProp(handlePublish)\r\n\t}, []);\r\n\r\n\tasync function handlePublish() {\r\n\t\tconst {\r\n\t\t\torganisationName,\r\n\t\t\tinstanceId,\r\n\t\t\torganisationId\r\n\t\t} = props;\r\n\r\n\t\tconst { _id: projectId } = props.project;\r\n\t\tconst { _id: pageId, subPageType } = props.page;\r\n\t\tconst { _id: entityId } = props.entity;\r\n\t\tconst { oid: userId } = props.user;\r\n\r\n\t\tconst publishData = {\r\n\t\t\tprojectId,\r\n\t\t\torganisationId,\r\n\t\t\tinstanceId,\r\n\t\t\tcontext: msalContext,\r\n\t\t\tpageId,\r\n\t\t\tsubPageType,\r\n\t\t\tentityId,\r\n\t\t\tuserId,\r\n\t\t\torganisationName\r\n\t\t}\r\n\r\n\t\tconst { isLinkedToForm: doFullPublish } = await checkIfPageIsSyncedToForm(entityId, pageId);\r\n\r\n\t\t// await syncComponentAttributes();\r\n\r\n\t\tconst [data, err] = await publishApp(publishData, doFullPublish);\r\n\r\n\t\tif (err) {\r\n\t\t\tprops.updatePublishErrorMessage(err);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// await updateNode(\"Project\", projectId, { \"hasSchemaChanges\": false });\r\n\r\n\t\tpropogateMessageToRuntime(\"Success\", data?.message);\r\n\t}\r\n\r\n\tasync function checkIfAFormIsSynced() {\r\n\t\tconst { syncedComponents } = props;\r\n\t\treturn (\r\n\t\t\tsyncedComponents && syncedComponents.length > 0 &&\r\n\t\t\tsyncedComponents.some(\r\n\t\t\t\tcomponent => component.componentType === \"Form\"\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tasync function syncComponentAttributes() {\r\n\t\tconst { id, componentType } = props.component;\r\n\t\tif (componentType === \"View\" || componentType === \"Form\") {\r\n\t\t\tawait syncViewAttributesWithComponents(id);\r\n\t\t} else {\r\n\t\t\tawait syncGroupAttributesWithComponents(id);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction propogateMessageToRuntime() {\r\n\t\tconst runtimeURL = process.env.REACT_APP_RUNTIME_URL\r\n\t\twindow.parent.postMessage(JSON.stringify({\r\n\t\t\tdesignerStatus: \"Success\"\r\n\t\t}), runtimeURL);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import React, { useEffect, useState, useContext } from \"react\";\r\nimport { RuntimeConfigForm } from \"../../Components/Display/RuntimeConfigForm\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { getLoggedInUserUsingAccessToken } from \"../../API/User/User\";\r\nimport { PageContextProvider } from \"../../Context/Display/Pages/PagesContext\";\r\nimport { PropStoreProvider } from \"../../Context/PropStore/PropStoreContext\";\r\nimport { ComponentsContextProvider } from \"../../Context/Display/Components/ComponentsContext\";\r\nimport usePages, { useSelectedPage } from \"../../Hooks/Display/usePages\";\r\nimport useComponents, { useSelectedComponent } from \"../../Hooks/Display/useComponents\";\r\nimport { SELECT_PAGE, SET_PAGES } from \"../../Context/Display/Pages/PagesContextEvents\";\r\nimport { ConfirmationContextProvider } from \"../../Components/Shared/ConfirmationWithContext/ConfirmationContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\";\r\n\r\nexport const RuntimeConfigPage = () => {\r\n const context = useMsal();\r\n const params = useParams();\r\n\r\n let designerAccessToken = localStorage.getItem(\"accessToken\");\r\n const { dispatch } = useContext(GlobalContext)\r\n\r\n const [state, setState] = useState({\r\n loading: true,\r\n loginAttempted: false,\r\n attemptLogin: false,\r\n authenticated: false,\r\n userVerified: true,\r\n isUserPartOfOrganisation: true,\r\n isUserPartOfProject: true,\r\n isEntityPartOfProject: true,\r\n isPagePartOfEntity: true,\r\n isComponentPartOfPage: true,\r\n organization: {},\r\n project: {},\r\n entity: {},\r\n page: {},\r\n component: {},\r\n user: {},\r\n Allcomponents: [],\r\n pages: [],\r\n error: {\r\n message: \"\",\r\n type: \"\"\r\n }\r\n });\r\n\r\n const { ready: tReady, i18n } = useTranslation();\r\n\r\n useEffect(() => {\r\n async function fetchData() {\r\n if (designerAccessToken) {\r\n await getUserUsingAccessToken();\r\n await getData();\r\n setState(prevState => ({\r\n ...prevState,\r\n loading: false,\r\n authenticated: true\r\n }))\r\n } else {\r\n setState(prevState => ({\r\n ...prevState,\r\n loading: false,\r\n authenticated: false,\r\n }))\r\n }\r\n }\r\n fetchData();\r\n }, [context.inProgress]);\r\n\r\n const getData = async () => {\r\n console.time(\"Overall\");\r\n const {\r\n projectId,\r\n instanceId,\r\n entityId,\r\n pageId,\r\n componentId,\r\n } = params;\r\n\r\n try {\r\n console.time(\"new\");\r\n const request = await callApiWithAuthorization(\"/api/v0/runtimeConfigData\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n organisationId: params.organisationId,\r\n projectId,\r\n entityId,\r\n pageId,\r\n componentId,\r\n }),\r\n });\r\n const response = await request.json();\r\n console.timeEnd(\"new\");\r\n\r\n if (response.error !== undefined) {\r\n throw response\r\n }\r\n\r\n const {\r\n project,\r\n entity,\r\n pages,\r\n page,\r\n component,\r\n componentsForDropdown,\r\n userOrganization\r\n } = response;\r\n\r\n let organisationId = userOrganization.id\r\n let organisationName = userOrganization.number\r\n dispatch({ type: \"SET_SUBSCRIPTION\", payload: userOrganization ? userOrganization.subscription : {} })\r\n dispatch({ type: \"SET_ORGANIZATION\", payload: userOrganization || {} })\r\n dispatch({ type: \"SET_USER\", payload: userOrganization ? userOrganization.user : {} })\r\n setState(prevState => ({\r\n ...prevState,\r\n project,\r\n entity,\r\n page,\r\n component,\r\n instanceId,\r\n organization: userOrganization,\r\n organisationId,\r\n organisationName,\r\n Allcomponents: componentsForDropdown,\r\n pages,\r\n loginAttempted: false,\r\n }));\r\n } catch (e) {\r\n setState(prevState => ({\r\n ...prevState,\r\n loading: false,\r\n authenticated: true,\r\n error: {\r\n message: e.error,\r\n type: e.errorType\r\n }\r\n }))\r\n }\r\n }\r\n\r\n async function getUserUsingAccessToken() {\r\n const user = await getLoggedInUserUsingAccessToken();\r\n setState(prevState => ({\r\n ...prevState,\r\n user\r\n }))\r\n }\r\n\r\n useEffect(() => {\r\n if (tReady) {\r\n i18n.changeLanguage(state.organization.platformLanguage || \"en\");\r\n }\r\n }, [tReady, state.organization])\r\n\r\n const {\r\n loading,\r\n error\r\n } = state;\r\n\r\n if (loading) {\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 if (error.message && error.message !== \"\") {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {error.message}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n const { project, entity, page, component, user, instanceId } = state;\r\n\r\n const switchComponent = (dataItem) => {\r\n setState(prevState => ({\r\n ...prevState,\r\n component: dataItem\r\n }));\r\n }\r\n\r\n const updateComponentInTree = async (id, json) => {\r\n let { Allcomponents } = state\r\n let progressBars = []\r\n let index = Allcomponents.findIndex(component => component.id === id)\r\n if (index > -1) {\r\n Allcomponents[index].hidden = json.hidden === \"true\"\r\n if (json.order) {\r\n Allcomponents[index].order = json.order\r\n }\r\n Allcomponents[index].componentName = json.componentName\r\n const children = Allcomponents.filter(component => component.parentId === id)\r\n if (children.length > 0) {\r\n for (const child of children) {\r\n child.hidden = json.hidden === \"true\"\r\n }\r\n }\r\n }\r\n if (Allcomponents[index].componentType === \"Progress Bar\") {\r\n progressBars.push(Allcomponents[index]);\r\n }\r\n if (progressBars.length > 0) {\r\n const progressBarIds = progressBars.map(\r\n (progressBar) => progressBar.id\r\n );\r\n const newProgressBarHiddenState = await handleProgressBarHiddenState(progressBarIds);\r\n for (const progressBar of progressBars) {\r\n progressBar.hidden = newProgressBarHiddenState;\r\n }\r\n }\r\n\r\n let finalArray = []\r\n\r\n if (Allcomponents[index].componentType === \"Tab\") {\r\n const tree = convertToTree(Allcomponents);\r\n updateTree(tree, id, json.order);\r\n finalArray = convertToArray(tree);\r\n } else {\r\n finalArray = Allcomponents\r\n }\r\n\r\n\r\n setState(prevState => ({\r\n ...prevState,\r\n Allcomponents: finalArray\r\n }));\r\n };\r\n\r\n // convert array to tree using element parent id\r\n const convertToTree = (array) => {\r\n const map = new Map();\r\n for (const item of array) {\r\n map.set(item.id, item);\r\n }\r\n const result = [];\r\n for (const item of array) {\r\n const parent = map.get(item.parentId);\r\n if (parent) {\r\n if (!parent.children) {\r\n parent.children = [];\r\n }\r\n parent.children.push(item);\r\n } else {\r\n result.push(item);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n // update tree element order and sort by order\r\n const updateTree = (tree, id, order) => {\r\n for (const item of tree) {\r\n if (item.id === id) {\r\n item.order = order;\r\n } else if (item.children) {\r\n updateTree(item.children, id, order);\r\n item.children.sort((a, b) => a.order - b.order);\r\n }\r\n }\r\n };\r\n\r\n // convert tree to array\r\n const convertToArray = (tree) => {\r\n let array = [];\r\n for (const item of tree) {\r\n const { children, ...properties } = item;\r\n array.push(properties);\r\n if (children && children.length > 0) {\r\n array = array.concat(convertToArray(children));\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n const handleProgressBarHiddenState = async (progressBarIds) => {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/page/\" +\r\n state.page.id +\r\n \"/handleProgressBarHiddenState\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n entityId: state.entity.id,\r\n progressBarIds,\r\n }),\r\n }\r\n );\r\n const response = await request.json();\r\n return response.progressBarHiddenStatus;\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\nfunction RuntimeConfigRender(props) {\r\n\r\n const [pageState, pageDispatch] = usePages();\r\n const [componentsState, componentsDispatch] = useComponents();\r\n\r\n const [selectComponentDispatched, setSelectComponentDispatched] = useState(false);\r\n const [showFormStatus, setShowFormStatus] = useState(\"LOADING\");\r\n\r\n const selectedPage = useSelectedPage();\r\n\r\n useEffect(() => {\r\n const sortedPages = props.pages.sort((a, b) => a.order - b.order)\r\n pageDispatch({\r\n type: SET_PAGES,\r\n payload: [{\r\n id: sortedPages && sortedPages[0] ? sortedPages[0].parentId : \"\",\r\n pages: sortedPages\r\n }]\r\n })\r\n const pageIndex = props.pages.findIndex(page => page._id === props.page._id);\r\n pageDispatch({\r\n type: SELECT_PAGE,\r\n payload: \"0_\" + pageIndex\r\n })\r\n componentsDispatch({\r\n type: \"SET_COMPONENTS\",\r\n payload: props.components\r\n })\r\n const selectedComponentIndex = props.components.findIndex(component => component.id === props.component.id);\r\n componentsDispatch({\r\n type: \"SET_SELECTED_COMPONENT\",\r\n payload: String(selectedComponentIndex)\r\n })\r\n setSelectComponentDispatched(true);\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (selectedPage && selectedPage.components && componentsState.selectedComponentIndex !== \"\") {\r\n componentsDispatch({\r\n type: \"SET_COMPONENTS\",\r\n payload: selectedPage.components\r\n })\r\n }\r\n }, [selectedPage])\r\n\r\n useEffect(() => {\r\n if (selectComponentDispatched && showFormStatus === \"LOADING\") {\r\n if (componentsState.components.length > 0) {\r\n const selectedComponent = componentsState.components[componentsState.selectedComponentIndex];\r\n if (selectedComponent) {\r\n setShowFormStatus(\"SHOW_FORM\");\r\n } else {\r\n setShowFormStatus(\"NO_COMPONENT\");\r\n }\r\n } else {\r\n setShowFormStatus(\"NO_COMPONENT\");\r\n }\r\n }\r\n }, [selectComponentDispatched, componentsState.components])\r\n\r\n if (showFormStatus === \"LOADING\") {\r\n return (\r\n
    \r\n Loading...\r\n
    \r\n )\r\n }\r\n\r\n if (showFormStatus === \"NO_COMPONENT\") {\r\n return (\r\n
    \r\n No component found\r\n
    \r\n )\r\n }\r\n\r\n return (\r\n \r\n );\r\n // updatePublishErrorMessage={context.updatePublishErrorMessage}\r\n}","export const simpleConfigReducer = (state, action) => {\r\n switch (action.type) {\r\n case \"CHANGE_TAB\":\r\n return {\r\n ...state,\r\n selectedTabIndex: action.payload,\r\n };\r\n case \"PORTAL_FETCHED\":\r\n return {\r\n ...state,\r\n portal: { ...action.payload },\r\n navigationBarOrientation:\r\n action.payload.navigationBarOrientation,\r\n defaultNavigationBarOrientation:\r\n action.payload.navigationBarOrientation,\r\n enableDashboard: action.payload.enableDashboard,\r\n defaultEnableDashboard: action.payload.enableDashboard,\r\n enableReporting: action.payload.enableReporting,\r\n defaultEnableReporting: action.payload.enableReporting,\r\n isWorkflowEnabled: action.payload.isWorkflowEnabled,\r\n defaultIsWorkflowEnabled: action.payload.isWorkflowEnabled,\r\n };\r\n case \"ORIENTATION_CHANGE\":\r\n return {\r\n ...state,\r\n navigationBarOrientation: action.payload\r\n }\r\n case \"ENABLE_DASHBOARD_CHANGE\":\r\n return {\r\n ...state,\r\n enableDashboard: action.payload\r\n }\r\n case \"ENABLE_REPORTING_CHANGE\":\r\n return {\r\n ...state,\r\n enableReporting: action.payload\r\n }\r\n case \"SET_IS_WORKFLOW_ENABLED\":\r\n return {\r\n ...state,\r\n isWorkflowEnabled: action.payload\r\n }\r\n case \"ENTITIES_FETCHED\":\r\n return {\r\n ...state,\r\n entities: action.payload,\r\n entitiesLoaded: true,\r\n };\r\n case \"DRAG_START\":\r\n return {\r\n ...state,\r\n draggedItem: action.payload.draggedItem,\r\n draggedItemIndex: action.payload.draggedItemIndex\r\n }\r\n case \"DRAGGED_OVER\":\r\n const entities = [...state.entities];\r\n const temp = entities[action.payload.draggedOverItemIndex];\r\n entities[action.payload.draggedOverItemIndex] = state.draggedItem;\r\n entities[state.draggedItemIndex] = temp;\r\n return {\r\n ...state,\r\n entities,\r\n draggedOverItem: action.payload.draggedOverItem,\r\n draggedOverItemIndex: action.payload.draggedOverItemIndex,\r\n draggedItemIndex: action.payload.draggedOverItemIndex,\r\n };\r\n case \"DRAG_END\":\r\n return {\r\n ...state,\r\n entities: action.payload.map(entity => ({\r\n ...entity,\r\n isChanged: isChanged(entity)\r\n }))\r\n }\r\n case \"SET_MENU_ITEM_DATA_LOADED\":\r\n return {\r\n ...state,\r\n isMenuItemsTabLoadingData: false\r\n };\r\n case \"UPDATE_ENTITY_LABEL\": {\r\n const { index, value } = action.payload;\r\n state.entities[index].label = value;\r\n state.entities[index].isChanged = isChanged(state.entities[index]);\r\n return {\r\n ...state,\r\n entities: [...state.entities]\r\n }\r\n }\r\n case \"UPDATE_ENTITY_SHOW\": {\r\n const { index, value } = action.payload;\r\n state.entities[index].show = value;\r\n state.entities[index].isChanged = isChanged(state.entities[index]);\r\n return {\r\n ...state,\r\n entities: [...state.entities]\r\n }\r\n }\r\n case \"TOGGLE_EDIT_ATTRIBUTE_DIALOG\":\r\n return {\r\n ...state,\r\n ...action.payload,\r\n showEditAttributeDialog: !state.showEditAttributeDialog,\r\n }\r\n case \"TOGGLE_EDIT_LABEL_TRANSLATION_DIALOG\":\r\n return {\r\n ...state,\r\n showEditLabelTranslationDialog: !state.showEditLabelTranslationDialog,\r\n }\r\n case \"UPDATE_ENTITY_LANGUAGES\": {\r\n const newEntities = state.entities.map((entity) => {\r\n if (entity.menuItemId === action.payload.entityId) {\r\n const updatedEntity = {\r\n ...entity,\r\n languages: action.payload.languages\r\n }\r\n const isEntityChanged = isChanged(updatedEntity);\r\n return {\r\n ...updatedEntity,\r\n isChanged: isEntityChanged\r\n }\r\n }\r\n return entity;\r\n })\r\n return {\r\n ...state,\r\n entities: newEntities\r\n }\r\n }\r\n case \"SET_SELECTED_ENTITY\": {\r\n return {\r\n ...state,\r\n selectedEntity: action.payload\r\n }\r\n }\r\n case \"ENTITY_ATTRIBUTES_LOADED\":\r\n return {\r\n ...state,\r\n entityAttributes: action.payload,\r\n entityAttributesLoading: false\r\n };\r\n case \"UPDATE_ATTRIBUTE\":\r\n const { index, value } = action.payload;\r\n const selectedAttributes = [...state.selectedAttributes];\r\n selectedAttributes[index] = value;\r\n return {\r\n ...state,\r\n selectedAttributes\r\n }\r\n case \"SAVE_ATTRIBUTES\":\r\n const allEntities = [...state.entities]\r\n const currentEntity = allEntities.find(\r\n (entity) =>\r\n entity.recentRecordId === state.selectedRecentRecordId\r\n );\r\n const newSelectedAttributesValue = state.selectedAttributes.map(attr => ({\r\n ...attr,\r\n relationId: attr.relationType === \"Has_FirstAttribute\" ? action.payload.firstAttributeRelationId : action.payload.secondAttributeRelationId\r\n }))\r\n currentEntity.recentRecordAttributes = newSelectedAttributesValue;\r\n currentEntity.defaultRecentRecordAttributes = newSelectedAttributesValue;\r\n return {\r\n ...state,\r\n entities: allEntities,\r\n showEditAttributeDialog: false,\r\n selectedRecentRecordId: \"\",\r\n selectedAttributes: [],\r\n entityAttributesLoading: true,\r\n entityAttributes: [],\r\n };\r\n case \"SET_NEW_DEFAULT_VALUES\": {\r\n return {\r\n ...state,\r\n ...action.payload\r\n }\r\n }\r\n case \"START_SAVING\":\r\n return {\r\n ...state,\r\n saving: true\r\n }\r\n case \"START_PUBLISHING\":\r\n return {\r\n ...state,\r\n saving: false,\r\n publishing: true\r\n }\r\n case \"PUBLISH_END\":\r\n return {\r\n ...state,\r\n publishing: false,\r\n saveAndPublishCompleted: true,\r\n publishSuccessful: action.payload.status === \"Success\",\r\n publishMessage: action.payload.message,\r\n };\r\n case \"TARGET_FETCHED\":\r\n return {\r\n ...state,\r\n portalTarget: action.payload\r\n }\r\n case \"HIDE_AFTER_PUBLISH_MESSAGE\":\r\n return {\r\n ...state,\r\n publishing: false,\r\n saveAndPublishCompleted: false,\r\n publishSuccessful: \"\",\r\n publishMessage: \"\"\r\n }\r\n case \"REVERT_CHANGES\":\r\n const resetEntities = state.entities\r\n .sort((a, b) => a.defaultIndex - b.defaultIndex)\r\n .map((entity, index) => ({\r\n ...entity,\r\n defaultIndex: index,\r\n currentIndex: index,\r\n label: entity.defaultLabel,\r\n show: entity.defaultShow,\r\n isChanged: false\r\n }))\r\n return {\r\n ...state,\r\n navigationBarOrientation: state.defaultNavigationBarOrientation,\r\n enableDashboard: state.defaultEnableDashboard,\r\n enableReporting: state.defaultEnableReporting,\r\n entities: resetEntities,\r\n disabled: true\r\n }\r\n case \"SET_LOADING\":\r\n return {\r\n ...state,\r\n loading: action.payload.value\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nfunction isChanged(entity) {\r\n const isLabelChanged = entity.defaultLabel !== entity.label;\r\n const isShowChanged = entity.defaultShow !== entity.show;\r\n const isIndexChanged = entity.defaultIndex !== entity.currentIndex;\r\n const languagesChanged = isLanguagesChanged(entity.languages, entity.defaultLanguages);\r\n return (\r\n isLabelChanged ||\r\n isShowChanged ||\r\n isIndexChanged ||\r\n languagesChanged\r\n )\r\n}\r\n\r\nfunction isLanguagesChanged(languages, defaultLanguages) {\r\n const keys = Object.keys(languages);\r\n for (const key of keys) {\r\n if (languages[key] === undefined || defaultLanguages[key] === undefined) {\r\n debugger;\r\n }\r\n if (\r\n languages[key].label !== defaultLanguages[key].label ||\r\n languages[key].tooltip !== defaultLanguages[key].tooltip\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}","import React, { createContext, useReducer } from 'react';\r\nimport { simpleConfigReducer } from './SimpleConfigReducer';\r\n\r\nconst initialValue = {\r\n loading: true,\r\n defaultNavigationBarOrientation: \"\",\r\n defaultEnableDashboard: false,\r\n defaultEnableReporting: false,\r\n isMenuItemsTabLoadingData: false,\r\n entitiesLoaded: false,\r\n entities: [],\r\n selectedTabIndex: 0,\r\n portal: {},\r\n navigationBarOrientation: \"\",\r\n enableDashboard: false,\r\n enableReporting: false,\r\n isWorkflowEnabled: false,\r\n draggedItem: {},\r\n draggedItemIndex: -1,\r\n draggedOverItem: {},\r\n draggedOverItemIndex: -1,\r\n showEditAttributeDialog: false,\r\n showEditLabelTranslationDialog: false,\r\n selectedEntity: {},\r\n selectedRecentRecordId: \"\",\r\n selectedAttributes: [],\r\n entityAttributesLoading: true,\r\n entityAttributes: [],\r\n saving: false,\r\n publishing: false,\r\n saveAndPublishCompleted: false,\r\n publishSuccessful: true,\r\n publishMessage: \"\",\r\n portalTarget: {},\r\n};\r\n\r\nexport const SimpleConfigContext = createContext({ ...initialValue });\r\n\r\nexport const SimpleConfigProvider = ({ children }) => {\r\n const [state, dispatch] = useReducer(simpleConfigReducer, { ...initialValue });\r\n\r\n const setSelectedTab = (e) => {\r\n dispatch({\r\n type: \"CHANGE_TAB\",\r\n payload: e.selected\r\n })\r\n }\r\n\r\n const setPortal = (portal) => {\r\n dispatch({\r\n type: \"PORTAL_FETCHED\",\r\n payload: portal\r\n })\r\n }\r\n\r\n const setPortalTarget = (target) => {\r\n dispatch({\r\n type: \"TARGET_FETCHED\",\r\n payload: target\r\n })\r\n }\r\n\r\n const setNavigationBarOrientation = (event) => {\r\n dispatch({\r\n type: \"ORIENTATION_CHANGE\",\r\n payload: event.target.value\r\n })\r\n }\r\n\r\n const setEnableDashboard = (event) => {\r\n dispatch({\r\n type: \"ENABLE_DASHBOARD_CHANGE\",\r\n payload: event.target.value\r\n })\r\n }\r\n\r\n const setEnableReporting = (event) => {\r\n dispatch({\r\n type: \"ENABLE_REPORTING_CHANGE\",\r\n payload: event.target.value\r\n })\r\n }\r\n\r\n const setEntities = (entities) => {\r\n dispatch({\r\n type: \"ENTITIES_FETCHED\",\r\n payload: entities.map((entity, index) => ({\r\n ...entity,\r\n defaultLabel: entity.label,\r\n defaultShow: entity.show,\r\n defaultIndex: index,\r\n defaultRecentRecordAttributes: [...entity.recentRecordAttributes],\r\n defaultLanguages: entity.languages,\r\n currentIndex: index,\r\n isChanged: false,\r\n })),\r\n });\r\n }\r\n\r\n const startDrag = (draggedItem, draggedItemIndex) => {\r\n dispatch({\r\n type: \"DRAG_START\",\r\n payload: { draggedItem, draggedItemIndex },\r\n });\r\n };\r\n\r\n const handleDraggedOverItem = (draggedOverItem, draggedOverItemIndex) => {\r\n dispatch({\r\n type: \"DRAGGED_OVER\",\r\n payload: { draggedOverItem, draggedOverItemIndex }\r\n })\r\n }\r\n\r\n const menuItemsDataLoaded = () => {\r\n dispatch({\r\n type: \"SET_MENU_ITEM_DATA_LOADED\"\r\n })\r\n }\r\n\r\n const updateEntityLabelAtIndex = (index, value) => {\r\n dispatch({\r\n type: \"UPDATE_ENTITY_LABEL\",\r\n payload: { index, value }\r\n })\r\n }\r\n\r\n const updateEntityShowAtIndex = (index, value) => {\r\n dispatch({\r\n type: \"UPDATE_ENTITY_SHOW\",\r\n payload: { index, value },\r\n });\r\n };\r\n\r\n const handleDragEnd = (reorderedData) => {\r\n dispatch({\r\n type: \"DRAG_END\",\r\n payload: reorderedData\r\n })\r\n }\r\n\r\n const toggleEditAttributeDialog = (value) => {\r\n dispatch({\r\n type: \"TOGGLE_EDIT_ATTRIBUTE_DIALOG\",\r\n payload: value,\r\n });\r\n };\r\n\r\n const toggleEditLabelTranslationDialog = () => {\r\n dispatch({\r\n type: \"TOGGLE_EDIT_LABEL_TRANSLATION_DIALOG\"\r\n });\r\n }\r\n\r\n const setSelectedEntity = (entity) => {\r\n dispatch({\r\n type: \"SET_SELECTED_ENTITY\",\r\n payload: entity\r\n })\r\n }\r\n\r\n const updateEntityLanguages= (data) => {\r\n debugger;\r\n dispatch({\r\n type: \"UPDATE_ENTITY_LANGUAGES\",\r\n payload: data\r\n })\r\n }\r\n\r\n const setEntityAttributes = (attributes) => {\r\n dispatch({\r\n type: \"ENTITY_ATTRIBUTES_LOADED\",\r\n payload: attributes,\r\n });\r\n };\r\n\r\n const saveAttributes = (payload) => {\r\n dispatch({\r\n type: \"SAVE_ATTRIBUTES\",\r\n payload\r\n })\r\n }\r\n\r\n const updateAttribute = (index, value) => {\r\n dispatch({\r\n type: \"UPDATE_ATTRIBUTE\",\r\n payload: { index, value }\r\n })\r\n }\r\n\r\n const updateDefaultValuesToCurrentValue = (newValues) => {\r\n dispatch({\r\n type: \"SET_NEW_DEFAULT_VALUES\",\r\n payload: newValues\r\n })\r\n }\r\n\r\n const showSaving = () => {\r\n dispatch({\r\n type: \"START_SAVING\"\r\n })\r\n }\r\n\r\n const showPublishing = () => {\r\n dispatch({\r\n type: \"START_PUBLISHING\"\r\n })\r\n }\r\n\r\n const showAfterPublishMessage = (status, message) => {\r\n dispatch({\r\n type: \"PUBLISH_END\",\r\n payload: { status, message }\r\n })\r\n }\r\n\r\n const hideAfterPublishMessage = () => {\r\n dispatch({\r\n type: \"HIDE_AFTER_PUBLISH_MESSAGE\"\r\n })\r\n }\r\n\r\n const revertChanges = () => {\r\n dispatch({\r\n type: \"REVERT_CHANGES\"\r\n })\r\n }\r\n\r\n const setLoading = value => dispatch({\r\n type: \"SET_LOADING\",\r\n payload: value\r\n })\r\n\r\n const setIsWorkflowEnabled = (value) => {\r\n dispatch({\r\n type: \"SET_IS_WORKFLOW_ENABLED\",\r\n payload: value\r\n })\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}","import { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport React, { Component } from 'react'\r\nimport { SimpleConfigContext } from '../../../Context/Portal/SimpleConfigContext'\r\nimport Skeleton from '../../Shared/Skeleton/Skeleton';\r\nimport { withTranslation } from 'react-i18next';\r\n\r\nclass General extends Component {\r\n\r\n static contextType = SimpleConfigContext;\r\n\r\n state = {\r\n ORIENTATIONS: [\r\n { text: \"Top\", value: \"Top\" },\r\n { text: \"Left\", value: \"Left\" }\r\n ]\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.tReady) {\r\n this.setState({\r\n ORIENTATIONS: [\r\n { text: this.props.t('orientations.top'), value: \"Top\" },\r\n { text: this.props.t('orientations.left'), value: \"Left\" }\r\n ]\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.tReady !== prevProps.tReady && this.props.tReady === true) {\r\n this.setState({\r\n ORIENTATIONS: [\r\n { text: this.props.t('orientations.top'), value: \"Top\" },\r\n { text: this.props.t('orientations.left'), value: \"Left\" }\r\n ]\r\n });\r\n }\r\n }\r\n\r\n getOrientation = (dataItem) => {\r\n const orientation = dataItem.value || dataItem;\r\n return this.state.ORIENTATIONS.find(x => x.value === orientation);\r\n }\r\n\r\n render() {\r\n\r\n const {\r\n loading,\r\n navigationBarOrientation,\r\n setNavigationBarOrientation,\r\n enableDashboard,\r\n setEnableDashboard,\r\n enableReporting,\r\n setEnableReporting,\r\n isWorkflowEnabled,\r\n setIsWorkflowEnabled\r\n } = this.context;\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.props.t(\"form_labels.navigation_bar_orientation\")}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n setIsWorkflowEnabled(e.target.value)}\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation(\"portal_simple_config/general\")(General);","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n if (context.contains) return context.contains(node);\n if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\n\nexport default function useMounted() {\n var mounted = useRef(true);\n var isMounted = useRef(function () {\n return mounted.current;\n });\n useEffect(function () {\n mounted.current = true;\n return function () {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n var onUnmount = useUpdatedRef(fn);\n useEffect(function () {\n return function () {\n return onUnmount.current();\n };\n }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n var valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\n\nvar MAX_DELAY_MS = Math.pow(2, 31) - 1;\n\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n var delayMs = timeoutAtMs - Date.now();\n handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(function () {\n return setChainedTimeout(handleRef, fn, timeoutAtMs);\n }, MAX_DELAY_MS);\n}\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n *
    \n * {hello ?

    Hello

    : null}\n *
    \n * );\n * ```\n */\n\n\nexport default function useTimeout() {\n var isMounted = useMounted(); // types are confused between node and web here IDK\n\n var handleRef = useRef();\n useWillUnmount(function () {\n return clearTimeout(handleRef.current);\n });\n return useMemo(function () {\n var clear = function clear() {\n return clearTimeout(handleRef.current);\n };\n\n function set(fn, delayMs) {\n if (delayMs === void 0) {\n delayMs = 0;\n }\n\n if (!isMounted()) return;\n clear();\n\n if (delayMs <= MAX_DELAY_MS) {\n // For simplicity, if the timeout is short, just set a normal timeout.\n handleRef.current = setTimeout(fn, delayMs);\n } else {\n setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n }\n }\n\n return {\n set: set,\n clear: clear\n };\n }, []);\n}","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n return !ref || typeof ref === 'function' ? ref : function (value) {\n ref.current = value;\n };\n};\n\nexport function mergeRefs(refA, refB) {\n var a = toFnRef(refA);\n var b = toFnRef(refB);\n return function (value) {\n if (a) a(value);\n if (b) b(value);\n };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return \r\n\r\n \r\n {t(\"edit_attributes_dialog.buttons.save\")}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {showEditLabelTranslationDialog && (\r\n this.context.toggleEditLabelTranslationDialog()}\r\n onSave={(languages) => {\r\n debugger;\r\n this.context.updateEntityLanguages({\r\n entityId: selectedEntity.menuItemId,\r\n languages\r\n })\r\n this.context.toggleEditLabelTranslationDialog()\r\n this.context.setSelectedEntity({})\r\n }}\r\n languages={selectedEntity.languages}\r\n project={this.props.project}\r\n fields={[\"label\", \"tooltip\"]}\r\n type={t(\"edit_attributes_dialog.menu_item\")}\r\n />\r\n )}\r\n\r\n { }\r\n\r\n ({\r\n ...entity,\r\n index,\r\n }))}\r\n >\r\n \r\n
    }\r\n />\r\n \r\n \r\n \r\n }\r\n width={60}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n closeEditAttributeDialog = () => {\r\n this.context.toggleEditAttributeDialog({\r\n recentRecordId: \"\",\r\n selectedAttributes: [],\r\n entityAttributes: [],\r\n });\r\n };\r\n\r\n updateFirstAttribute = (e) => {\r\n const { value } = e.target;\r\n this.context.updateAttribute(0, value);\r\n };\r\n\r\n updateSecondAttribute = (e) => {\r\n var value = e.target.value == null ? {} : e.target.value;\r\n this.context.updateAttribute(1, value);\r\n };\r\n\r\n clearSecondAttribute = (e) => {\r\n this.context.updateAttribute(1, {});\r\n }\r\n\r\n areSelectedAttributesSame = () => {\r\n return (\r\n this.context.selectedAttributes[0] &&\r\n this.context.selectedAttributes[1] &&\r\n this.context.selectedAttributes[0]._id === this.context.selectedAttributes[1]._id\r\n );\r\n }\r\n\r\n areSelectedAttributesChanged = () => {\r\n const { selectedAttributes, defaultRecentRecordAttributes } = this.context;\r\n let isFirstAttributeChanged = false;\r\n if (\r\n (!selectedAttributes[0] && defaultRecentRecordAttributes[0]) ||\r\n (selectedAttributes[0] && !defaultRecentRecordAttributes[0]) ||\r\n (selectedAttributes[0] && defaultRecentRecordAttributes[0] && selectedAttributes[0]._id !== defaultRecentRecordAttributes[0]._id)\r\n ) {\r\n isFirstAttributeChanged = true;\r\n }\r\n let isSecondAttributeChanged = false;\r\n if (\r\n (!selectedAttributes[1] && defaultRecentRecordAttributes[1]) ||\r\n (selectedAttributes[1] && !defaultRecentRecordAttributes[1]) ||\r\n (selectedAttributes[1] && defaultRecentRecordAttributes[1] &&\r\n selectedAttributes[1]._id !== defaultRecentRecordAttributes[1]._id)\r\n ) {\r\n isSecondAttributeChanged = true;\r\n }\r\n return isFirstAttributeChanged || isSecondAttributeChanged\r\n }\r\n\r\n saveAttributes = async (e) => {\r\n e.preventDefault()\r\n try {\r\n this.saveAttributeButton.current.disabled = true;\r\n const { entities, selectedRecentRecordId } =\r\n this.context;\r\n const currentEntityIndex = entities.findIndex(\r\n (entity) => entity.recentRecordId === selectedRecentRecordId\r\n );\r\n const currentEntity = entities[currentEntityIndex];\r\n const newRecentRecordAttributes = [];\r\n if (this.context.selectedAttributes[0]) {\r\n newRecentRecordAttributes.push(this.context.selectedAttributes[0]._id);\r\n }\r\n if (this.context.selectedAttributes[1]) {\r\n newRecentRecordAttributes.push(this.context.selectedAttributes[1]._id);\r\n }\r\n await updateItem(this.props.portalId, currentEntity.menuItemId, {\r\n attributes: newRecentRecordAttributes\r\n }, currentEntity.recentRecordId);\r\n currentEntity.recentRecordAttributes = this.context.selectedAttributes;\r\n this.context.setEntities(entities);\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n this.saveAttributeButton.current.disabled = false;\r\n this.attributeFormSubmitted = false;\r\n this.closeEditAttributeDialog();\r\n }\r\n };\r\n\r\n dragStart(dataItem) {\r\n debugger;\r\n let dataItemIndex = this.context.entities.findIndex(\r\n (entity) => entity.menuItemId === dataItem.menuItemId\r\n );\r\n this.context.startDrag(dataItem, dataItemIndex);\r\n }\r\n\r\n reorder(dataItem) {\r\n if (this.context.draggedItem.menuItemId === dataItem.menuItemId) {\r\n if (\r\n this.context.draggedOverItemIndex !==\r\n this.context.draggedItemIndex\r\n ) {\r\n // this.context.handleDraggedOverItem({}, -1);\r\n // this.setState({ draggedOverItemIndex: -1 });\r\n }\r\n return;\r\n }\r\n\r\n const draggedOverItemIndex = this.context.entities.findIndex(\r\n (p) => p.menuItemId === dataItem.menuItemId\r\n );\r\n\r\n this.context.handleDraggedOverItem(dataItem, draggedOverItemIndex);\r\n }\r\n\r\n endDrag(dataItem) {\r\n let { draggedItemIndex, draggedOverItemIndex } = this.context;\r\n\r\n if (draggedOverItemIndex === -1) {\r\n return;\r\n }\r\n\r\n let reorderedData = this.context.entities.slice();\r\n let temp = reorderedData[draggedItemIndex];\r\n let index = draggedOverItemIndex;\r\n\r\n reorderedData.splice(draggedItemIndex, 1);\r\n reorderedData.splice(draggedOverItemIndex, 0, temp);\r\n\r\n let newOrder;\r\n\r\n if (reorderedData.length > 2) {\r\n if (index === reorderedData.length - 1) {\r\n newOrder =\r\n parseInt(reorderedData[index - 1][\"order\"]) + 10000000000;\r\n reorderedData[index][\"order\"] = newOrder;\r\n } else if (index === 0) {\r\n newOrder = parseInt(reorderedData[1][\"order\"]);\r\n let prevElementOrder = parseInt(reorderedData[2][\"order\"]);\r\n let orderToSet = (prevElementOrder + newOrder) / 2;\r\n reorderedData[index][\"order\"] = newOrder;\r\n reorderedData[1][\"order\"] = orderToSet;\r\n reorderedData[1].isChanged = true;\r\n } else {\r\n let prevItemOrder = parseInt(reorderedData[index - 1][\"order\"]);\r\n let nextItemOrder = parseInt(reorderedData[index + 1][\"order\"]);\r\n newOrder = (prevItemOrder + nextItemOrder) / 2;\r\n reorderedData[index][\"order\"] = newOrder;\r\n }\r\n reorderedData[index].isChanged = true;\r\n } else {\r\n let firstOrder = reorderedData[0][\"order\"];\r\n let secondOrder = reorderedData[1][\"order\"];\r\n\r\n reorderedData[0][\"order\"] = secondOrder;\r\n reorderedData[1][\"order\"] = firstOrder;\r\n\r\n reorderedData[0].isChanged = true;\r\n reorderedData[1].isChanged = true;\r\n }\r\n\r\n reorderedData = reorderedData.map((entity, index) => ({\r\n ...entity,\r\n currentIndex: index,\r\n }));\r\n\r\n this.context.handleDragEnd(reorderedData);\r\n }\r\n}\r\n\r\nclass DragCell extends React.Component {\r\n render() {\r\n return (\r\n {\r\n DragCell.reorder(this.props.dataItem);\r\n e.preventDefault();\r\n e.dataTransfer.dropEffect = \"copy\";\r\n }}\r\n onDragEnd={(e) => {\r\n e.preventDefault();\r\n DragCell.endDrag(this.props.dataItem);\r\n }}\r\n >\r\n {\r\n DragCell.dragStart(this.props.dataItem);\r\n e.dataTransfer.setData(\"dragging\", \"\");\r\n }}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nclass ShowCell extends React.Component {\r\n\r\n static contextType = SimpleConfigContext;\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n handleChange = (e) => {\r\n const { index } = this.props.dataItem;\r\n const { value } = e;\r\n this.context.updateEntityShowAtIndex(index, value);\r\n };\r\n}\r\n\r\nclass LabelCell extends React.Component {\r\n\r\n static contextType = SimpleConfigContext;\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n handleChange = (e) => {\r\n const { index } = this.props.dataItem;\r\n const { value } = e.target;\r\n this.context.updateEntityLabelAtIndex(index, value);\r\n }\r\n}\r\n\r\nclass LabelTranslationCell extends React.Component {\r\n static contextType = SimpleConfigContext;\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nclass AttributeEditCell extends React.Component {\r\n static contextType = SimpleConfigContext;\r\n\r\n render() {\r\n const { recentRecordId } = this.props.dataItem;\r\n\r\n if (recentRecordId === null) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n showEditAttributeDialog = () => {\r\n getAttributes(this.props.dataItem.allItemProperties.entityId)\r\n .then(this.orderAttributes)\r\n .then(this.context.setEntityAttributes);\r\n this.context.toggleEditAttributeDialog({\r\n selectedRecentRecordId: this.props.dataItem.recentRecordId,\r\n selectedAttributes: this.props.dataItem.recentRecordAttributes,\r\n defaultRecentRecordAttributes:\r\n this.props.dataItem.defaultRecentRecordAttributes,\r\n entityAttributesLoading: true,\r\n });\r\n };\r\n\r\n orderAttributes = (attributes) => {\r\n const systemAttributes = attributes.filter(attr => attr.isSystemAttribute);\r\n const orderedAttributes = attributes.filter(attr => !attr.isSystemAttribute).sort((a, b) => a.order - b.order);\r\n orderedAttributes.push(...systemAttributes);\r\n return orderedAttributes;\r\n }\r\n}\r\n\r\nexport default withTranslation(\"portal_simple_config/menu_items\")(MenuItems);","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function getCompressedJson(\r\n projectId,\r\n organizationId,\r\n publisherId,\r\n instanceId,\r\n forPreview,\r\n forImport\r\n) {\r\n try {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/project/\" + projectId + \"/compressedJson\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n projectId,\r\n organizationId,\r\n publisherId,\r\n instanceId,\r\n forPreview,\r\n forImport\r\n }),\r\n }\r\n );\r\n const response = await request.blob();\r\n return response;\r\n } catch (e) {\r\n return e.message;\r\n }\r\n}\r\n\r\nexport async function getRawJson(\r\n projectId,\r\n organizationId,\r\n publisherId,\r\n instanceId,\r\n forPreview,\r\n forImport\r\n) {\r\n try {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/getJsonData/\" + projectId,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n projectId,\r\n organizationId,\r\n publisherId,\r\n instanceId,\r\n forPreview,\r\n forImport\r\n }),\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n } catch (e) {\r\n return e.message;\r\n }\r\n}\r\n","import { callApiWithAuthorization } from \"../../API/CallApi\";\r\n\r\nexport async function getInstances(projectId) {\r\n try {\r\n let request = await callApiWithAuthorization(\"/api/v0/nodes/\" + projectId + \"/Instance\")\r\n return await request.json()\r\n } catch (error) {\r\n return error\r\n }\r\n}\r\n\r\nexport async function compressJson(json) {\r\n try {\r\n let request = await callApiWithAuthorization('/api/v0/Zip', {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(json)\r\n })\r\n return await request.blob()\r\n } catch (error) {\r\n return error\r\n }\r\n}\r\n\r\nexport async function updateProjectPortalConfig(projectId) {\r\n try {\r\n let request = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/updatePortalConfig\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ projectId }),\r\n });\r\n return await request.json();\r\n } catch (error) {\r\n return error;\r\n }\r\n}\r\n\r\nexport async function publishApplication(context, instance, compressJson, isFirstTimePublish = true) {\r\n var formdata = new FormData();\r\n formdata.append(\"file\", compressJson)\r\n\r\n let token = localStorage.getItem(\"accessToken\");\r\n\r\n let headers = {\r\n \"Authorization\": \"Bearer \" + token,\r\n }\r\n\r\n if (!isFirstTimePublish) {\r\n headers.appId = instance.appId || instance._id\r\n }\r\n const url = process.env.REACT_APP_RUNTIME_API_URL + \"/api/ui/GenerateAppConfigAndDb\"\r\n let request = await fetch(url, {\r\n method: \"POST\",\r\n headers: headers,\r\n body: formdata\r\n })\r\n\r\n let result = await request.json()\r\n return result\r\n}\r\n\r\nexport async function getPortalJsonForRuntimeInlineEdit(organizationId, projectId, portalId, instanceId) {\r\n try {\r\n const request = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/portal/\" + portalId + \"/json\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ organizationId, projectId, portalId, instanceId })\r\n })\r\n const response = await request.json();\r\n return response;\r\n } catch (error) {\r\n return { error: error.message }\r\n }\r\n}\r\n\r\nexport async function publishPortalJsonToRuntime(appId, portalId, portalJson) {\r\n const request = await fetch(\r\n process.env.REACT_APP_RUNTIME_API_URL + \"/api/ui/IncrementalPublishJsonNode?portalId=\" + portalId,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"appId\": appId,\r\n \"nodeName\": \"portal\",\r\n \"Authorization\": \"Bearer \" + localStorage.getItem(\"accessToken\")\r\n },\r\n body: JSON.stringify(portalJson)\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getProductionInstance(projectId) {\r\n const getProductionInstanceRequest = await callApiWithAuthorization(\r\n \"/api/v0/project/\" + projectId + \"/productionInstance\",\r\n );\r\n const productionInstance = await getProductionInstanceRequest.json();\r\n return productionInstance[0];\r\n}\r\n\r\nexport function replacePublishErrorTerms(errorMessage) {\r\n return errorMessage.replace(/entities/gi, \"Objects\").replace(/attributes/gi, \"Properties\").replace(/entity/gi, \"Object\").replace(/attribute/gi, \"Property\");\r\n}","import { callApiWithAuthorization } from \"../../../API/CallApi\";\r\n\r\n\r\nexport async function getAllPortals(projectId) {\r\n\ttry {\r\n\t\tconst request = await callApiWithAuthorization(`/api/v0/nodes/${projectId}/Portal`);\r\n\t\tconst response = await request.json();\r\n\t\treturn [response, null];\r\n\t} catch (e) {\r\n\t\treturn [null, e.message];\r\n\t}\r\n}\r\n\r\nexport async function getPortalTargetPages(portalId) {\r\n\ttry {\r\n\t\tconst request = await callApiWithAuthorization(`/api/v0/portal/${portalId}/targetPages`);\r\n\t\tconst response = await request.json();\r\n\t\treturn [response, null];\r\n\t} catch (e) {\r\n\t\treturn [null, e.message];\r\n\t}\r\n}\r\n\r\nexport async function getMenuItem(menuItemId) {\r\n\ttry {\r\n\t\tconst request = await callApiWithAuthorization(`/api/v0/menuitem/${menuItemId}`);\r\n\t\tconst response = await request.json();\r\n\t\treturn [response, null];\r\n\t} catch (e) {\r\n\t\treturn [null, e.message];\r\n\t}\r\n}\r\n\r\nexport async function getEntitiesShownInMenuItems(portalId) {\r\n\ttry {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/portal/${portalId}/entitiesInMenuItem`\r\n );\r\n const response = await request.json();\r\n return [response, null];\r\n } catch (e) {\r\n return [null, e.message];\r\n }\r\n}","import { TabStrip, TabStripTab } from '@progress/kendo-react-layout';\r\nimport React, { Component } from 'react'\r\nimport { SimpleConfigContext } from '../../../Context/Portal/SimpleConfigContext';\r\nimport { getNode, updateNode } from '../../Helpers/Nodes';\r\nimport General from './General';\r\nimport MenuItems from './MenuItems';\r\nimport { getCompressedJson } from '../../../API/Export/ExportApi';\r\nimport { publishApplication, getPortalJsonForRuntimeInlineEdit, publishPortalJsonToRuntime } from '../../Helpers/Launch';\r\nimport Scrollable from '../../Shared/Edit/Scrollable';\r\nimport { callApiWithAuthorization } from '../../../API/CallApi';\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\"\r\nimport { OverlayLoader } from '../../Shared/Loader/OverlayLoader';\r\nimport { getEntitiesShownInMenuItems } from '../../Helpers/Portal/Portal';\r\nimport { Menu, MenuItem } from \"@progress/kendo-react-layout\";\r\nimport { getPortal, reorderItems, updateItem, updatePortal, updatePortalTargetPage } from '../../../API/Portal/Portal';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { getProject, updateProject } from '../../../API/Project/project';\r\n\r\nclass SimpleConfig extends Component {\r\n static contextType = SimpleConfigContext;\r\n\r\n state = {\r\n error: \"\",\r\n publishError: \"\",\r\n };\r\n\r\n async componentDidMount() {\r\n try {\r\n const { portalId } = this.props;\r\n const [\r\n portal, portalTargetPage, menuItems\r\n ] = await Promise.all([\r\n getPortal(portalId),\r\n this.getPortalTargetPage(),\r\n this.getMenuItems()\r\n ])\r\n this.context.setPortal(portal);\r\n this.context.setPortalTarget(portalTargetPage)\r\n this.context.setEntities(menuItems);\r\n this.context.menuItemsDataLoaded();\r\n this.context.setLoading(false);\r\n if (this.props.mutators && this.props.mutators.setFormSaveFunction) {\r\n this.props.mutators.setFormSaveFunction(() => this.save);\r\n }\r\n // this.props.i18n.changeLanguage(\"ar\");\r\n } catch (error) {\r\n this.setState({ error: error.message })\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const hasChanges = !this.shouldSaveBeDisabled();\r\n if (\r\n this.props.mutators && this.props.mutators.setFormsWithChanges &&\r\n this.props.hasChanges !== hasChanges\r\n ) {\r\n debugger\r\n this.props.mutators.setFormsWithChanges((prevValue) => ({\r\n ...prevValue,\r\n menuItemForm: hasChanges\r\n }));\r\n }\r\n }\r\n\r\n async getPortalTargetPage() {\r\n const { t, portalId } = this.props;\r\n const request = await callApiWithAuthorization(\"/api/v0/portal/\" + portalId + \"/getPortalAndLandingPage\")\r\n const result = await request.json();\r\n if (result.message === \"Portal not found\") {\r\n throw new Error(result.message);\r\n }\r\n const {\r\n landingPageRelationId,\r\n landingPage: page\r\n } = result;\r\n return { page, landingPageRelationId };\r\n }\r\n\r\n async getMenuItems() {\r\n const { portalId } = this.props;\r\n const [entities, error] = await getEntitiesShownInMenuItems(portalId)\r\n if (error) {\r\n console.error(error);\r\n return;\r\n }\r\n for (const entity of entities) {\r\n if (entity.recentRecordAttributes.length === 0) {\r\n entity.recentRecordAttributes = [{}, {}];\r\n }\r\n }\r\n return entities;\r\n }\r\n\r\n render() {\r\n const { loading, selectedTabIndex, saving, publishing } = this.context;\r\n const { t } = this.props;\r\n\r\n if (loading) {\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 if (this.state.error) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {t(\"errors.something_went_wrong\")}

    \r\n

    {this.state.error}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n\r\n
    \r\n {(saving || publishing) && (\r\n \r\n )}\r\n {this.props.accessedFromRuntime && (\r\n <>\r\n\r\n
    \r\n
    \r\n \r\n \r\n {t(\"header.title\")}\r\n \r\n \r\n
    \r\n {this.state.publishError &&\r\n
    {this.state.publishError}
    \r\n }\r\n {this.context.saveAndPublishCompleted && (\r\n
    \r\n \r\n {this.context.publishMessage}\r\n \r\n
    \r\n )}\r\n
    \r\n {publishing && (\r\n \r\n )}\r\n \r\n \r\n {t(\"header.buttons.update_menu\")}\r\n
    \r\n
    \r\n\r\n \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {this.props.accessedFromRuntime ===\r\n false && (\r\n <>\r\n \r\n {t(\"secondary_header.title\")}\r\n \r\n
    \r\n \r\n {t(\"secondary_header.description\")}\r\n \r\n
    \r\n \r\n )}\r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {this.checkIfAllEntitiesAreChecked() === false && (\r\n
    \r\n \r\n {t(\"errors.one_item_must_be_selected\")}\r\n \r\n
    \r\n )}\r\n {\r\n saving && (\r\n this.props.accessedFromRuntime === false &&\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n e.item.data()}\r\n className=\"no-dropdown-in-menu three-dots\"\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 shouldSaveBeDisabled = () => {\r\n const { saving, publishing } = this.context;\r\n if (saving || publishing) {\r\n return true\r\n }\r\n const allEntitiesAreUnchecked = this.checkIfAllEntitiesAreChecked() === false;\r\n if (allEntitiesAreUnchecked) {\r\n return true;\r\n }\r\n const orientationChanged = this.checkIfNavigationBarOrientationChanged();\r\n if (orientationChanged) {\r\n return false;\r\n }\r\n const dashboardChanged = this.checkIfDashboardChanged();\r\n if (dashboardChanged) {\r\n return false\r\n }\r\n const reportingChanged = this.checkIfReportingChanged();\r\n if (reportingChanged) {\r\n return false\r\n }\r\n const isWorkflowEnabledChanged = this.checkIfIsWorkflowEnabledChanged();\r\n if (isWorkflowEnabledChanged) {\r\n return false\r\n }\r\n const anyEntityDetailChanged = this.checkIfAnyEntitiesDetailChanged();\r\n if (anyEntityDetailChanged) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n checkIfNavigationBarOrientationChanged = () => {\r\n return (\r\n this.context.defaultNavigationBarOrientation !==\r\n this.context.navigationBarOrientation\r\n );\r\n };\r\n\r\n checkIfDashboardChanged = () => {\r\n return (\r\n this.context.defaultEnableDashboard !==\r\n this.context.enableDashboard\r\n );\r\n };\r\n\r\n checkIfReportingChanged = () => {\r\n return (\r\n this.context.defaultEnableReporting !==\r\n this.context.enableReporting\r\n );\r\n };\r\n\r\n checkIfIsWorkflowEnabledChanged = () => {\r\n return (\r\n this.context.defaultIsWorkflowEnabled !==\r\n this.context.isWorkflowEnabled\r\n );\r\n };\r\n\r\n checkIfAnyEntitiesDetailChanged = () => {\r\n return this.context.entities.findIndex(this.ofChangedEntity) > -1;\r\n };\r\n\r\n checkIfAllEntitiesAreChecked = () => {\r\n if (this.context.entities.length === 0) {\r\n return true;\r\n }\r\n return this.context.entities.findIndex(entity => entity.show) > -1;\r\n }\r\n\r\n ofChangedEntity(entity) {\r\n return entity.isChanged;\r\n }\r\n\r\n shouldChangeLandingPage = () => {\r\n if (this.context.entities.length === 0) {\r\n return false;\r\n }\r\n const currentFirstItemTargetPage = this.context.entities[0].targetPage;\r\n if (\r\n currentFirstItemTargetPage === undefined ||\r\n currentFirstItemTargetPage === null\r\n ) {\r\n return true;\r\n }\r\n if (currentFirstItemTargetPage._id !== this.context.portalTarget.page._id) {\r\n return true;\r\n }\r\n const firstItemShow = this.context.entities[0].show;\r\n if (firstItemShow === false) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n revert = async () => {\r\n this.context.revertChanges()\r\n }\r\n\r\n save = async () => {\r\n this.context.showSaving();\r\n let relationId = this.context.portalTarget.landingPageRelationId;\r\n if (\r\n this.checkIfNavigationBarOrientationChanged() ||\r\n this.checkIfDashboardChanged() ||\r\n this.checkIfReportingChanged() ||\r\n this.checkIfIsWorkflowEnabledChanged()\r\n ) {\r\n const { portal, navigationBarOrientation, enableDashboard, enableReporting, isWorkflowEnabled } = this.context;\r\n await updatePortal(portal._id, {\r\n navigationBarOrientation: typeof navigationBarOrientation === \"string\" ? navigationBarOrientation : navigationBarOrientation.value,\r\n enableDashboard,\r\n enableReporting,\r\n isWorkflowEnabled\r\n });\r\n }\r\n if (this.checkIfAnyEntitiesDetailChanged()) {\r\n await this.saveEntitiesDetails();\r\n }\r\n if (this.shouldChangeLandingPage()) {\r\n const firstShownEntity = this.context.entities.find(entity => entity.show);\r\n if (firstShownEntity && firstShownEntity.targetPage && firstShownEntity.targetPage._id) {\r\n await updatePortalTargetPage(this.props.portalId, firstShownEntity.targetPage._id);\r\n } else {\r\n await updatePortalTargetPage(this.props.portalId, \"\");\r\n }\r\n }\r\n const newState = {\r\n defaultNavigationBarOrientation: this.context.navigationBarOrientation,\r\n defaultEnableDashboard: this.context.enableDashboard,\r\n defaultEnableReporting: this.context.enableReporting,\r\n entities: this.context.entities.map((entity, index) => ({\r\n ...entity,\r\n defaultLabel: entity.label,\r\n defaultShow: entity.show,\r\n defaultIndex: index,\r\n defaultRecentRecordAttributes: [\r\n ...entity.recentRecordAttributes,\r\n ],\r\n currentIndex: index,\r\n isChanged: false,\r\n })),\r\n portalTarget: {\r\n page: { id: \"\" },\r\n landingPageRelationId: relationId\r\n },\r\n saving: false\r\n };\r\n if (this.context.entities.length > 0 && this.context.entities[0].targetPage) {\r\n newState.portalTarget.page.id = this.context.entities[0].targetPage.id;\r\n }\r\n this.context.updateDefaultValuesToCurrentValue(newState);\r\n };\r\n\r\n saveEntitiesDetails = async () => {\r\n const { entities } = this.context;\r\n const newItemsData = [];\r\n for (const entity of entities) {\r\n const { allItemProperties } = entity;\r\n if (entity.isChanged) {\r\n // await updateItem(this.props.portalId, entity.menuItemId, {\r\n // label: entity.label,\r\n // show: entity.show,\r\n // order: entity.order,\r\n // });\r\n const newItemProperties = {\r\n ...allItemProperties,\r\n label: entity.label.trim(),\r\n show: entity.show,\r\n order: entity.order,\r\n languages: entity.languages,\r\n }\r\n if (newItemProperties.children) {\r\n const recentRecord = newItemProperties.children.find(item => item.id === entity.recentRecordId);\r\n recentRecord.attributes = entity.recentRecordAttributes ? (\r\n entity.recentRecordAttributes.filter(attr => !!attr).map(({ _id }) => _id)\r\n ) : [];\r\n }\r\n newItemsData.push(newItemProperties);\r\n } else {\r\n newItemsData.push(allItemProperties);\r\n }\r\n };\r\n reorderItems(this.props.portalId, { items: newItemsData });\r\n };\r\n\r\n publishApp = async () => {\r\n const saveDisabled = this.shouldSaveBeDisabled();\r\n if (saveDisabled === false) {\r\n await this.save();\r\n }\r\n this.context.showPublishing();\r\n const project = await getProject(this.props.projectId);\r\n const instances = project.instances.filter(instance => instance.Published === true);\r\n const instance = instances[0];\r\n let publishResponse;\r\n if (project.hasSchemaChanges && project.hasSchemaChanges === true) {\r\n publishResponse = await this.doFullGeneration(instance);\r\n } else {\r\n publishResponse = await this.doIncrementalPublish(instance);\r\n }\r\n const { status, message } = publishResponse;\r\n this.context.showAfterPublishMessage(status, message);\r\n if (status === \"Success\") {\r\n // await updateNode(\"Project\", this.props.projectId, { \"hasSchemaChanges\": false });\r\n await updateProject(this.props.projectId, {\r\n isDbChanged: false, hasSchemaChanges: false\r\n });\r\n const runtimeURL = process.env.REACT_APP_RUNTIME_URL;\r\n window.parent.postMessage(\r\n JSON.stringify({\r\n designerStatus: \"Success\",\r\n }),\r\n runtimeURL\r\n );\r\n }\r\n };\r\n\r\n doIncrementalPublish = async (instance) => {\r\n try {\r\n const portalJson = await getPortalJsonForRuntimeInlineEdit(\r\n this.props.organisationId,\r\n this.props.projectId,\r\n this.props.portalId,\r\n this.props.instanceId,\r\n );\r\n const runtimeResponse = await publishPortalJsonToRuntime(\r\n instance.appId || instance._id, this.props.portalId, portalJson.Portals[0]\r\n );\r\n return runtimeResponse;\r\n } catch (e) {\r\n return { message: e.message };\r\n }\r\n }\r\n\r\n doFullGeneration = async (instance) => {\r\n try {\r\n const {\r\n organisationId,\r\n projectId,\r\n publisherId,\r\n instanceId,\r\n msalContext,\r\n } = this.props;\r\n const compressedJson = await getCompressedJson(\r\n projectId,\r\n organisationId,\r\n publisherId,\r\n instanceId,\r\n false,\r\n false\r\n );\r\n const publishResponse = await publishApplication(\r\n msalContext,\r\n instance,\r\n compressedJson,\r\n false\r\n );\r\n // updateNode(\"Project\", projectId, {\r\n // hasSchemaChanges: false,\r\n // isDbChanged: false\r\n // });\r\n return publishResponse;\r\n } catch (e) {\r\n return { message: e.message };\r\n }\r\n }\r\n}\r\n\r\nexport default withTranslation([\r\n \"portal_simple_config/simple_config\",\r\n \"portal_simple_config/general\",\r\n \"portal_simple_config/menu_items\"\r\n])(SimpleConfig);","import React, { useEffect, useContext, useState } from 'react'\r\nimport { MsalContext } from '@azure/msal-react'\r\nimport { useParams } from 'react-router-dom';\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport { SimpleConfigProvider } from '../../Context/Portal/SimpleConfigContext';\r\nimport { getNode } from '../Helpers/Nodes';\r\nimport SimpleConfig from './SimpleConfig/SimpleConfig';\r\nimport { getLoggedInUserUsingAccessToken } from '../../API/User/User';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getProject } from '../../API/Project/project';\r\n\r\nexport default function RuntimePortalConfigPage() {\r\n\r\n const params = useParams();\r\n \r\n const { organisationId, projectId, instanceId, portalId } = params;\r\n\r\n const context = useContext(MsalContext);\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [hasAccess, setHasAccess] = useState(false);\r\n const [accessError, setAccessError] = useState(\"\");\r\n const [user, setUser] = useState({});\r\n const [organization, setOrganization] = useState({});\r\n const [project, setProject] = useState({});\r\n\r\n const { i18n, ready: tReady } = useTranslation();\r\n\r\n useEffect(() => {\r\n getUserUsingAccessToken();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (user && user.oid) {\r\n validateAccessToProject()\r\n }\r\n }, [user])\r\n\r\n useEffect(() => {\r\n if (tReady) {\r\n // i18n.changeLanguage(organization.platformLanguage || \"en\");\r\n }\r\n }, [tReady, organization])\r\n\r\n async function getUserUsingAccessToken() {\r\n const user = await getLoggedInUserUsingAccessToken();\r\n setUser(user);\r\n }\r\n\r\n const validateAccessToProject = async () => {\r\n setLoading(true)\r\n const [hasAccessToOrganisation, hasAccessToProject] = await Promise.all([\r\n checkAccessToOrganisation(),\r\n checkAccessToProject()\r\n ])\r\n if (hasAccessToOrganisation === false) {\r\n setHasAccess(false);\r\n setAccessError(\"Sorry. You have not been granted access to this Organization. Please contact the Admin(s).\");\r\n setLoading(false);\r\n return;\r\n }\r\n if (hasAccessToProject.access === false) {\r\n setHasAccess(false);\r\n setAccessError(hasAccessToProject.error);\r\n setLoading(false);\r\n return;\r\n }\r\n setHasAccess(true)\r\n setAccessError(\"\")\r\n setLoading(false);\r\n }\r\n\r\n const checkAccessToOrganisation = async () => { \r\n const roleOfUserInOrganisationsRequest = await callApiWithAuthorization(\"/api/v0/getOrganizationUserRole/\" + user.emails[0]);\r\n const roleOfUserInOrganisations = await roleOfUserInOrganisationsRequest.json();\r\n const doesUserHaveRoleInCurrentOrganisation = roleOfUserInOrganisations.findIndex(organisation => organisation._id === organisationId) > -1\r\n return doesUserHaveRoleInCurrentOrganisation;\r\n }\r\n\r\n const checkAccessToProject = async () => {\r\n const project = await getProject(projectId);\r\n if (project.length === 0) {\r\n return {\r\n access: false,\r\n error: \"Sorry, the application you are trying to access is deleted.\"\r\n };\r\n }\r\n if (project.isActive === false) {\r\n return {\r\n access: false,\r\n error: \"Sorry, the application you are trying to access is not active.\"\r\n };\r\n }\r\n setProject(project);\r\n return {\r\n access: true,\r\n error: \"\"\r\n }\r\n }\r\n\r\n if (loading === true) {\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 if (hasAccess === false) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {accessError}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import * as React from 'react';\n/**\n * @hidden\n */\nvar defaultContext = {\n animation: true,\n expanded: false,\n mode: 'overlay',\n position: 'start',\n mini: false,\n dir: 'ltr',\n width: 240,\n miniWidth: 50\n};\n/** @hidden */\nexport var DrawerContext = React.createContext(defaultContext);\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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, getTabIndex } from '@progress/kendo-react-common';\nimport { DrawerContext } from './context/DrawerContext';\n/**\n * Represents the [KendoReact Drawer component]({% slug overview_drawer %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * const [stateVisible, setStateVisible] = React.useState(true);\n * const handleClick = () => { setStateVisible(prevState => !prevState); };\n *\n * return (\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * );\n * };\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var DrawerItem = React.forwardRef(function (props, target) {\n var className = props.className, style = props.style, text = props.text, icon = props.icon, separator = props.separator, disabled = props.disabled, selected = props.selected, onSelect = props.onSelect, index = props.index, tabIndex = props.tabIndex, children = props.children, others = __rest(props, [\"className\", \"style\", \"text\", \"icon\", \"separator\", \"disabled\", \"selected\", \"onSelect\", \"index\", \"tabIndex\", \"children\"]);\n var _a = React.useContext(DrawerContext), expanded = _a.expanded, mini = _a.mini, item = _a.item;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement,\n props: props\n }); });\n var itemClassNames = classNames('k-drawer-item', {\n 'k-selected': selected,\n 'k-disabled': disabled\n }, className);\n var handleClick = React.useCallback(function (event) {\n if (onSelect && !disabled) {\n var handle = {\n element: elementRef.current,\n focus: focusElement,\n props: props\n };\n onSelect(handle, index, event);\n }\n }, [onSelect, index, disabled]);\n var drawerItemContent = (React.createElement(React.Fragment, null,\n icon && React.createElement(\"span\", { className: 'k-icon ' + icon }),\n !expanded && mini ? null : React.createElement(\"span\", { className: 'k-item-text' }, text)));\n return (separator\n ? React.createElement(\"li\", { className: 'k-drawer-item k-drawer-separator', role: \"presentation\" })\n : (React.createElement(\"li\", __assign({ ref: elementRef, className: itemClassNames, style: style, role: \"option\", \"aria-selected\": selected, \"aria-disabled\": disabled, onClick: handleClick, tabIndex: getTabIndex(tabIndex, disabled) }, others), !item ? drawerItemContent : children)));\n});\nDrawerItem.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n text: PropTypes.string,\n icon: PropTypes.string,\n separator: PropTypes.bool,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n targetItem: PropTypes.any\n};\nDrawerItem.displayName = 'KendoDrawerItem';\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 * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DrawerContext } from './context/DrawerContext';\nimport { DrawerItem } from './DrawerItem';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DEFAULT_EXPANDED_WIDTH = 240;\n/**\n * @hidden\n */\nvar DEFAULT_MINI_WIDTH = 50;\n/**\n * @hidden\n */\nvar DEFAULT_ANIMATION = { type: 'slide', duration: 200 };\n/**\n * @hidden\n */\nvar NO_ANIMATION = { type: 'slide', duration: 0 };\n/**\n * Represents the [KendoReact Drawer component]({% slug overview_drawer %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * const [expanded, setExpanded] = React.useState(true);\n * const handleClick = () => setExpanded(prevState => !prevState);\n *\n * return (\n * \n * \n *
      \n *
    • \n * Home\n *
    • \n *
    • \n * Products\n *
    • \n *
    • \n * About\n *
    • \n *
    \n *
    \n * \n * \n * \n *
    \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var DrawerNavigation = React.forwardRef(function (props, target) {\n var children = props.children, className = props.className, style = props.style;\n var _a = React.useContext(DrawerContext), animation = _a.animation, expanded = _a.expanded, mode = _a.mode, position = _a.position, onOverlayClick = _a.onOverlayClick, mini = _a.mini, dir = _a.dir, width = _a.width, miniWidth = _a.miniWidth, items = _a.items, item = _a.item, onSelect = _a.onSelect;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var customSettings = typeof animation !== 'boolean' ? animation : animation === false ? NO_ANIMATION : DEFAULT_ANIMATION;\n var navWidth = width ? width : DEFAULT_EXPANDED_WIDTH;\n var navMiniWidth = miniWidth ? miniWidth : DEFAULT_MINI_WIDTH;\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); });\n var navigationClassNames = React.useMemo(function () { return 'k-widget k-drawer ' + classNames({\n 'k-drawer-start': position === 'start',\n 'k-drawer-end': position === 'end'\n }, className); }, [position]);\n var expandPush = {\n opacity: 1,\n flexBasis: navWidth,\n WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n };\n var expandOverlay = {\n opacity: 1,\n transform: 'translateX(0px)',\n WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n };\n var collapsePush = {\n opacity: !mini ? 0 : 1,\n flexBasis: !mini ? 0 : navMiniWidth,\n WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n };\n var collapseOverlay = {\n opacity: 0,\n transform: 'translateX(-100%)',\n WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n };\n var collapseOverlayRtl = {\n opacity: 0,\n transform: 'translateX(100%)',\n WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n };\n var collapseOverlayMini = {\n transform: 'translateX(0%)',\n WebkitTransitionDuration: (customSettings && customSettings.duration) + 'ms',\n transitionDuration: (customSettings && customSettings.duration) + 'ms'\n };\n var drawerAnimation = expanded ?\n mode === 'push' ? expandPush : expandOverlay :\n mode === 'push' ? collapsePush :\n (dir === 'ltr' && position === 'start') || (dir === 'rtl' && position === 'end') ?\n mini ? collapseOverlayMini : collapseOverlay :\n mini ? collapseOverlayMini : collapseOverlayRtl;\n var drawerItems = (items && (React.createElement(\"ul\", { className: 'k-drawer-items', role: \"listbox\", \"aria-label\": \"drawer-list\", \"aria-expanded\": expanded }, items\n .map(function (element, index) {\n var drawerItemProps = __assign(__assign({ index: index }, element), { onSelect: onSelect });\n var ItemComp = item || DrawerItem;\n return (React.createElement(ItemComp, __assign({ key: index }, drawerItemProps)));\n }))));\n var drawerNavigation = (React.createElement(\"div\", { style: customSettings ? __assign(__assign({}, drawerAnimation), style) : style, className: navigationClassNames, ref: elementRef },\n React.createElement(\"div\", { className: 'k-drawer-wrapper', style: !expanded && mini && mode === 'overlay' ? { width: navMiniWidth } : { width: navWidth } }, drawerItems || children)));\n return (mode === 'overlay' ?\n (React.createElement(React.Fragment, null,\n expanded && React.createElement(\"div\", { className: \"k-overlay\", onClick: onOverlayClick }),\n drawerNavigation))\n : drawerNavigation);\n});\nDrawerNavigation.propTypes = {\n children: PropTypes.any,\n className: PropTypes.string,\n style: PropTypes.object,\n item: PropTypes.any,\n tabIndex: PropTypes.number\n};\nDrawerNavigation.displayName = 'KendoDrawerNavigation';\n","var _this = this;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DrawerContext } from './context/DrawerContext';\nimport { DrawerNavigation } from './DrawerNavigation';\nimport { classNames, useDir } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact Drawer component]({% slug overview_drawer %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * const items = [\n * { text: 'Inbox', icon: 'k-i-inbox', selected: true },\n * { separator: true },\n * { text: 'Notifications', icon: 'k-i-bell', disabled: true },\n * { text: 'Calendar', icon: 'k-i-calendar' },\n * { separator: true },\n * { text: 'Attachments', icon: 'k-i-hyperlink-email' },\n * { text: 'Favourites', icon: 'k-i-star-outline' }\n * ];\n *\n * const [expanded, setExpanded] = React.useState(true);\n * const handleClick = () => setExpanded(prevState => !prevState);\n *\n * return (\n * \n * \n * \n * \n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Drawer = React.forwardRef(function (props, target) {\n validatePackage(packageMetadata);\n var expanded = props.expanded, mode = props.mode, position = props.position, className = props.className, children = props.children, style = props.style, animation = props.animation, mini = props.mini, width = props.width, miniWidth = props.miniWidth, items = props.items, item = props.item, tabIndex = props.tabIndex, onOverlayClick = props.onOverlayClick, onSelect = props.onSelect;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); });\n var handleSelect = React.useCallback(function (itemTarget, itemIndex, event) {\n if (items && onSelect) {\n var ev = {\n itemTarget: itemTarget,\n itemIndex: itemIndex,\n syntheticEvent: event,\n nativeEvent: event && event.nativeEvent,\n target: _this\n };\n onSelect.call(undefined, ev);\n }\n }, [items, onSelect]);\n var dir = useDir(elementRef, props.dir);\n var drawerClassNames = classNames({\n 'k-drawer-container': true,\n 'k-drawer-expanded': expanded,\n 'k-drawer-overlay': mode === 'overlay',\n 'k-drawer-push': mode === 'push',\n 'k-drawer-mini': mini\n }, className);\n return (React.createElement(DrawerContext.Provider, { value: {\n animation: animation,\n expanded: expanded,\n mode: mode,\n position: position,\n mini: mini,\n dir: dir,\n items: items,\n item: item,\n width: width,\n miniWidth: miniWidth,\n onOverlayClick: onOverlayClick,\n onSelect: handleSelect\n } },\n React.createElement(\"div\", { className: drawerClassNames, ref: elementRef, dir: dir, style: style, tabIndex: tabIndex },\n items && React.createElement(DrawerNavigation, null),\n children)));\n});\nDrawer.propTypes = {\n animation: PropTypes.any,\n expanded: PropTypes.bool,\n children: PropTypes.any,\n className: PropTypes.string,\n dir: PropTypes.string,\n mode: PropTypes.string,\n position: PropTypes.string,\n mini: PropTypes.bool,\n style: PropTypes.object,\n tabIndex: PropTypes.number,\n width: PropTypes.number,\n miniWidth: PropTypes.number,\n selected: PropTypes.number,\n onSelect: PropTypes.func,\n onOverlayClick: PropTypes.func\n};\nvar defaultProps = {\n animation: true,\n expanded: false,\n mode: 'overlay',\n position: 'start',\n mini: false,\n dir: 'ltr',\n width: 240,\n miniWidth: 50\n};\nDrawer.defaultProps = defaultProps;\nDrawer.displayName = 'KendoDrawer';\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact Drawer component]({% slug overview_drawer %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * const items = [\n * { text: 'Inbox', icon: 'k-i-inbox', selected: true },\n * { separator: true },\n * { text: 'Notifications', icon: 'k-i-bell', disabled: true },\n * { text: 'Calendar', icon: 'k-i-calendar' },\n * { separator: true },\n * { text: 'Attachments', icon: 'k-i-hyperlink-email' },\n * { text: 'Favourites', icon: 'k-i-star-outline' }\n * ];\n *\n * const [expanded, setExpanded] = React.useState(true);\n * const handleClick = () => setExpanded(prevState => !prevState);\n *\n * return (\n * \n * \n * \n * \n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var DrawerContent = React.forwardRef(function (props, target) {\n var children = props.children, className = props.className, style = props.style;\n var elementRef = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current\n }); });\n var contentClassNames = classNames({\n 'k-drawer-content': true\n }, className);\n return (React.createElement(\"div\", { className: contentClassNames, style: style, ref: elementRef }, children));\n});\nDrawerContent.propTypes = {\n children: PropTypes.any,\n className: PropTypes.string,\n style: PropTypes.object\n};\nDrawerContent.displayName = 'KendoDrawerContent';\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Drawer, DrawerContent, DrawerItem } from \"@progress/kendo-react-layout\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\n\r\nconst CustomItem = (props) => {\r\n\tfunction navigate(e) {\r\n\t\te.preventDefault();\r\n\t\tconst { onSelect, index, ...itemProps } = props;\r\n\t\tonSelect(itemProps, index);\r\n\t}\r\n\r\n\tconst className = \"w-100 \" + (props.position === \"Bottom\" && \" bottom-0 position-absolute\");\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t { }}>\r\n\t\t\t\t{!props.showText &&  }\r\n\t\t\t\t\r\n\t\t\t\t{props.showText && {props.text}}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nclass SubscriptionDrawer extends React.Component {\r\n\r\n\tstatic contextType = MsalContext\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\texpanded: true,\r\n\t\t\titems: [\r\n\t\t\t\t{ text: \"Subscription Type\", icon: \"fas fa-money-check-dollar\", selected: true, route: `/_SubscriptionManagement`, className: \"k-drawer-item\" },\r\n\t\t\t\t// { text: \"Search Organization\", icon: \"fas fa-search\", route: `/_SearchOrganization` }\r\n\t\t\t],\r\n\t\t\tselectedId: 0,\r\n\t\t}\r\n\t}\r\n\r\n\thandleClick = (e) => {\r\n\t\tlet items = this.state.items\r\n\t\tif (e.itemTarget.text === \"Close\") {\r\n\t\t\titems[5].show = true;\r\n\t\t\titems[4].show = false;\r\n\t\t}\r\n\t\tif (e.itemTarget.text === \"Open\") {\r\n\t\t\titems[5].show = false;\r\n\t\t\titems[4].show = true;\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\titems: items,\r\n\t\t\texpanded: !this.state.drawerExpanded,\r\n\t\t});\r\n\t};\r\n\r\n\tonSelect = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tselectedId: e.itemIndex || 0,\r\n\t\t\texpanded: this.state.drawerExpanded\r\n\t\t});\r\n\t\tthis.props.history.push(e.itemTarget ? e.itemTarget.route : e.route);\r\n\t};\r\n\r\n\tsetSelectedItem = (pathName) => {\r\n\t\tlet currentPath = this.state.items.find((item) => item.text === pathName);\r\n\t\tif (currentPath && currentPath.text) {\r\n\t\t\treturn currentPath.text;\r\n\t\t} else {\r\n\t\t\tthis.onSelect(this.state.items[0])\r\n\t\t}\r\n\t};\r\n\r\n\tdrawerProps = {\r\n\t\tposition: \"start\",\r\n\t\tmode: \"push\",\r\n\t\tmini: true,\r\n\t};\r\n\r\n\thandleResize = () => {\r\n\t\tif (window.innerWidth < 1100) {\r\n\t\t\tif (this.state.drawerExpanded) this.setState({ drawerExpanded: false });\r\n\t\t} else {\r\n\t\t\tif (!this.state.drawerExpanded) this.setState({ drawerExpanded: true });\r\n\t\t}\r\n\t};\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.handleResize();\r\n\t\twindow.addEventListener(\"resize\", this.handleResize);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\twindow.removeEventListener(\"resize\", this.handleResize);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst data = this.state.items.map((item) => {\r\n\t\t\titem.showText = this.state.drawerExpanded;\r\n\t\t\treturn item;\r\n\t\t});\r\n\r\n\t\tlet selected = this.setSelectedItem(this.props.selected);\r\n\t\treturn (\r\n\t\t\t ({\r\n\t\t\t\t\t...item,\r\n\t\t\t\t\tselected: item.text === selected,\r\n\t\t\t\t\tshowText: this.state.drawerExpanded,\r\n\t\t\t\t}))}\r\n\t\t\t\t{...this.drawerProps}\r\n\t\t\t\titem={CustomItem}\r\n\t\t\t\tonSelect={this.onSelect}\r\n\t\t\t>\r\n\t\t\t\t{this.props.children}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default SubscriptionDrawer;\r\n","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","import * as React from 'react';\nconst DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","const _excluded = [\"children\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { useContext, useRef } from 'react';\nimport * as React from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper from './usePopper';\nimport useClickOutside from './useClickOutside';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst noop = () => {};\n/**\n * @memberOf Dropdown\n * @param {object} options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string} options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object} options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\n\n\nexport function useDropdownMenu(options = {}) {\n const context = useContext(DropdownContext);\n const [arrowElement, attachArrowRef] = useCallbackRef();\n const hasShownRef = useRef(false);\n const {\n flip,\n offset,\n rootCloseEvent,\n fixed = false,\n placement: placementOverride,\n popperConfig = {},\n enableEventListeners = true,\n usePopper: shouldUsePopper = !!context\n } = options;\n const show = (context == null ? void 0 : context.show) == null ? !!options.show : context.show;\n\n if (show && !hasShownRef.current) {\n hasShownRef.current = true;\n }\n\n const handleClose = e => {\n context == null ? void 0 : context.toggle(false, e);\n };\n\n const {\n placement,\n setMenu,\n menuElement,\n toggleElement\n } = context || {};\n const popper = usePopper(toggleElement, menuElement, mergeOptionsWithPopperConfig({\n placement: placementOverride || placement || 'bottom-start',\n enabled: shouldUsePopper,\n enableEvents: enableEventListeners == null ? show : enableEventListeners,\n offset,\n flip,\n fixed,\n arrowElement,\n popperConfig\n }));\n const menuProps = Object.assign({\n ref: setMenu || noop,\n 'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n }, popper.attributes.popper, {\n style: popper.styles.popper\n });\n const metadata = {\n show,\n placement,\n hasShown: hasShownRef.current,\n toggle: context == null ? void 0 : context.toggle,\n popper: shouldUsePopper ? popper : null,\n arrowProps: shouldUsePopper ? Object.assign({\n ref: attachArrowRef\n }, popper.attributes.arrow, {\n style: popper.styles.arrow\n }) : {}\n };\n useClickOutside(menuElement, handleClose, {\n clickTrigger: rootCloseEvent,\n disabled: !show\n });\n return [menuProps, metadata];\n}\nconst defaultProps = {\n usePopper: true\n};\n\n/**\n * Also exported as `` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref) {\n let {\n children\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [props, meta] = useDropdownMenu(options);\n return /*#__PURE__*/_jsx(_Fragment, {\n children: children(props, meta)\n });\n}\n\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\n/** @component */\n\nexport default DropdownMenu;","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\nimport React, {ReactNode, useContext, useLayoutEffect, useMemo, useState} from 'react';\n\n// To support SSR, the auto incrementing id counter is stored in a context. This allows\n// it to be reset on every request to ensure the client and server are consistent.\n// There is also a prefix string that is used to support async loading components\n// Each async boundary must be wrapped in an SSR provider, which appends to the prefix\n// and resets the current id counter. This ensures that async loaded components have\n// consistent ids regardless of the loading order.\ninterface SSRContextValue {\n prefix: string,\n current: number\n}\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst defaultContext: SSRContextValue = {\n prefix: String(Math.round(Math.random() * 10000000000)),\n current: 0\n};\n\nconst SSRContext = React.createContext(defaultContext);\n\nexport interface SSRProviderProps {\n /** Your application here. */\n children: ReactNode\n}\n\n/**\n * When using SSR with React Aria, applications must be wrapped in an SSRProvider.\n * This ensures that auto generated ids are consistent between the client and server.\n */\nexport function SSRProvider(props: SSRProviderProps): JSX.Element {\n let cur = useContext(SSRContext);\n let value: SSRContextValue = useMemo(() => ({\n // If this is the first SSRProvider, start with an empty string prefix, otherwise\n // append and increment the counter.\n prefix: cur === defaultContext ? '' : `${cur.prefix}-${++cur.current}`,\n current: 0\n }), [cur]);\n\n return (\n \n {props.children}\n \n );\n}\n\nlet canUseDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\n/** @private */\nexport function useSSRSafeId(defaultId?: string): string {\n let ctx = useContext(SSRContext);\n\n // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n // provide a warning to hint to the developer to add one.\n if (ctx === defaultContext && !canUseDOM) {\n console.warn('When server rendering, you must wrap your application in an to ensure consistent ids are generated between the client and server.');\n }\n\n return useMemo(() => defaultId || `react-aria${ctx.prefix}-${++ctx.current}`, [defaultId]);\n}\n\n/**\n * Returns whether the component is currently being server side rendered or\n * hydrated on the client. Can be used to delay browser-specific rendering\n * until after hydration.\n */\nexport function useIsSSR(): boolean {\n let cur = useContext(SSRContext);\n let isInSSRContext = cur !== defaultContext;\n let [isSSR, setIsSSR] = useState(isInSSRContext);\n\n // If on the client, and the component was initially server rendered,\n // then schedule a layout effect to update the component after hydration.\n if (typeof window !== 'undefined' && isInSSRContext) {\n // This if statement technically breaks the rules of hooks, but is safe\n // because the condition never changes after mounting.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n setIsSSR(false);\n }, []);\n }\n\n return isSSR;\n}\n","import { useContext, useCallback } from 'react';\nimport * as React from 'react';\nimport { useSSRSafeId } from './ssr';\nimport DropdownContext from './DropdownContext';\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const isRoleMenu = el => {\n var _el$getAttribute;\n\n return ((_el$getAttribute = el.getAttribute('role')) == null ? void 0 : _el$getAttribute.toLowerCase()) === 'menu';\n};\n\nconst noop = () => {};\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\n\n\nexport function useDropdownToggle() {\n const id = useSSRSafeId();\n const {\n show = false,\n toggle = noop,\n setToggle,\n menuElement\n } = useContext(DropdownContext) || {};\n const handleClick = useCallback(e => {\n toggle(!show, e);\n }, [show, toggle]);\n const props = {\n id,\n ref: setToggle || noop,\n onClick: handleClick,\n 'aria-expanded': !!show\n }; // This is maybe better down in an effect, but\n // the component is going to update anyway when the menu element\n // is set so might return new props.\n\n if (menuElement && isRoleMenu(menuElement)) {\n props['aria-haspopup'] = true;\n }\n\n return [props, {\n show,\n toggle\n }];\n}\n\n/**\n * Also exported as `` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle({\n children\n}) {\n const [props, meta] = useDropdownToggle();\n return /*#__PURE__*/_jsx(_Fragment, {\n children: children(props, meta)\n });\n}\n\nDropdownToggle.displayName = 'DropdownToggle';\n/** @component */\n\nexport default DropdownToggle;","import * as React from 'react';\nconst SelectableContext = /*#__PURE__*/React.createContext(null);\nexport const makeEventKey = (eventKey, href = null) => {\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import * as React from 'react';\nconst NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","const _excluded = [\"as\", \"disabled\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\nexport function useButtonProps({\n tagName,\n disabled,\n href,\n target,\n rel,\n role,\n onClick,\n tabIndex = 0,\n type\n}) {\n if (!tagName) {\n if (href != null || target != null || rel != null) {\n tagName = 'a';\n } else {\n tagName = 'button';\n }\n }\n\n const meta = {\n tagName\n };\n\n if (tagName === 'button') {\n return [{\n type: type || 'button',\n disabled\n }, meta];\n }\n\n const handleClick = event => {\n if (disabled || tagName === 'a' && isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n onClick == null ? void 0 : onClick(event);\n };\n\n const handleKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (tagName === 'a') {\n // Ensure there's a href so Enter can trigger anchor button.\n href || (href = '#');\n\n if (disabled) {\n href = undefined;\n }\n }\n\n return [{\n role: role != null ? role : 'button',\n // explicitly undefined so that it overrides the props disabled in a spread\n // e.g. \n disabled: undefined,\n tabIndex: disabled ? undefined : tabIndex,\n href,\n target: tagName === 'a' ? target : undefined,\n 'aria-disabled': !disabled ? undefined : disabled,\n rel: tagName === 'a' ? rel : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown\n }, meta];\n}\nconst Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: asProp,\n disabled\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [buttonProps, {\n tagName: Component\n }] = useButtonProps(Object.assign({\n tagName: asProp,\n disabled\n }, props));\n return /*#__PURE__*/_jsx(Component, Object.assign({}, props, buttonProps, {\n ref: ref\n }));\n});\nButton.displayName = 'Button';\nexport default Button;","export const ATTRIBUTE_PREFIX = `data-rr-ui-`;\nexport const PROPERTY_PREFIX = `rrUi`;\nexport function dataAttr(property) {\n return `${ATTRIBUTE_PREFIX}${property}`;\n}\nexport function dataProp(property) {\n return `${PROPERTY_PREFIX}${property}`;\n}","const _excluded = [\"eventKey\", \"disabled\", \"onClick\", \"active\", \"as\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NavContext from './NavContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * Create a dropdown item. Returns a set of props for the dropdown item component\n * including an `onClick` handler that prevents selection when the item is disabled\n */\nexport function useDropdownItem({\n key,\n href,\n active,\n disabled,\n onClick\n}) {\n const onSelectCtx = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const {\n activeKey\n } = navContext || {};\n const eventKey = makeEventKey(key, href);\n const isActive = active == null && key != null ? makeEventKey(activeKey) === eventKey : active;\n const handleClick = useEventCallback(event => {\n if (disabled) return;\n onClick == null ? void 0 : onClick(event);\n\n if (onSelectCtx && !event.isPropagationStopped()) {\n onSelectCtx(eventKey, event);\n }\n });\n return [{\n onClick: handleClick,\n 'aria-disabled': disabled || undefined,\n 'aria-selected': isActive,\n [dataAttr('dropdown-item')]: ''\n }, {\n isActive\n }];\n}\nconst DropdownItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n eventKey,\n disabled,\n onClick,\n active,\n as: Component = Button\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [dropdownItemProps] = useDropdownItem({\n key: eventKey,\n href: props.href,\n disabled,\n onClick,\n active\n });\n return /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n ref: ref\n }, dropdownItemProps));\n});\nDropdownItem.displayName = 'DropdownItem';\nexport default DropdownItem;","import qsa from 'dom-helpers/querySelectorAll';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport { useCallback, useRef, useEffect, useMemo, useContext } from 'react';\nimport * as React from 'react';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useEventListener from '@restart/hooks/useEventListener';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle, { isRoleMenu } from './DropdownToggle';\nimport DropdownItem from './DropdownItem';\nimport SelectableContext from './SelectableContext';\nimport { dataAttr } from './DataKey';\nimport useWindow from './useWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction useRefWithUpdate() {\n const forceUpdate = useForceUpdate();\n const ref = useRef(null);\n const attachRef = useCallback(element => {\n ref.current = element; // ensure that a menu set triggers an update for consumers\n\n forceUpdate();\n }, [forceUpdate]);\n return [ref, attachRef];\n}\n/**\n * @displayName Dropdown\n * @public\n */\n\n\nfunction Dropdown({\n defaultShow,\n show: rawShow,\n onSelect,\n onToggle: rawOnToggle,\n itemSelector = `* [${dataAttr('dropdown-item')}]`,\n focusFirstItemOnShow,\n placement = 'bottom-start',\n children\n}) {\n const window = useWindow();\n const [show, onToggle] = useUncontrolledProp(rawShow, defaultShow, rawOnToggle); // We use normal refs instead of useCallbackRef in order to populate the\n // the value as quickly as possible, otherwise the effect to focus the element\n // may run before the state value is set\n\n const [menuRef, setMenu] = useRefWithUpdate();\n const menuElement = menuRef.current;\n const [toggleRef, setToggle] = useRefWithUpdate();\n const toggleElement = toggleRef.current;\n const lastShow = usePrevious(show);\n const lastSourceEvent = useRef(null);\n const focusInDropdown = useRef(false);\n const onSelectCtx = useContext(SelectableContext);\n const toggle = useCallback((nextShow, event, source = event == null ? void 0 : event.type) => {\n onToggle(nextShow, {\n originalEvent: event,\n source\n });\n }, [onToggle]);\n const handleSelect = useEventCallback((key, event) => {\n onSelect == null ? void 0 : onSelect(key, event);\n toggle(false, event, 'select');\n\n if (!event.isPropagationStopped()) {\n onSelectCtx == null ? void 0 : onSelectCtx(key, event);\n }\n });\n const context = useMemo(() => ({\n toggle,\n placement,\n show,\n menuElement,\n toggleElement,\n setMenu,\n setToggle\n }), [toggle, placement, show, menuElement, toggleElement, setMenu, setToggle]);\n\n if (menuElement && lastShow && !show) {\n focusInDropdown.current = menuElement.contains(menuElement.ownerDocument.activeElement);\n }\n\n const focusToggle = useEventCallback(() => {\n if (toggleElement && toggleElement.focus) {\n toggleElement.focus();\n }\n });\n const maybeFocusFirst = useEventCallback(() => {\n const type = lastSourceEvent.current;\n let focusType = focusFirstItemOnShow;\n\n if (focusType == null) {\n focusType = menuRef.current && isRoleMenu(menuRef.current) ? 'keyboard' : false;\n }\n\n if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n return;\n }\n\n const first = qsa(menuRef.current, itemSelector)[0];\n if (first && first.focus) first.focus();\n });\n useEffect(() => {\n if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n focusInDropdown.current = false;\n focusToggle();\n } // only `show` should be changing\n }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n useEffect(() => {\n lastSourceEvent.current = null;\n });\n\n const getNextFocusedChild = (current, offset) => {\n if (!menuRef.current) return null;\n const items = qsa(menuRef.current, itemSelector);\n let index = items.indexOf(current) + offset;\n index = Math.max(0, Math.min(index, items.length));\n return items[index];\n };\n\n useEventListener(useCallback(() => window.document, [window]), 'keydown', event => {\n var _menuRef$current, _toggleRef$current;\n\n const {\n key\n } = event;\n const target = event.target;\n const fromMenu = (_menuRef$current = menuRef.current) == null ? void 0 : _menuRef$current.contains(target);\n const fromToggle = (_toggleRef$current = toggleRef.current) == null ? void 0 : _toggleRef$current.contains(target); // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n // in inscrutability\n\n const isInput = /input|textarea/i.test(target.tagName);\n\n if (isInput && (key === ' ' || key !== 'Escape' && fromMenu || key === 'Escape' && target.type === 'search')) {\n return;\n }\n\n if (!fromMenu && !fromToggle) {\n return;\n }\n\n if (key === 'Tab' && (!menuRef.current || !show)) {\n return;\n }\n\n lastSourceEvent.current = event.type;\n const meta = {\n originalEvent: event,\n source: event.type\n };\n\n switch (key) {\n case 'ArrowUp':\n {\n const next = getNextFocusedChild(target, -1);\n if (next && next.focus) next.focus();\n event.preventDefault();\n return;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n\n if (!show) {\n onToggle(true, meta);\n } else {\n const next = getNextFocusedChild(target, 1);\n if (next && next.focus) next.focus();\n }\n\n return;\n\n case 'Tab':\n // on keydown the target is the element being tabbed FROM, we need that\n // to know if this event is relevant to this dropdown (e.g. in this menu).\n // On `keyup` the target is the element being tagged TO which we use to check\n // if focus has left the menu\n addEventListener(target.ownerDocument, 'keyup', e => {\n var _menuRef$current2;\n\n if (e.key === 'Tab' && !e.target || !((_menuRef$current2 = menuRef.current) != null && _menuRef$current2.contains(e.target))) {\n onToggle(false, meta);\n }\n }, {\n once: true\n });\n break;\n\n case 'Escape':\n if (key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onToggle(false, meta);\n break;\n\n default:\n }\n });\n return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(DropdownContext.Provider, {\n value: context,\n children: children\n })\n });\n}\n\nDropdown.displayName = 'Dropdown';\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nDropdown.Item = DropdownItem;\nexport default Dropdown;","import { useReducer } from 'react';\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return \n * ```\n */\n\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are stricting equal to the last state value\n var _useReducer = useReducer(function (state) {\n return !state;\n }, false),\n dispatch = _useReducer[1];\n\n return dispatch;\n}","import { useEffect, useRef } from 'react';\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n * const lastProps = usePrevious(props)\n *\n * if (lastProps.foo !== props.foo)\n * resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\n\nexport default function usePrevious(value) {\n var ref = useRef(null);\n useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n}","import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture) {\n if (capture === void 0) {\n capture = false;\n }\n\n var handler = useEventCallback(listener);\n useEffect(function () {\n var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n target.addEventListener(event, handler, capture);\n return function () {\n return target.removeEventListener(event, handler, capture);\n };\n }, [eventTarget]);\n}","import * as React from 'react';\nconst DropdownContext = /*#__PURE__*/React.createContext({});\nDropdownContext.displayName = 'DropdownContext';\nexport default DropdownContext;","import { useState } from 'react';\nimport useEffect from './useIsomorphicEffect';\nvar targetMap = new WeakMap();\nvar resizeObserver;\n\nfunction getResizeObserver() {\n // eslint-disable-next-line no-return-assign\n return resizeObserver = resizeObserver || new window.ResizeObserver(function (entries) {\n entries.forEach(function (entry) {\n var handler = targetMap.get(entry.target);\n if (handler) handler(entry.contentRect);\n });\n });\n}\n/**\n * Efficiently observe size changes on an element. Depends on the `ResizeObserver` api,\n * and polyfills are needed in older browsers.\n *\n * ```ts\n * const [ref, attachRef] = useCallbackRef(null);\n *\n * const rect = useResizeObserver(ref);\n *\n * return (\n *
    \n * {JSON.stringify(rect)}\n *
    \n * )\n * ```\n *\n * @param element The DOM element to observe\n */\n\n\nexport default function useResizeObserver(element) {\n var _useState = useState(null),\n rect = _useState[0],\n setRect = _useState[1];\n\n useEffect(function () {\n if (!element) return;\n getResizeObserver().observe(element);\n setRect(element.getBoundingClientRect());\n targetMap.set(element, function (rect) {\n setRect(rect);\n });\n return function () {\n targetMap.delete(element);\n };\n }, [element]);\n return rect;\n}","const _excluded = [\"onKeyDown\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport * as React from 'react';\nimport { useEventCallback } from '@restart/hooks';\nimport { useButtonProps } from './Button';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n\n/**\n * An generic `
    ` component that covers a few A11y cases, ensuring that\n * cases where the `href` is missing or trivial like \"#\" are treated like buttons.\n */\nconst Anchor = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [buttonProps] = useButtonProps(Object.assign({\n tagName: 'a'\n }, props));\n const handleKeyDown = useEventCallback(e => {\n buttonProps.onKeyDown(e);\n onKeyDown == null ? void 0 : onKeyDown(e);\n });\n\n if (isTrivialHref(props.href) || props.role === 'button') {\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, buttonProps, {\n onKeyDown: handleKeyDown\n }));\n }\n\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, {\n onKeyDown: onKeyDown\n }));\n});\nAnchor.displayName = 'Anchor';\nexport default Anchor;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useDropdownItem } from '@restart/ui/DropdownItem';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownItem = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n eventKey,\n disabled = false,\n onClick,\n active,\n as: Component = Anchor,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n const [dropdownItemProps, meta] = useDropdownItem({\n key: eventKey,\n href: props.href,\n disabled,\n onClick,\n active\n });\n return /*#__PURE__*/_jsx(Component, { ...props,\n ...dropdownItemProps,\n ref: ref,\n className: classNames(className, prefix, meta.isActive && 'active', disabled && 'disabled')\n });\n});\nDropdownItem.displayName = 'DropdownItem';\nexport default DropdownItem;","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'InputGroupContext';\nexport default context;","import * as React from 'react'; // TODO: check\n\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n // @ts-ignore\n if (!(process.env.NODE_ENV !== \"production\")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n const warningRef = useCallback(refValue => {\n !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${componentName} injected a ref to a provided \\`as\\` component that resolved to a component instance instead of a DOM element. ` + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n }, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n return useMergedRefs(warningRef, ref);\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useDropdownMenu } from '@restart/ui/DropdownMenu';\nimport useIsomorphicEffect from '@restart/hooks/useIsomorphicEffect';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport DropdownContext from './DropdownContext';\nimport InputGroupContext from './InputGroupContext';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n flip: true\n};\nexport function getDropdownMenuPlacement(alignEnd, dropDirection, isRTL) {\n const topStart = isRTL ? 'top-end' : 'top-start';\n const topEnd = isRTL ? 'top-start' : 'top-end';\n const bottomStart = isRTL ? 'bottom-end' : 'bottom-start';\n const bottomEnd = isRTL ? 'bottom-start' : 'bottom-end';\n const leftStart = isRTL ? 'right-start' : 'left-start';\n const leftEnd = isRTL ? 'right-end' : 'left-end';\n const rightStart = isRTL ? 'left-start' : 'right-start';\n const rightEnd = isRTL ? 'left-end' : 'right-end';\n let placement = alignEnd ? bottomEnd : bottomStart;\n if (dropDirection === 'up') placement = alignEnd ? topEnd : topStart;else if (dropDirection === 'end') placement = alignEnd ? rightEnd : rightStart;else if (dropDirection === 'start') placement = alignEnd ? leftEnd : leftStart;\n return placement;\n}\nconst DropdownMenu = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n align,\n rootCloseEvent,\n flip,\n show: showProps,\n renderOnMount,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n popperConfig,\n variant,\n ...props\n}, ref) => {\n let alignEnd = false;\n const isNavbar = useContext(NavbarContext);\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n const {\n align: contextAlign,\n drop,\n isRTL\n } = useContext(DropdownContext);\n align = align || contextAlign;\n const isInputGroup = useContext(InputGroupContext);\n const alignClasses = [];\n\n if (align) {\n if (typeof align === 'object') {\n const keys = Object.keys(align);\n process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n\n if (keys.length) {\n const brkPoint = keys[0];\n const direction = align[brkPoint]; // .dropdown-menu-end is required for responsively aligning\n // left in addition to align left classes.\n\n alignEnd = direction === 'start';\n alignClasses.push(`${prefix}-${brkPoint}-${direction}`);\n }\n } else if (align === 'end') {\n alignEnd = true;\n }\n }\n\n const placement = getDropdownMenuPlacement(alignEnd, drop, isRTL);\n const [menuProps, {\n hasShown,\n popper,\n show,\n toggle\n }] = useDropdownMenu({\n flip,\n rootCloseEvent,\n show: showProps,\n usePopper: !isNavbar && alignClasses.length === 0,\n offset: [0, 2],\n popperConfig,\n placement\n });\n menuProps.ref = useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref);\n useIsomorphicEffect(() => {\n // Popper's initial position for the menu is incorrect when\n // renderOnMount=true. Need to call update() to correct it.\n if (show) popper == null ? void 0 : popper.update();\n }, [show]);\n if (!hasShown && !renderOnMount && !isInputGroup) return null; // For custom components provide additional, non-DOM, props;\n\n if (typeof Component !== 'string') {\n menuProps.show = show;\n\n menuProps.close = () => toggle == null ? void 0 : toggle(false);\n\n menuProps.align = align;\n }\n\n let style = props.style;\n\n if (popper != null && popper.placement) {\n // we don't need the default popper style,\n // menus are display: none when not shown.\n style = { ...props.style,\n ...menuProps.style\n };\n props['x-placement'] = popper.placement;\n }\n\n return /*#__PURE__*/_jsx(Component, { ...props,\n ...menuProps,\n style: style // Bootstrap css requires this data attrib to style responsive menus.\n ,\n ...((alignClasses.length || isNavbar) && {\n 'data-bs-popper': 'static'\n }),\n className: classNames(className, prefix, show && 'show', alignEnd && `${prefix}-end`, variant && `${prefix}-${variant}`, ...alignClasses)\n });\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useButtonProps } from '@restart/ui/Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false\n};\nconst Button = /*#__PURE__*/React.forwardRef(({\n as,\n bsPrefix,\n variant,\n size,\n active,\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n const [buttonProps, {\n tagName\n }] = useButtonProps({\n tagName: as,\n ...props\n });\n const Component = tagName;\n return /*#__PURE__*/_jsx(Component, { ...buttonProps,\n ...props,\n ref: ref,\n className: classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`, props.href && props.disabled && 'disabled')\n });\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useDropdownToggle } from '@restart/ui/DropdownToggle';\nimport DropdownContext from '@restart/ui/DropdownContext';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Button from './Button';\nimport InputGroupContext from './InputGroupContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownToggle = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n split,\n className,\n childBsPrefix,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = Button,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n const dropdownContext = useContext(DropdownContext);\n const isInputGroup = useContext(InputGroupContext);\n\n if (childBsPrefix !== undefined) {\n props.bsPrefix = childBsPrefix;\n }\n\n const [toggleProps] = useDropdownToggle();\n toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the\n // underlying component, to allow it to render size and style variants.\n\n return /*#__PURE__*/_jsx(Component, {\n className: classNames(className, prefix, split && `${prefix}-split`, !!isInputGroup && (dropdownContext == null ? void 0 : dropdownContext.show) && 'show'),\n ...toggleProps,\n ...props\n });\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport BaseDropdown from '@restart/ui/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu, { getDropdownMenuPlacement } from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport InputGroupContext from './InputGroupContext';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownHeader = createWithBsPrefix('dropdown-header', {\n defaultProps: {\n role: 'heading'\n }\n});\nconst DropdownDivider = createWithBsPrefix('dropdown-divider', {\n Component: 'hr',\n defaultProps: {\n role: 'separator'\n }\n});\nconst DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n Component: 'span'\n});\nconst defaultProps = {\n navbar: false,\n align: 'start',\n autoClose: true\n};\nconst Dropdown = /*#__PURE__*/React.forwardRef((pProps, ref) => {\n const {\n bsPrefix,\n drop,\n show,\n className,\n align,\n onSelect,\n onToggle,\n focusFirstItemOnShow,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n navbar: _4,\n autoClose,\n ...props\n } = useUncontrolled(pProps, {\n show: 'onToggle'\n });\n const isInputGroup = useContext(InputGroupContext);\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n const isRTL = useIsRTL();\n\n const isClosingPermitted = source => {\n // autoClose=false only permits close on button click\n if (autoClose === false) return source === 'click'; // autoClose=inside doesn't permit close on rootClose\n\n if (autoClose === 'inside') return source !== 'rootClose'; // autoClose=outside doesn't permit close on select\n\n if (autoClose === 'outside') return source !== 'select';\n return true;\n };\n\n const handleToggle = useEventCallback((nextShow, meta) => {\n if (meta.originalEvent.currentTarget === document && (meta.source !== 'keydown' || meta.originalEvent.key === 'Escape')) meta.source = 'rootClose';\n if (isClosingPermitted(meta.source)) onToggle == null ? void 0 : onToggle(nextShow, meta);\n });\n const alignEnd = align === 'end';\n const placement = getDropdownMenuPlacement(alignEnd, drop, isRTL);\n const contextValue = useMemo(() => ({\n align,\n drop,\n isRTL\n }), [align, drop, isRTL]);\n return /*#__PURE__*/_jsx(DropdownContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(BaseDropdown, {\n placement: placement,\n show: show,\n onSelect: onSelect,\n onToggle: handleToggle,\n focusFirstItemOnShow: focusFirstItemOnShow,\n itemSelector: `.${prefix}-item:not(.disabled):not(:disabled)`,\n children: isInputGroup ? props.children : /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'end' && 'dropend', drop === 'start' && 'dropstart')\n })\n })\n });\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nexport default Object.assign(Dropdown, {\n Toggle: DropdownToggle,\n Menu: DropdownMenu,\n Item: DropdownItem,\n ItemText: DropdownItemText,\n Divider: DropdownDivider,\n Header: DropdownHeader\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n vertical: false,\n role: 'group'\n};\nconst ButtonGroup = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n vertical,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...rest\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn-group');\n let baseClass = prefix;\n if (vertical) baseClass = `${prefix}-vertical`;\n return /*#__PURE__*/_jsx(Component, { ...rest,\n ref: ref,\n className: classNames(className, baseClass, size && `${prefix}-${size}`)\n });\n});\nButtonGroup.displayName = 'ButtonGroup';\nButtonGroup.defaultProps = defaultProps;\nexport default ButtonGroup;","import React, { useState, useEffect, createContext, useContext } from 'react';\n\n/**\r\n * Locales supported by HubSpot forms\r\n */\r\nvar HubSpotFormLocale;\r\n(function (HubSpotFormLocale) {\r\n /**\r\n * English\r\n */\r\n HubSpotFormLocale[\"ENGLISH\"] = \"en\";\r\n /**\r\n * Danish\r\n */\r\n HubSpotFormLocale[\"DANISH\"] = \"da\";\r\n /**\r\n * German\r\n */\r\n HubSpotFormLocale[\"GERMAN\"] = \"de\";\r\n /**\r\n * Spanish (Spain)\r\n */\r\n HubSpotFormLocale[\"SPANISH\"] = \"es\";\r\n /**\r\n * Spanish (Mexico)\r\n */\r\n HubSpotFormLocale[\"SPANISH_MEXICO\"] = \"es-mx\";\r\n /**\r\n * Finnish\r\n */\r\n HubSpotFormLocale[\"FINNISH\"] = \"fi\";\r\n /**\r\n * French\r\n */\r\n HubSpotFormLocale[\"FRENCH\"] = \"fr\";\r\n /**\r\n * Italian\r\n */\r\n HubSpotFormLocale[\"ITALIAN\"] = \"it\";\r\n /**\r\n * Japanese\r\n */\r\n HubSpotFormLocale[\"JAPANESE\"] = \"ja\";\r\n /**\r\n * Dutch\r\n */\r\n HubSpotFormLocale[\"DUTCH\"] = \"nl\";\r\n /**\r\n * Polish\r\n */\r\n HubSpotFormLocale[\"POLISH\"] = \"pl\";\r\n /**\r\n * Portuguese\r\n */\r\n HubSpotFormLocale[\"PORTUGUESE\"] = \"pt-br\";\r\n /**\r\n * Swedish\r\n */\r\n HubSpotFormLocale[\"SWEDISH\"] = \"sv\";\r\n /**\r\n * Chinese\r\n */\r\n HubSpotFormLocale[\"CHINESE\"] = \"zh-cn\";\r\n /**\r\n * Chinese (Hong Kong)\r\n */\r\n HubSpotFormLocale[\"CHINESE_HONG_KONG\"] = \"zh-hk\";\r\n})(HubSpotFormLocale || (HubSpotFormLocale = {}));\n\n// Hook\r\nvar cachedScripts = [];\r\nfunction useScript(src, async, addToHead) {\r\n if (async === void 0) { async = true; }\r\n if (addToHead === void 0) { addToHead = false; }\r\n var _a = useState(false), loaded = _a[0], setLoaded = _a[1];\r\n var _b = useState(false), error = _b[0], setError = _b[1];\r\n useEffect(function () {\r\n // If cachedScripts array already includes src that means another instance ...\r\n // ... of this hook already loaded this script, so no need to load again.\r\n if (cachedScripts.includes(src)) {\r\n setLoaded(true);\r\n setError(false);\r\n }\r\n else {\r\n cachedScripts.push(src);\r\n // Create script\r\n var script_1 = document.createElement('script');\r\n script_1.src = src;\r\n script_1.async = async;\r\n // Script event listener callbacks for load and error\r\n var onScriptLoad_1 = function () {\r\n setLoaded(true);\r\n setError(false);\r\n };\r\n var onScriptError_1 = function () {\r\n // Remove from cachedScripts we can try loading again\r\n var index = cachedScripts.indexOf(src);\r\n if (index >= 0) {\r\n cachedScripts.splice(index, 1);\r\n }\r\n script_1.remove();\r\n setLoaded(true);\r\n setError(true);\r\n };\r\n script_1.addEventListener('load', onScriptLoad_1);\r\n script_1.addEventListener('error', onScriptError_1);\r\n // Add script to document head if required, otherwise to the body\r\n addToHead\r\n ? document.head.appendChild(script_1)\r\n : document.body.appendChild(script_1);\r\n // Remove event listeners on cleanup\r\n return function () {\r\n script_1.removeEventListener('load', onScriptLoad_1);\r\n script_1.removeEventListener('error', onScriptError_1);\r\n };\r\n }\r\n }, [src]); // Only re-run effect if script src changes\r\n return [loaded, error];\r\n}\n\nvar HubspotContext = createContext({\r\n loaded: false,\r\n error: false\r\n});\r\nvar useHubspotContext = function () { return useContext(HubspotContext); };\r\nvar HubspotProvider = function (_a) {\r\n var async = _a.async, addToHead = _a.addToHead, children = _a.children;\r\n // Attach hubspot script to the document\r\n var _b = useScript('https://js.hsforms.net/forms/v2.js', async, addToHead), loaded = _b[0], error = _b[1];\r\n return (React.createElement(HubspotContext.Provider, { value: { loaded: loaded, error: error } }, children));\r\n};\n\nvar useHubspotForm = function (props) {\r\n var _a = useHubspotContext(), loaded = _a.loaded, error = _a.error;\r\n var _b = useState(false), formCreated = _b[0], setFormCreated = _b[1];\r\n useEffect(function () {\r\n if (typeof window !== 'undefined' && window) {\r\n var windowWithHubspot = window;\r\n if (loaded && windowWithHubspot.hbspt && !formCreated) {\r\n windowWithHubspot.hbspt.forms.create(props);\r\n setFormCreated(true);\r\n }\r\n }\r\n }, [loaded, formCreated, setFormCreated]);\r\n return { loaded: loaded, formCreated: formCreated, error: error };\r\n};\n\nexport { HubSpotFormLocale, HubspotProvider, useHubspotContext, useHubspotForm };\n","import { ENTITY_LABEL, ENTITY_PLURAL_LABEL } from \"../../Helpers/Labels/EntityLabel\"\r\n\r\nconst CommanVideos = [\r\n {\r\n text: \"Welcome! Get Started\",\r\n description: `Welcome to CodelessONE! This video will help you get started with the platform. It will walk you through the basics of the application, including how to create objects, properties, and object relations. It will also show you how to set up portals and roles, ensuring that your application is tailored to your needs. `,\r\n tag: \"Video\",\r\n keyword: \"Comman\",\r\n videoUrl: \"https://youtu.be/XoA-54uVPxk\",\r\n order: 1\r\n },\r\n // {\r\n // text: \"New Release!\",\r\n // description: \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\",\r\n // tag: \"Article\",\r\n // keyword: \"Comman\",\r\n // image: \"https://ideadatalakestorage.blob.core.windows.net/designerresources/images/NoSubscriptionImage.png\",\r\n // order: 3\r\n // }\r\n]\r\n\r\nexport const CommanArticles = [\r\n { text: \"Getting Started\", externalUrl: \"https://www.codelessone.com/\" },\r\n { text: \"Knowledge Base\", externalUrl: \"https://www.codelessone.com/\" },\r\n { text: \"Integration and API Documentation\", externalUrl: \"https://www.codelessone.com/\" },\r\n { text: \"Rights Administration\", externalUrl: \"https://www.codelessone.com/\" }\r\n]\r\n\r\nexport const contactUsOptions = [\r\n { text: \"Email us\", icon: \"far fa-envelope\" },\r\n { text: \"Request a call\", icon: \"far fa-phone\" },\r\n { text: \"Submit an idea\", icon: \"far fa-lightbulb pe-1\" },\r\n { text: \"Submit a ticket\", icon: \"far fa-message-lines\" },\r\n]\r\n\r\nexport const Objects = {\r\n \"Article\": [\r\n {\r\n text: `What is an ${ENTITY_LABEL}?`,\r\n description: `In CodelessONE, an \"Object\" is a foundational element used to organize and structure data. Think of it as a digital drawer or compartment where specific sets of information are grouped together. Just as you'd use a folder on a computer to store related files, an \"Object\" in CodelessONE groups related data, making it easier to access, modify, and manage. This organization ensures clarity and efficiency when working with various data points within the platform.`,\r\n tag: \"Article\",\r\n keyword: `${ENTITY_PLURAL_LABEL}`, \r\n image: \"https://ideadatalakestorage.blob.core.windows.net/designerresources/images/NoSubscriptionImage.png\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: `How to work with ${ENTITY_PLURAL_LABEL}?`,\r\n description: `To work with objects in CodelessONE, start by accessing the \"App Model Tab\" through the settings icon. Here, you'll find core components like Objects, Properties, Roles, and Portals. To create an object, either manually click on \"+ New Object\" and fill in the relevant details or use the \"Alice AI\" button for automated object and property suggestions. After selecting your preferences, always ensure to click the \"Update App\" button to see the changes in your App's workspace. `,\r\n tag: \"Article\",\r\n keyword: `${ENTITY_PLURAL_LABEL}`,\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: `How to personalize my ${ENTITY_PLURAL_LABEL}?`,\r\n description: `In CodelessONE, personalizing objects is straightforward. Start by navigating to the 'App Model Tab' via 'Application Settings'. Here, you can update the object name, adjust its label for better clarity in the workspace, choose or change its icon for easier visual identification, and provide or modify its description. You also have the option to customize the plural label of the object. After making all adjustments, remember to click 'Save' and then 'Update App' to ensure your changes are reflected in the application, keeping it intuitive and user centric. `,\r\n tag: \"Article\",\r\n keyword: `${ENTITY_PLURAL_LABEL}`,\r\n image: \"https://ideadatalakestorage.blob.core.windows.net/designerresources/images/NoSubscriptionImage.png\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n }\r\n ],\r\n \"Video\": [\r\n ...CommanVideos,\r\n // ...[{\r\n // text: `How to: ${ENTITY_LABEL}`,\r\n // description: \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\",\r\n // tag: \"Video\",\r\n // keyword: `${ENTITY_PLURAL_LABEL}`,\r\n // videoUrl: \"https://codelessone.wistia.com/medias/ym3elw1dje\",\r\n // learnMoreUrl: \"https://www.codelessone.com/\",\r\n // order: 2\r\n // }]\r\n ],\r\n keyword: `${ENTITY_PLURAL_LABEL}`\r\n}\r\n\r\nexport const Properties = {\r\n \"Article\": [\r\n {\r\n text: \"What are Properties?\",\r\n description: `In CodelessONE, \"Properties\" are specific data fields or attributes associated with an Object. They help define and provide detailed information about that Object. For example, for a \"Customer\" Object, Properties might include \"Name\", \"Email Address\", or \"Contact Number\". Essentially, Properties capture the various aspects or characteristics of an Object within the application.`,\r\n tag: \"Article\",\r\n keyword: \"Properties\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to work with Properties?\",\r\n description: `In CodelessONE, managing properties starts by accessing the \"App Model Tab\" through \"Application settings\". Once there, select the desired object to enhance. You can manually add properties by clicking the \"Add New Property\" button, entering a name, choosing a type, and finalizing with \"Create\". Alternatively, use the \"Alice AI\" feature for automated property recommendations based on the object's name. After making selections, it's crucial to hit the \"Update App\" button to apply changes, ensuring a customized experience within your application.`,\r\n tag: \"Article\",\r\n keyword: \"Properties\",\r\n image: \"https://ideadatalakestorage.blob.core.windows.net/designerresources/images/NoSubscriptionImage.png\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to personalize my Properties?\",\r\n description: `In CodelessONE, to personalize properties, navigate to the 'Edit Property' section by clicking on the desired property name. This interface allows adjustments to general elements, such as setting default values, tooltips, and descriptions. Depending on the property type, you can also define specific attributes like formulas, character limits, and default dates or times. After tailoring your properties, ensure to click 'Save' and then 'Update App' to apply and reflect all modifications, aligning them with your application's needs and enhancing user experience. `,\r\n tag: \"Article\",\r\n keyword: \"Properties\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n }\r\n ],\r\n \"Video\": [\r\n ...CommanVideos,\r\n // ...[{\r\n // text: \"How to: Properties\",\r\n // description: \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\",\r\n // videoUrl: \"https://codelessone.wistia.com/medias/ym3elw1dje\",\r\n // tag: \"Video\",\r\n // keyword: \"Properties\",\r\n // learnMoreUrl: \"https://www.codelessone.com/\",\r\n // order: 2\r\n // }]\r\n ],\r\n keyword: \"Properties\"\r\n}\r\n\r\nexport const LinkedEntity = {\r\n \"Article\": [\r\n {\r\n text: \"What are Object Relations?\",\r\n description: `Object Relations in an application define the intricate connections between different data objects, establishing a cohesive data structure. These relationships utilize three primary cardinalities: One-to-One, One-to-Many, and Many-to-Many. Each cardinality dictates a unique way in which objects can be interlinked, ensuring efficient data organization and retrieval. `,\r\n tag: \"Article\",\r\n keyword: \"Linked Entities\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to work with Object Relations?\",\r\n description: `To manage Object Relations in the App Model, you can either manually create relations by selecting two objects, determining their cardinality, and naming the relation, or use Alice AI, which provides tailored relation suggestions based on your app's framework. After setting up the desired relations, it's crucial to click \"Update App\" to integrate these changes into your application.`,\r\n tag: \"Article\",\r\n keyword: \"Linked Entities\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to personalize my Object Relations?\",\r\n description: `In the App Model, personalizing object relations enhances user experience. To edit relations, access the 'Linked Object' section. Here, you can adjust reference properties, especially for One-to-Many cardinalities, modify cardinality types, redefine relation names, and update relation labels. After adjusting, always save and click \"Update App\" to integrate changes. Properly structured relations ensure the app aligns with user requirements. `,\r\n tag: \"Article\",\r\n keyword: \"Linked Entities\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n image: \"https://ideadatalakestorage.blob.core.windows.net/designerresources/images/NoSubscriptionImage.png\"\r\n }\r\n ],\r\n \"Video\": [\r\n ...CommanVideos,\r\n // ...[{\r\n // text: \"How to: ObjectRelations\",\r\n // description: \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\",\r\n // tag: \"Video\",\r\n // keyword: \"Linked Entities\",\r\n // learnMoreUrl: \"https://www.codelessone.com/\",\r\n // videoUrl: \"https://codelessone.wistia.com/medias/ym3elw1dje\",\r\n // order: 2\r\n // }]\r\n ],\r\n keyword: \"Linked Entities\"\r\n}\r\n\r\nexport const Pages = {\r\n \"Article\": [\r\n {\r\n text: \"What are Pages?\",\r\n description: `In CodelessONE, \"Pages\" are the primary interface through which users interact with the application. They are the visual representation of the application's data and functionality. Pages are composed of various elements, including objects, properties, and portals. These elements are arranged in a way that ensures a seamless user experience. `,\r\n tag: \"Article\",\r\n keyword: \"Pages\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to work with Pages?\",\r\n description: `To work with pages in CodelessONE, start by accessing the \"App Model Tab\" through the settings icon. Here, you'll find core components like Objects, Properties, Roles, and Portals. To create a page, either manually click on \"+ New Page\" and fill in the relevant details or use the \"Alice AI\" button for automated page suggestions. After selecting your preferences, always ensure to click the \"Update App\" button to see the changes in your App's workspace. `,\r\n tag: \"Article\",\r\n keyword: \"Pages\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to personalize my Pages?\",\r\n description: `In CodelessONE, personalizing pages is straightforward. Start by navigating to the 'App Model Tab' via 'Application Settings'. Here, you can update the page name, adjust its label for better clarity in the workspace, choose or change its icon for easier visual identification, and provide or modify its description. You also have the option to customize the plural label of the page. After making all adjustments, remember to click 'Save' and then 'Update App' to ensure your changes are reflected in the application, keeping it intuitive and user centric. `,\r\n tag: \"Article\",\r\n keyword: \"Pages\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n }\r\n ],\r\n \"Video\": [\r\n ...CommanVideos,\r\n // ...[{\r\n // text: \"How to: Pages\",\r\n // description: \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\",\r\n // tag: \"Video\",\r\n // keyword: \"Pages\",\r\n // learnMoreUrl: \"https://www.codelessone.com/\",\r\n // videoUrl: \"https://codelessone.wistia.com/medias/ym3elw1dje\",\r\n // order: 2\r\n // }]\r\n ],\r\n keyword: \"Pages\"\r\n}\r\n\r\nexport const Roles = {\r\n \"Article\": [\r\n {\r\n text: \"What are Roles?\",\r\n description: `In CodelessONE, roles represent predefined sets of permissions that delineate the range of actions a user can execute within the system. By categorizing users into specific roles, the platform ensures that everyone can access and modify only the sections and features pertinent to their assigned tasks and responsibilities, thereby maintaining security and workflow efficiency.`,\r\n tag: \"Article\",\r\n keyword: \"Roles\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to work with Roles?\",\r\n description: `In CodelessONE, roles ensure users have access tailored to their responsibilities. While default roles like Admin and Contributor are provided, you can add new ones using '+New Role'. Each role's permissions can be broadly defined or fine-tuned at the object and field levels. After setting permissions, always save and click \"Update App\" to apply the changes, ensuring a secure and efficient user experience. `,\r\n tag: \"Article\",\r\n keyword: \"Roles\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to personalize my Roles?\",\r\n description: `In CodelessONE, roles are tailored tools ensuring that users access features relevant to their duties. By selecting a specific role, you can refine its name and delve into its permissions, adjusting access levels for various objects, from 'Full Access' to 'Read Only'. Once the necessary adjustments are made, always save your changes, and promptly update the app. This ensures that your modifications are consistently applied. After solidifying these role configurations, you can efficiently assign users to these specialized roles, safeguarding that each user interacts with the application within their designated permissions, enhancing both security and operational efficiency. `,\r\n tag: \"Article\",\r\n keyword: \"Roles\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n }\r\n ],\r\n \"Video\": [\r\n ...CommanVideos,\r\n ...[{\r\n text: \"How to: Roles\",\r\n description: `In CodelessONE, roles represent predefined sets of permissions that delineate the range of actions a user can execute within the system. By categorizing users into specific roles, the platform ensures that everyone can access and modify only the sections and features pertinent to their assigned tasks and responsibilities, thereby maintaining security and workflow efficiency.`,\r\n tag: \"Video\",\r\n keyword: \"Roles\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n videoUrl: \"https://youtu.be/vp-ugYpycs8\",\r\n order: 2\r\n }]\r\n ],\r\n keyword: \"Roles\"\r\n}\r\n\r\nexport const Portals = {\r\n \"Article\": [\r\n {\r\n text: \"What are Portals?\",\r\n description: `Portals in CodelessONE are designated areas within an application, designed to display specific data tailored to certain users or teams. They act as individualized windows into the application, ensuring streamlined access to relevant information. For example, an HR team might have a portal displaying only HR-related objects, while a project management team might see objects related to projects, tasks, and milestones. By setting up distinct portals, organizations can enhance collaboration, reduce clutter, and ensure that each team or user interacts with only the data pertinent to their role or function. `,\r\n tag: \"Article\",\r\n keyword: \"Portals\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to work with Portals?\",\r\n description: `In CodelessONE, portals are tailored views that display specific application data for designated teams or departments. To set one up, simply click on '+New Portal', give it a name, choose an icon, and describe its purpose. Once created, you can select the relevant objects for display under 'Object Selection'. Remember, by default, all objects are chosen, so deselect any that aren't pertinent to the portal's intended users. After finalizing your selections, hit 'Save' and then 'Update App' to make your portal live. These portals not only streamline data access but also bolster collaboration by ensuring real-time data synchronization across different teams. `,\r\n tag: \"Article\",\r\n keyword: \"Portals\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n },\r\n {\r\n text: \"How to personalize my Portals?\",\r\n description: `In CodelessONE, personalizing a portal ensures it meets user-specific needs. Start by selecting the desired portal from the 'App Model'. Once inside, you can choose which objects to display, tailoring the portal's content. The 'General Settings' allow modifications to the portal's name, icon, and description for clarity. Under 'Navigation Bar and Logo', decide the navigation bar's position, set the default landing page, and update logos to align with branding. After making these adjustments, always save and then 'Update App' to finalize changes, creating a tailored portal environment that enhances user interaction and data accessibility. `,\r\n tag: \"Article\",\r\n keyword: \"Portals\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n }\r\n ],\r\n \"Video\": [\r\n ...CommanVideos,\r\n ...[{\r\n text: \"How to: Portals\",\r\n description: `Portals in CodelessONE are designated areas within an application, designed to display specific data tailored to certain users or teams. They act as individualized windows into the application, ensuring streamlined access to relevant information. For example, an HR team might have a portal displaying only HR-related objects, while a project management team might see objects related to projects, tasks, and milestones. By setting up distinct portals, organizations can enhance collaboration, reduce clutter, and ensure that each team or user interacts with only the data pertinent to their role or function. `,\r\n tag: \"Video\",\r\n keyword: \"Portals\",\r\n learnMoreUrl: \"https://www.codelessone.com/\",\r\n videoUrl: \"https://youtu.be/ZWcL1hYPeqo\",\r\n order: 2\r\n }]\r\n ],\r\n keyword: \"Portals\"\r\n}\r\n\r\nexport const helpCenterContent = [\r\n Objects,\r\n Properties,\r\n LinkedEntity,\r\n Pages,\r\n Roles,\r\n Portals\r\n]\r\n","export const HelpCenterReducer = (state, action) => {\r\n switch (action.type) {\r\n case \"SET_HELPCENTER_FOR\":\r\n return {\r\n ...state,\r\n helpCenterFor: action.payload,\r\n showRatingDialog: false,\r\n showSubmitIdeaDialog:false,\r\n showDetailComponent: false,\r\n showContactUsOptions: false,\r\n showContactUsDetail: false,\r\n selectedVideoArticle: {},\r\n contactUsMethod: \"\"\r\n };\r\n case \"SET_USER\":\r\n return {\r\n ...state,\r\n user: action.payload\r\n };\r\n case \"TOGGLE_RATING_DIALOG\":\r\n return {\r\n ...state,\r\n showRatingDialog: !state.showRatingDialog\r\n }\r\n case \"TOGGLE_SUBMITIDEA_DIALOG\":\r\n return {\r\n ...state,\r\n showSubmitIdeaDialog: !state.showSubmitIdeaDialog\r\n } \r\n case \"SET_DATAITEM\":\r\n return {\r\n ...state,\r\n dataItem: action.payload\r\n };\r\n case \"SET_SEARCH_KEYWORD\":\r\n return {\r\n ...state,\r\n searchKeyword: action.payload.searchKeyword,\r\n searchResult: action.payload.searchResult\r\n };\r\n case \"TOGGLE_DETAIL_COMPONENT\":\r\n return {\r\n ...state,\r\n showDetailComponent: true,\r\n selectedVideoArticle: action.payload,\r\n showContactUsOptions: false\r\n };\r\n case \"TOGGLE_CONTACTUS_OPTIONS\":\r\n return {\r\n ...state,\r\n showDetailComponent: false,\r\n showContactUsOptions: !state.showContactUsOptions,\r\n selectedVideoArticle: {}\r\n }\r\n case \"TOGGLE_HELPCENTER\":\r\n return {\r\n ...state,\r\n showHelpCenter: !state.showHelpCenter\r\n }\r\n case \"TOGGLE_CONTACT_DETAIL\":\r\n return {\r\n ...state,\r\n showContactUsDetail: !state.showContactUsDetail,\r\n contactUsMethod: action.payload\r\n }\r\n case \"BACK_TO_HOME\":\r\n return {\r\n ...state,\r\n showDetailComponent: false,\r\n selectedVideoArticle: {},\r\n showContactUsOptions: state.showContactUsDetail ? true : false,\r\n showContactUsDetail: false,\r\n contactUsMethod: \"\"\r\n }\r\n default:\r\n return state\r\n }\r\n};","import React from \"react\"\r\nimport { HelpCenterReducer } from \"./HelpCenterReducer\";\r\n\r\nexport const initialValue = {\r\n helpCenterFor: \"\",\r\n dataItem: {},\r\n showHelpCenter: false,\r\n showRatingDialog: false,\r\n showSubmitIdeaDialog: false,\r\n showDetailComponent: false,\r\n showContactUsOptions: false,\r\n showContactUsDetail: false,\r\n selectedVideoArticle: {},\r\n contactUsMethod: \"\",\r\n searchKeyword: \"\",\r\n searchResult: [],\r\n user: {}\r\n}\r\n\r\nexport const HelpCenterContext = React.createContext(initialValue)\r\n\r\nexport const HelpCenterContextProvider = ({ children, value = {} }) => {\r\n\r\n const [state, dispatch] = React.useReducer(HelpCenterReducer, { ...initialValue, ...value });\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}","import React, { Fragment } from 'react';\r\nimport { useContext } from 'react';\r\nimport { HelpCenterContext } from './Context/HelpCenterContext';\r\nimport { CommanArticles } from './Data';\r\nexport const VideoArticleLists = (props) => {\r\n const { state, dispatch } = useContext(HelpCenterContext)\r\n const { heading } = props\r\n let data = []\r\n if (heading === \"Relevant Topics\") {\r\n data = state.dataItem.Article\r\n }\r\n if (heading === \"Other helpful resources\") {\r\n data = CommanArticles\r\n }\r\n return (\r\n
    \r\n {heading}\r\n \r\n {data.map(item => (\r\n
    \r\n {item.externalUrl ?\r\n {item.text}\r\n :\r\n dispatch({ type: \"TOGGLE_DETAIL_COMPONENT\", payload: item })} className='text-secondary font-size-0 topic-links'>{item.text}\r\n }\r\n
    \r\n ))}\r\n \r\n
    \r\n )\r\n}","import React from \"react\"\r\nimport { useContext } from \"react\"\r\nimport { Fragment } from \"react\"\r\nimport { HelpCenterContext } from \"./Context/HelpCenterContext\"\r\nexport const VideoArticleBlocks = ({ data }) => {\r\n const { dispatch } = useContext(HelpCenterContext)\r\n return (\r\n \r\n {data.sort((a, b) => a.order - b.order).map(item => (\r\n
    dispatch({ type: \"TOGGLE_DETAIL_COMPONENT\", payload: item })}>\r\n
    \r\n
    \r\n {item.tag === \"Video\" &&
    }\r\n {item.tag === \"Article\" &&
    }\r\n
    \r\n
    \r\n
    \r\n {item.text}\r\n {item.keyword} - {item.tag}\r\n
    \r\n
    \r\n
    \r\n
    \r\n ))}\r\n
    \r\n )\r\n}","import React, { useContext } from 'react';\r\nimport { Fragment } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { HelpCenterContext } from './Context/HelpCenterContext';\r\n\r\nexport const VideoArticleDetail = () => {\r\n const { state, dispatch } = useContext(HelpCenterContext)\r\n const dataItem = state.selectedVideoArticle\r\n return (\r\n
    \r\n {state.showDetailComponent &&\r\n \r\n
    \r\n {dataItem.text}\r\n
    \r\n {dataItem.videoUrl &&\r\n
    \r\n \r\n
    \r\n }\r\n

    {dataItem.description}

    \r\n {dataItem.image && {dataItem.text}}\r\n {dataItem.learnMoreUrl && Click here to learn more }\r\n
    \r\n
    \r\n Relevent Topic: {dataItem.keyword}\r\n
    \r\n {\r\n state.searchKeyword === \"\" ?\r\n state.dataItem.Article\r\n .filter(item => (item.text !== dataItem.text))\r\n .slice(0, 2)\r\n .map(item => (\r\n
    dispatch({ type: \"TOGGLE_DETAIL_COMPONENT\", payload: item })}>\r\n
    {item.text}
    \r\n {item.keyword} - {item.tag}\r\n
    \r\n ))\r\n :\r\n state.searchResult\r\n .filter(item => item.text !== dataItem.text)\r\n .slice(0, 2)\r\n .map(item => (\r\n
    dispatch({ type: \"TOGGLE_DETAIL_COMPONENT\", payload: item })}>\r\n {item.text}\r\n {item.keyword} - {item.tag}\r\n
    \r\n ))\r\n }\r\n
    \r\n
    \r\n }\r\n
    \r\n\r\n )\r\n}","import React from \"react\";\r\nimport { useHubspotForm } from '@aaronhayes/react-use-hubspot-form';\r\nimport Loader from \"../../Loader/loader\";\r\n\r\nexport const EmailUsForm = () => {\r\n const { loaded, error, formCreated } = useHubspotForm({\r\n portalId: '22438271',\r\n formId: '615196be-2a25-4699-abba-a37c9c33255c',\r\n target: '#email-us-form'\r\n });\r\n\r\n return (\r\n
    \r\n {(loaded && formCreated) ?
    : }\r\n
    \r\n );\r\n};","import React from \"react\";\r\nimport { useHubspotForm } from '@aaronhayes/react-use-hubspot-form';\r\nimport Loader from \"../../Loader/loader\";\r\n\r\nexport const RequestCallForm = () => {\r\n const { loaded, error, formCreated } = useHubspotForm({\r\n portalId: '22438271',\r\n formId: 'f0891932-2134-4165-a8e5-98525cd8fbbd',\r\n target: '#request-call-form'\r\n });\r\n\r\n return (\r\n
    \r\n {(loaded && formCreated) ?
    : }\r\n
    \r\n );\r\n};","import React, { useContext } from \"react\";\r\nimport { HelpCenterContext } from \"../Context/HelpCenterContext\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { useHubspotForm } from '@aaronhayes/react-use-hubspot-form';\r\nimport Loader from \"../../Loader/loader\";\r\n\r\nexport const SubmitIdeaForm = () => {\r\n const { loaded, error, formCreated } = useHubspotForm({\r\n portalId: '22438271',\r\n formId: '6a12087d-1b17-4761-ac59-8fd5ea5e9044',\r\n target: '#submit-idea-form'\r\n });\r\n\r\n return (\r\n
    \r\n {(loaded && formCreated) ?
    : }\r\n
    \r\n );\r\n};\r\n\r\nexport const SubmitIdeaDialog = () => {\r\n const { dispatch } = useContext(HelpCenterContext)\r\n return (\r\n dispatch({ type: \"TOGGLE_SUBMITIDEA_DIALOG\" })}\r\n >\r\n \r\n \r\n )\r\n}","import React from \"react\";\r\nimport { useHubspotForm } from '@aaronhayes/react-use-hubspot-form';\r\nimport Loader from \"../../Loader/loader\";\r\n\r\nexport const SubmitTicketForm = () => {\r\n const { loaded, error, formCreated } = useHubspotForm({\r\n portalId: '22438271',\r\n formId: 'c911e249-acef-4da5-8f09-3104ebc53bf6',\r\n target: '#submit-ticket-form'\r\n });\r\n\r\n return (\r\n
    \r\n {(loaded && formCreated) ?
    : }\r\n
    \r\n );\r\n};\r\n\r\n","import React, { useContext } from 'react';\r\nimport { Fragment } from 'react';\r\nimport { HelpCenterContext } from './Context/HelpCenterContext';\r\nimport { EmailUsForm } from './HubspotForms/EmailUs';\r\nimport { RequestCallForm } from './HubspotForms/RequestCall';\r\nimport { SubmitIdeaForm } from './HubspotForms/SubmitIdea';\r\nimport { SubmitTicketForm } from './HubspotForms/SubmitTicket';\r\n\r\nexport const ContactUsDetail = () => {\r\n const { state } = useContext(HelpCenterContext)\r\n const { contactUsMethod } = state\r\n return (\r\n \r\n Contact Us - {contactUsMethod}\r\n {contactUsMethod === \"Email us\" && }\r\n {contactUsMethod === \"Request a call\" && }\r\n {contactUsMethod === \"Submit a ticket\" && }\r\n {contactUsMethod === \"Submit an idea\" && }\r\n \r\n )\r\n}","import React from 'react';\r\nimport { Fragment } from 'react';\r\nimport { useContext } from 'react';\r\nimport { ContactUsDetail } from './ContactUsDetail';\r\nimport { contactUsOptions } from './Data';\r\nimport { HelpCenterContext } from './Context/HelpCenterContext';\r\nimport { HubspotProvider } from '@aaronhayes/react-use-hubspot-form';\r\n\r\nexport const ContactUsOptions = () => {\r\n const { state, dispatch } = useContext(HelpCenterContext)\r\n return (\r\n \r\n {\r\n state.showContactUsOptions &&\r\n \r\n \r\n {state.showContactUsDetail && }\r\n \r\n {!state.showContactUsDetail &&\r\n \r\n Contact Us\r\n How we can help?\r\n {contactUsOptions.map(item => (\r\n
    dispatch({ type: \"TOGGLE_CONTACT_DETAIL\", payload: item.text })}>{item.text}
    \r\n ))}\r\n
    \r\n }\r\n
    \r\n }\r\n
    \r\n )\r\n}","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, useDir } from '@progress/kendo-react-common';\n/**\n * Represents the RatingItem component.\n */\nexport var RatingItem = React.forwardRef(function (props, ref) {\n var target = React.useRef(null);\n var element = React.useRef(null);\n var dir = useDir(element, props.dir);\n React.useImperativeHandle(target, function () { return ({\n element: element.current,\n props: props,\n value: props.value\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var handleClick = React.useCallback(function (event) {\n if (props.onClick) {\n props.onClick.call(undefined, {\n value: props.value,\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onClick, props.value]);\n var handleKeyDown = React.useCallback(function (event) {\n if (props.onKeyDown) {\n props.onKeyDown.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onKeyDown]);\n var handleFocus = React.useCallback(function (event) {\n if (props.onFocus) {\n props.onFocus.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onFocus]);\n var handleBlur = React.useCallback(function (event) {\n if (props.onBlur) {\n props.onBlur.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onBlur]);\n var handleMouseMove = React.useCallback(function (event) {\n if (props.onMouseMove) {\n props.onMouseMove.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onMouseMove]);\n var handleMouseEnter = React.useCallback(function (event) {\n if (props.onMouseEnter) {\n props.onMouseEnter.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onMouseEnter]);\n var handleMouseLeave = React.useCallback(function (event) {\n if (props.onMouseLeave) {\n props.onMouseLeave.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onMouseLeave]);\n return (React.createElement(\"span\", { id: props.id, ref: element, dir: dir, \"data-half\": props.half, tabIndex: props.tabIndex, title: props.title, style: props.style, className: classNames('k-rating-item', {\n 'k-rtl': dir === 'rtl',\n 'k-selected': props.selected,\n 'k-hover': props.hovered\n }, props.className), onClick: handleClick, onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: handleBlur, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: handleMouseMove }, props.children));\n});\nvar propTypes = {\n id: PropTypes.string,\n icon: PropTypes.any,\n dir: PropTypes.oneOf(['ltr', 'rtl']),\n title: PropTypes.string,\n value: PropTypes.number,\n half: PropTypes.bool,\n selected: PropTypes.bool,\n hovered: PropTypes.bool\n};\nvar defaultProps = {\n dir: 'ltr'\n};\nRatingItem.displayName = 'KendoReactRatingItem';\n// TODO: delete casting when @types/react is updated!\nRatingItem.propTypes = propTypes;\nRatingItem.defaultProps = defaultProps;\n","/**\n * @hidden\n */\nexport var toRound = function (num, base) {\n if (num % 1) {\n var percent = Math.pow(10, (base.toString().split('.')[1] || base.toString().split('.')[0]).length);\n return Math.round(num * percent) / percent;\n }\n return num;\n};\n// Opting out of JS `modulo` calculation due to floating-point problems in JS\n// We're looking for the reminder - R.\n// x / y = a + R\n// R = (x / y) - a | *y\n// R = x - (y * a)\n// : a = Math.floor(x /y );\n/**\n * @hidden\n */\nexport var getRemainder = function (x, y) { return x - (y * Math.floor(x / y)); };\n/**\n * @hidden\n */\nexport var isHalf = function (index, value, step) {\n return (toRound(index - step, step) < value) && (value < index);\n};\n/**\n * @hidden\n */\nexport var isSelected = function (index, value, step, selection) {\n if (value === null) {\n return false;\n }\n if (selection === 'continues') {\n return isHalf(index, value, step)\n ? toRound(index - step / 2, step / 2) <= value\n : index <= value;\n }\n if (selection === 'single') {\n return isHalf(index, value, step)\n ? toRound(index - step / 2, step / 2) === value\n : index === value;\n }\n return false;\n};\n/**\n * @hidden\n */\nexport var calcIsFirstHalf = function (dir, rect, clientX) {\n return dir === 'ltr'\n ? clientX < (rect.x + (rect.width / 2))\n : clientX > (rect.x + (rect.width / 2));\n};\n/**\n * @hidden\n */\nexport var isCorrectValue = function (min, max, step, value) {\n for (var i = min; i <= max; i += step) {\n if (value === i) {\n return true;\n }\n }\n return false;\n};\n","import { toRound } from './utils';\n/**\n * @hidden\n */\nexport var RATING_ACTION;\n(function (RATING_ACTION) {\n RATING_ACTION[\"select\"] = \"select\";\n RATING_ACTION[\"deselect\"] = \"deselect\";\n RATING_ACTION[\"increase\"] = \"increase\";\n RATING_ACTION[\"decrease\"] = \"decrease\";\n RATING_ACTION[\"min\"] = \"min\";\n RATING_ACTION[\"max\"] = \"max\";\n RATING_ACTION[\"reset\"] = \"reset\";\n})(RATING_ACTION || (RATING_ACTION = {}));\n/**\n * @hidden\n */\nexport var ratingReducer = function (state, action) {\n switch (action.type) {\n case RATING_ACTION.select:\n if (action.payload === undefined || action.step === undefined) {\n return state;\n }\n if (action.payload === state) {\n return null;\n }\n return action.payload >= action.min\n ? action.payload < action.max\n ? toRound(action.payload, action.step)\n : action.max\n : action.min;\n case RATING_ACTION.deselect:\n return null;\n case RATING_ACTION.increase:\n if (action.step === undefined) {\n return state;\n }\n if (state < action.min) {\n return action.min;\n }\n return state + action.step < action.max\n ? toRound(state + action.step, action.step)\n : action.max;\n case RATING_ACTION.decrease:\n if (action.step === undefined) {\n return state;\n }\n return toRound(state - action.step, action.step) >= action.min\n ? toRound(state - action.step, action.step)\n : action.min;\n case RATING_ACTION.min:\n if (action.step === undefined) {\n return state;\n }\n return action.min;\n case RATING_ACTION.max:\n return action.max;\n case RATING_ACTION.reset:\n return null;\n default:\n return state;\n }\n};\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 * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, useDir, Keys, getTabIndex, createPropsContext, usePropsContext } from '@progress/kendo-react-common';\nimport { RatingItem } from './RatingItem';\nimport { ratingReducer, RATING_ACTION } from './rating-reducer';\nimport { isSelected, isHalf, calcIsFirstHalf, isCorrectValue, toRound, getRemainder } from './utils';\n/**\n * @hidden\n */\nvar useRating = function (defaultValue, args, callback) {\n var _a = React.useState(defaultValue), state = _a[0], setState = _a[1];\n var handleDispatchAction = function (action) {\n var newState = ratingReducer(args.state || state, __assign(__assign({}, action), args));\n if (callback) {\n callback(newState, action.event);\n }\n setState(newState);\n };\n return [state, handleDispatchAction];\n};\n/**\n * Represents the PropsContext of the `Rating` component.\n * Used for global configuration of all `Rating` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var RatingPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact Rating component]({% slug overview_rating %}).\n *\n * Accepts properties of type [RatingProps]({% slug api_inputs_ratingprops %}).\n * Obtaining the `ref` returns an object of type [RatingHandle]({% slug api_inputs_ratinghandle %}).\n */\nexport var Rating = React.forwardRef(function (directProps, ref) {\n var _a, _b, _c, _d;\n var props = usePropsContext(RatingPropsContext, directProps);\n var target = React.useRef(null);\n var ratingRef = React.useRef(null);\n var dir = useDir(ratingRef, props.dir);\n React.useImperativeHandle(target, function () { return ({\n element: ratingRef.current,\n props: props\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var handleChange = React.useCallback(function (newValue, event) {\n if (props.onChange && target.current) {\n props.onChange.call(undefined, {\n value: newValue,\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onChange]);\n var min = React.useMemo(function () { return props.min !== undefined ? props.min : defaultProps.min; }, [props.min]);\n var max = React.useMemo(function () { return props.max !== undefined ? props.max : defaultProps.max; }, [props.max]);\n var precision = React.useMemo(function () { return props.precision || defaultProps.precision; }, [props.precision]);\n var step = React.useMemo(function () { return props.step !== undefined ? props.step : defaultProps.step; }, [props.step]);\n var readonly = React.useMemo(function () { return props.readonly || defaultProps.readonly; }, [props.readonly]);\n var disabled = React.useMemo(function () { return props.disabled || defaultProps.disabled; }, [props.disabled]);\n var Item = React.useMemo(function () { return props.item || defaultProps.item; }, [props.item]);\n var _e = useRating(props.defaultValue || defaultProps.defaultValue, {\n state: props.value,\n min: min,\n max: max,\n step: precision === 'half' ? step / 2 : step\n }, handleChange), stateValue = _e[0], dispatchStateValue = _e[1];\n var _f = useRating(null, {\n state: props.value,\n min: min,\n max: max,\n step: precision === 'half' ? step / 2 : step,\n precision: precision\n }), stateHover = _f[0], dispatchStateHover = _f[1];\n var value = React.useMemo(function () { return props.value || stateValue; }, [props.value, stateValue]);\n var hoveredValue = React.useMemo(function () { return stateHover; }, [stateHover]);\n var selection = React.useMemo(function () { return props.selection || defaultProps.selection; }, [props.selection]);\n var base = React.useMemo(function () { return step / (precision === 'half' ? 2 : 1); }, [step, precision]);\n var handleItemClick = React.useCallback(function (event) {\n if (!event.target || !event.target.element || readonly || disabled) {\n return;\n }\n if (precision === 'half') {\n var rect = event.target.element.getBoundingClientRect();\n var isFirstHalf = calcIsFirstHalf(dir ? dir : 'ltr', rect, event.syntheticEvent.clientX);\n var payload = isFirstHalf ? toRound(event.target.value - (step / 2), base) : event.target.value;\n dispatchStateValue({ type: RATING_ACTION.select, payload: payload, event: event.syntheticEvent });\n }\n else {\n dispatchStateValue({ type: RATING_ACTION.select, payload: event.target.value, event: event.syntheticEvent });\n }\n if (props.onClick) {\n var ev = {\n value: value,\n target: target.current,\n syntheticEvent: event.syntheticEvent\n };\n props.onClick.call(undefined, ev);\n }\n }, [props.onClick, dispatchStateValue, value]);\n var handleKeyDown = React.useCallback(function (syntheticEvent) {\n if (readonly || disabled) {\n return;\n }\n switch (syntheticEvent.keyCode) {\n case Keys.right:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: dir === 'rtl' ? RATING_ACTION.decrease : RATING_ACTION.increase, event: syntheticEvent\n });\n break;\n case Keys.left:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: dir === 'rtl' ? RATING_ACTION.increase : RATING_ACTION.decrease, event: syntheticEvent\n });\n break;\n case Keys.home:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: dir === 'rtl' ? RATING_ACTION.min : RATING_ACTION.max, event: syntheticEvent\n });\n break;\n case Keys.end:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: dir === 'rtl' ? RATING_ACTION.max : RATING_ACTION.min, event: syntheticEvent\n });\n break;\n case Keys.esc:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: RATING_ACTION.deselect, event: syntheticEvent\n });\n break;\n default:\n break;\n }\n if (props.onKeyDown) {\n props.onKeyDown.call(undefined, {\n value: value,\n target: target.current,\n syntheticEvent: syntheticEvent\n });\n }\n }, [props.onKeyDown, dispatchStateValue, value]);\n var handleFocus = React.useCallback(function (syntheticEvent) {\n if (props.onFocus) {\n var ev = {\n target: target.current,\n syntheticEvent: syntheticEvent\n };\n props.onFocus.call(undefined, ev);\n }\n }, [props.onFocus]);\n var handleBlur = React.useCallback(function (syntheticEvent) {\n if (props.onBlur) {\n var ev = {\n target: target.current,\n syntheticEvent: syntheticEvent\n };\n props.onBlur.call(undefined, ev);\n }\n }, [props.onBlur]);\n var handleItemMouseMove = React.useCallback(function (event) {\n if (!event.target || !event.target.element) {\n return;\n }\n if (precision === 'half') {\n var rect = event.target.element.getBoundingClientRect();\n var isFirstHalf = calcIsFirstHalf(dir ? dir : 'ltr', rect, event.syntheticEvent.clientX);\n var payload = isFirstHalf ? event.target.value - (step / 2) : event.target.value;\n dispatchStateHover({ type: RATING_ACTION.select, payload: payload, event: event.syntheticEvent });\n }\n else {\n dispatchStateHover({ type: RATING_ACTION.select, payload: event.target.value, event: event.syntheticEvent });\n }\n }, [precision, step, dir]);\n var handleMouseLeave = React.useCallback(function (event) {\n dispatchStateHover({ type: RATING_ACTION.reset, event: event.syntheticEvent });\n }, []);\n var items = [];\n var remainder = getRemainder(toRound(max - min, base), step);\n for (var i = min; i <= max; i = toRound(i + step, base)) {\n var itemValue = toRound(i + remainder, base);\n var half = precision === 'half'\n ? isHalf(itemValue, hoveredValue !== null ? hoveredValue : (value !== null ? value : 0), step)\n : false;\n var selectedValue = isSelected(itemValue, value, step, selection);\n var selected = isSelected(itemValue, hoveredValue !== null ? hoveredValue : value, step, selection);\n var hovered = isSelected(itemValue, hoveredValue, step, selection);\n items.push(React.createElement(Item, { key: itemValue, value: itemValue, dir: dir, title: String(half ? toRound(itemValue - (step / 2), base) : itemValue), icon: props.icon, half: half, selected: selectedValue || selected, hovered: hovered, onClick: handleItemClick, onMouseMove: handleItemMouseMove, onMouseLeave: handleMouseLeave },\n half && (React.createElement(\"span\", { className: 'k-rating-precision-complement', style: (_a = { width: '12px' }, _a[dir === 'rtl' ? 'right' : 'left'] = '50%', _a) },\n React.createElement(\"span\", { className: classNames('k-icon', (_b = {\n 'k-i-star-outline': !props.icon\n },\n _b[\"\".concat(props.icon, \"-outline\")] = props.icon,\n _b)) }))),\n half && (React.createElement(\"span\", { className: 'k-rating-precision-part', style: { width: '12px' } },\n React.createElement(\"span\", { className: classNames('k-icon', (_c = {\n 'k-i-star': !props.icon\n },\n _c[\"\".concat(props.icon)] = props.icon,\n _c)) }))),\n half && (React.createElement(\"span\", { style: { width: '24px', height: '24px', display: 'block' } })),\n !half && (React.createElement(\"span\", { className: classNames('k-icon', (_d = {\n 'k-i-star': !props.icon && (hovered || (selected && !hovered)),\n 'k-i-star-outline': !props.icon && (!hovered)\n },\n _d[\"\".concat(props.icon)] = props.icon && (hovered || (selected && !hovered)),\n _d[\"\".concat(props.icon, \"-outline\")] = props.icon && (!hovered),\n _d)) }))));\n }\n return (React.createElement(\"span\", { id: props.id, style: props.style, ref: ratingRef, role: \"slider\", dir: dir, tabIndex: getTabIndex(props.tabIndex, props.disabled, undefined), className: classNames('k-rating k-widget', {\n 'k-rtl': dir === 'rtl',\n 'k-state-readonly': readonly,\n 'k-disabled': disabled\n }, props.className), onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: handleBlur, \"aria-valuemin\": min, \"aria-valuemax\": max, \"aria-valuenow\": value !== null ? value : undefined, \"aria-disabled\": disabled ? 'true' : undefined, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy },\n React.createElement(\"input\", { id: 'rating', className: 'k-hidden', readOnly: readonly, disabled: disabled }),\n React.createElement(\"span\", { className: 'k-rating-container' }, items),\n props.label &&\n React.createElement(\"span\", { className: 'k-rating-label' }, props.label)));\n});\nvar propTypes = {\n id: PropTypes.string,\n dir: PropTypes.oneOf(['ltr', 'rtl']),\n selection: PropTypes.oneOf(['continues', 'single']),\n precision: PropTypes.oneOf(['item', 'half']),\n value: function (props, propName, componentName) {\n if (props.value && props.min && props.max && props.step) {\n var correctValue = props.precision === 'half'\n ? isCorrectValue(props.min, props.max, props.step / 2, props.value)\n : isCorrectValue(props.min, props.max, props.step, props.value);\n if (!correctValue && props.precision === 'half') {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n The value of the { value } property is not correct, please check your values.\\n \"));\n }\n }\n return null;\n },\n defaultValue: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n step: function (props, propName, componentName) {\n if (props.step !== undefined && props.step <= 0) {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n The value of the { step } property is cannot be equal or less than \\\"0\\\", please check your values.\\n \"));\n }\n return null;\n },\n hovered: PropTypes.number,\n label: PropTypes.string,\n readonly: PropTypes.bool,\n disabled: PropTypes.bool,\n half: PropTypes.bool,\n icon: PropTypes.string,\n ariaDescribedBy: PropTypes.string\n};\nvar defaultProps = {\n dir: 'ltr',\n min: 1,\n max: 5,\n step: 1,\n item: RatingItem,\n defaultValue: null,\n readonly: false,\n disabled: false,\n selection: 'continues',\n precision: 'item'\n};\nRating.displayName = 'KendoReactRating';\n// TODO: delete casting when @types/react is updated!\nRating.propTypes = propTypes;\nRating.defaultProps = defaultProps;\n","import { callApiWithAuthorization } from \"../../API/CallApi\";\r\n\r\nexport async function getNode(id, label) {\r\n\tconst url = \"/api/v0/nodes/\" + id;\r\n\tconst query = label ? \"?label=\" + label : \"\";\r\n\tconst resp = await callApiWithAuthorization(url + query);\r\n\tconst data = await resp.json();\r\n\treturn data;\r\n}\r\n\r\nexport async function getAll(fromId, rel, label) {\r\n\tconst resp = await callApiWithAuthorization(\"/api/v0/nodes/\" + fromId + \"/\" + rel + \"/\" + label);\r\n\tconst data = resp.json();\r\n\treturn data;\r\n}\r\n\r\nexport async function createNode(label, properties) {\r\n\tconst resp = await callApiWithAuthorization(\"/api/v0/nodes\", {\r\n\t\tmethod: 'POST',\r\n\t\theaders: {\r\n\t\t\t\"Content-Type\": 'application/json'\r\n\t\t},\r\n\t\tbody: JSON.stringify({\r\n\t\t\tlabel: label,\r\n\t\t\tproperties: properties\r\n\t\t})\r\n\t})\r\n\tconst data = resp.json();\r\n\treturn data;\r\n}\r\n\r\n\r\nexport async function updateNode(label, id, properties) {\r\n\tconst resp = await callApiWithAuthorization(\"/api/v0/nodes\", {\r\n\t\tmethod: 'Put',\r\n\t\theaders: {\r\n\t\t\t\"Content-Type\": 'application/json'\r\n\t\t},\r\n\t\tbody: JSON.stringify({\r\n\t\t\tid: id,\r\n\t\t\tlabel: label,\r\n\t\t\tproperties: properties\r\n\t\t})\r\n\t})\r\n\tconst data = resp.json();\r\n\treturn data;\r\n}\r\n\r\nexport async function deleteNode(id, label) {\r\n\tconst url = \"/api/v0/nodes/\" + id;\r\n\tconst query = label ? \"?label=\" + label : \"\";\r\n\tawait callApiWithAuthorization(url + query,{\r\n\t\tmethod: 'DELETE',\r\n\t\theaders: {\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t}\r\n\t});\r\n}\r\n\r\nexport function call(url, method) {\r\n\tasync function withParams(params) {\r\n\t\tconst resp = await callApiWithAuthorization('/api/v0/' + url, {\r\n\t\t\tmethod: method,\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(params)\r\n\t\t})\r\n\r\n\t\tconst data = resp.json();\r\n\t\treturn data;\r\n\t}\r\n\r\n\treturn {\r\n\t\twith: withParams\r\n\t}\r\n}\r\n\r\nexport async function getNodesByLabel(label) {\r\n\tconst request = await callApiWithAuthorization(\"/api/v0/nodes?label=\"+label);\r\n\tconst response = await request.json();\r\n\treturn response;\r\n}","import React from \"react\"\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\"\r\nimport { Rating, RatingItem } from \"@progress/kendo-react-inputs\"\r\nimport { updateNode } from \"../../Helpers/Nodes\"\r\nimport InnerLoader from \"../Loader/InnerLoader\"\r\nimport { OverlayLoader } from \"../Loader/OverlayLoader\"\r\n\r\nexport const SavingChanges = () => {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport const GetClassName = (props) => {\r\n let className = \"btn btn-danger\"\r\n if (props.selected) {\r\n className = \"btn btn-primary\"\r\n } else if (props.value > 8) {\r\n className = \"btn btn-success\"\r\n } else if (props.value > 6 && props.value < 9) {\r\n className = \"btn btn-warning\"\r\n }\r\n return className\r\n}\r\n\r\nexport const CustomRatingComponent = (props) => {\r\n const className = GetClassName(props)\r\n return (\r\n \r\n
    \r\n {props.value}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport const RatingComponent = ({ value, onUpdate, onDismiss, savingChanges }) => {\r\n return (\r\n
    \r\n

    How is your experience using Codeless ONE?

    \r\n \r\n
    \r\n onDismiss(true)}\r\n >\r\n Remind me later\r\n \r\n {savingChanges && }\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport const ImproveExperienceComponent = ({ value, onUpdate, onNext, onDismiss, savingChanges }) => {\r\n return (\r\n
    \r\n \r\n \r\n \r\n {savingChanges && }\r\n onDismiss(true)}\r\n >\r\n Remind me later\r\n \r\n \r\n Continue\r\n \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport const RecommendedRatingComponent = ({ value, onUpdate, onDismiss, onSave, savingChanges }) => {\r\n\r\n return (\r\n
    \r\n

    How likely are you to recommend CodelessONE to your friends and colleagues?

    \r\n \r\n
    \r\n Not likely\r\n Extremely likely\r\n
    \r\n \r\n {savingChanges && }\r\n onDismiss(true)}\r\n >\r\n Remind me later\r\n \r\n onSave(false)}\r\n >\r\n Submit\r\n \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport const RatingDialog = (props) => {\r\n const { user, onClose } = props\r\n\r\n const [savingChanges, setSavingChanges] = React.useState(false)\r\n const [rating, setRating] = React.useState(user.rating ? parseInt(user.rating) : 0)\r\n const [recommendRating, setRecommendRating] = React.useState(user.recommendRating ? parseInt(user.recommendRating) : 0)\r\n const [showRecommendedRating, setShowRecommendedRating] = React.useState(false)\r\n const [showImproveExperienceBy, setShowImproveExperienceBy] = React.useState(true)\r\n const [improveExperienceBy, setImproveExperienceBy] = React.useState(user.improveExperienceBy || \"\")\r\n\r\n const handleRatingChange = (event) => {\r\n setRating(event.value)\r\n }\r\n\r\n const handleImproveExperienceByChange = (event) => {\r\n setImproveExperienceBy(event.target.value)\r\n }\r\n\r\n const handleRecommendedRatingChange = (event) => {\r\n setRecommendRating(event.value)\r\n }\r\n\r\n const handleContinue = () => {\r\n setShowRecommendedRating(true)\r\n setShowImproveExperienceBy(false)\r\n }\r\n\r\n const saveUserFeedback = (remindMelaterForRating) => {\r\n setSavingChanges(true)\r\n const properties = {\r\n rating: rating,\r\n improveExperienceBy: improveExperienceBy,\r\n remindMelaterForRating: remindMelaterForRating,\r\n recommendRating: recommendRating\r\n }\r\n updateNode(\"User\", user.id, properties)\r\n setSavingChanges(false)\r\n onClose()\r\n }\r\n\r\n return (\r\n \r\n {rating === 0 &&\r\n \r\n }\r\n {(rating > 0 && showImproveExperienceBy) &&\r\n \r\n }\r\n {showRecommendedRating &&\r\n \r\n }\r\n \r\n )\r\n}","import React from 'react';\r\nimport { Fragment } from 'react';\r\nimport { useContext } from 'react';\r\nimport { HelpCenterContext } from './Context/HelpCenterContext';\r\nimport { helpCenterContent } from \"./Data\"\r\n\r\nexport const SearchComponent = () => {\r\n const { state, dispatch } = useContext(HelpCenterContext)\r\n\r\n const handleSearch = (event) => {\r\n const Articles = []\r\n const Videos = []\r\n\r\n // filter helpCenterContent based on search keyword\r\n // the text, description, and tag of Articles and Videos will be searched\r\n const content = helpCenterContent.filter(item => {\r\n return item.Article.filter(article => {\r\n return article.text.toLowerCase().includes(event.target.value.toLowerCase()) ||\r\n article.description.toLowerCase().includes(event.target.value.toLowerCase()) ||\r\n article.tag.toLowerCase().includes(event.target.value.toLowerCase())\r\n }).length > 0 || item.Video.filter(video => {\r\n return video.text.toLowerCase().includes(event.target.value.toLowerCase()) ||\r\n video.description.toLowerCase().includes(event.target.value.toLowerCase()) ||\r\n video.tag.toLowerCase().includes(event.target.value.toLowerCase())\r\n }).length > 0\r\n })\r\n\r\n for (let item of content) {\r\n for (let article of item.Article) {\r\n //filter out articles that doesn't includes event.target.value\r\n if (article.text.toLowerCase().includes(event.target.value.toLowerCase()) ||\r\n article.description.toLowerCase().includes(event.target.value.toLowerCase()) ||\r\n article.tag.toLowerCase().includes(event.target.value.toLowerCase())\r\n ) {\r\n Articles.push(article)\r\n }\r\n }\r\n for (let video of item.Video) {\r\n debugger\r\n //filter out video that doesn't includes event.target.value\r\n if (video.text.toLowerCase().includes(event.target.value.toLowerCase()) ||\r\n video.description.toLowerCase().includes(event.target.value.toLowerCase()) ||\r\n video.tag.toLowerCase().includes(event.target.value.toLowerCase())\r\n ) {\r\n Videos.push(video)\r\n //filer video that order 1 and 3\r\n // if (video.order === 1 || video.order === 3) {\r\n // }\r\n }\r\n }\r\n }\r\n let data = [...Articles, ...Videos]\r\n const uniqueSet = new Set(data);\r\n data = [...uniqueSet];\r\n dispatch({\r\n type: \"SET_SEARCH_KEYWORD\",\r\n payload: {\r\n searchKeyword: event.target.value,\r\n searchResult: data\r\n }\r\n })\r\n }\r\n return (\r\n \r\n {(!state.showDetailComponent && !state.showContactUsOptions) &&\r\n
    \r\n How can we help?\r\n \r\n
    \r\n }\r\n
    \r\n )\r\n}","import React from 'react';\r\nimport { Fragment } from 'react';\r\nimport { useState } from 'react';\r\nimport { useContext } from 'react';\r\nimport { HelpCenterContext } from './Context/HelpCenterContext';\r\nimport { VideoArticleBlocks } from './VideoArticleBlocks';\r\n\r\nexport const SearchResults = () => {\r\n const { state, dispatch } = useContext(HelpCenterContext)\r\n const [slicevalue, setSlicevalue] = useState(3)\r\n\r\n const getData = () => {\r\n const videoResult = state.searchResult.filter(item => item.tag === \"Video\").slice(0, slicevalue)\r\n const articleResult = state.searchResult.filter(item => item.tag === \"Article\").slice(0, slicevalue)\r\n const results = articleResult.length + videoResult.length\r\n return {\r\n articleResult,\r\n videoResult,\r\n results\r\n }\r\n }\r\n return (\r\n \r\n {state.searchKeyword !== \"\" &&\r\n
    \r\n {state.searchResult.length > 0 ?\r\n \r\n Search Results ({state.searchResult.length})\r\n
    \r\n {getData().articleResult.map(item => (\r\n
    dispatch({ type: \"TOGGLE_DETAIL_COMPONENT\", payload: item })}>\r\n {item.text}\r\n {item.keyword} - {item.tag}\r\n
    \r\n ))}\r\n \r\n
    \r\n
    \r\n :\r\n \r\n Search Results ({state.searchResult.length})\r\n

    No results found for {state.searchKeyword}

    \r\n
    \r\n }\r\n {(state.searchResult.length > 5 && state.searchResult.length !== (state.searchResult.slice(0, slicevalue).length)) &&\r\n

    setSlicevalue(slicevalue + 3)} className=\"text-primary mt-3\">See more search results...

    \r\n }\r\n
    \r\n }\r\n
    \r\n )\r\n}","import React, { useContext } from \"react\"\r\nimport { Fragment } from \"react\"\r\nimport { HelpCenterContext } from \"./Context/HelpCenterContext\"\r\n\r\nexport const BottomSection = () => {\r\n const { state, dispatch } = useContext(HelpCenterContext)\r\n return (\r\n \r\n {\r\n !state.showContactUsOptions &&\r\n
    \r\n {(state.user.rating === \"0\" && state.user.remindMelaterForRating === \"false\") ?\r\n \r\n :\r\n \r\n }\r\n \r\n
    \r\n }\r\n
    \r\n )\r\n}","import React, { useContext } from \"react\"\r\nimport { HelpCenterContext } from \"./Context/HelpCenterContext\"\r\n\r\nexport const TopSection = () => {\r\n const { dispatch } = useContext(HelpCenterContext)\r\n return (\r\n
    \r\n
    Help Center
    \r\n dispatch({ type: \"TOGGLE_HELPCENTER\" })} className=\"k-button-icon k-icon k-i-x\">\r\n
    \r\n )\r\n}","import React, { Fragment, useEffect } from 'react'\r\nimport Scrollable from '../Edit/Scrollable';\r\nimport * as helpCenterContent from \"./Data\"\r\nimport { VideoArticleLists } from './VideoArticleLists';\r\nimport { VideoArticleBlocks } from './VideoArticleBlocks';\r\nimport { VideoArticleDetail } from './VideoArticleDetail';\r\nimport { ContactUsOptions } from './ContactUsOptions';\r\nimport { useContext } from 'react';\r\nimport { HelpCenterContext } from './Context/HelpCenterContext';\r\nimport { RatingDialog } from '../SurveyDialogs/RatingDialog';\r\nimport { SearchComponent } from './SearchComponent';\r\nimport { SearchResults } from './SearchResults';\r\nimport { BottomSection } from './BottomSection';\r\nimport { TopSection } from './TopSection';\r\nimport { SubmitIdeaDialog } from './HubspotForms/SubmitIdea';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { GlobalContext } from '../../../Renderers/GlobalContext';\r\n\r\nconst HelpCenter = ({ helpCenterFor, user }) => {\r\n const { state, dispatch } = useContext(HelpCenterContext)\r\n const { organization } = useContext(GlobalContext).state\r\n\r\n React.useEffect(() => {\r\n const dataItem = helpCenterContent[helpCenterFor]\r\n dispatch({ type: \"SET_USER\", payload: user })\r\n dispatch({ type: \"SET_DATAITEM\", payload: dataItem })\r\n dispatch({ type: \"SET_HELPCENTER_FOR\", payload: helpCenterFor })\r\n\r\n }, []);\r\n\r\n const { t, i18n } = useTranslation([\r\n \"common/help_center\"\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n useEffect(() => {\r\n // i18n.changeLanguage(organization.platformLanguage)\r\n }, [])\r\n\r\n return (\r\n \r\n dispatch({ type: \"TOGGLE_HELPCENTER\" })}\r\n >\r\n {t(\"help_center_button_label\")}\r\n \r\n {state.showRatingDialog && dispatch({ type: \"TOGGLE_RATING_DIALOG\" })} />}\r\n {state.showSubmitIdeaDialog && }\r\n {\r\n state.showHelpCenter &&\r\n
    \r\n \r\n \r\n {(state.showDetailComponent || state.showContactUsOptions) &&\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n \r\n {(!state.showDetailComponent && !state.showContactUsOptions) &&\r\n \r\n \r\n {state.searchKeyword === \"\" &&\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 HelpCenter\r\n","import React, { useState, useRef } from \"react\";\r\nimport { Dropdown, ButtonGroup, Button } from \"react-bootstrap\";\r\nimport HelpCenter from \"../Shared/HelpCenter/HelpCenter\";\r\nimport { HelpCenterContextProvider } from \"../Shared/HelpCenter/Context/HelpCenterContext\";\r\nimport { HubspotProvider } from \"@aaronhayes/react-use-hubspot-form\";\r\nconst Header = ({\r\n\theader,\r\n\theaderLinkText,\r\n\theaderLinkClicked,\r\n\theaderIcon,\r\n\theaderDescription,\r\n\tPermissionText,\r\n\tchildren,\r\n\tactionText,\r\n\tactionTitle,\r\n\tactionClicked,\r\n\tactionDisabled,\r\n\tactionTestId,\r\n\tshowAction,\r\n\tshowOrgnization,\r\n\tactionStyle,\r\n\tbuttonLeft,\r\n\taction2Text,\r\n\taction2Icon,\r\n\taction2Clicked,\r\n\taction2Disabled,\r\n\taction3Text,\r\n\taction3Icon,\r\n\taction3Clicked,\r\n\taction4Text,\r\n\taction4Icon,\r\n\tshowHelpCenter,\r\n\thelpCenterFor,\r\n\taction4Clicked,\r\n\tallowBackButton,\r\n\tbackButtonClicked,\r\n\tbackButtonText,\r\n\thideBorder,\r\n\tshowDeleteAction,\r\n\tdeleteActionText,\r\n\tdeleteActionClicked,\r\n\tuser\r\n}) => {\r\n\tconst [orgPopup, setOrgPopup] = useState(false);\r\n\r\n\tconst blurTimeoutRef = useRef();\r\n\tconst contentRef = useRef();\r\n\r\n\tconst onOpen = (e) => {\r\n\t\tcontentRef.current.focus();\r\n\t};\r\n\tconst onFocus = () => {\r\n\t\tclearTimeout(blurTimeoutRef.current);\r\n\t};\r\n\tconst onBlurTimeout = () => {\r\n\t\tsetOrgPopup(false);\r\n\t};\r\n\tconst onBlur = () => {\r\n\t\tclearTimeout(blurTimeoutRef.current);\r\n\t\tblurTimeoutRef.current = setTimeout(onBlurTimeout, 200);\r\n\t};\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{header ?\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{headerIcon}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{header} {headerLinkText}\r\n\t\t\t\t\t\t\t\t\t{headerDescription &&
    {headerDescription}
    }\r\n\t\t\t\t\t\t\t\t\t{PermissionText && {PermissionText}}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\t{showAction && (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{action3Text || action4Text ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{actionText}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{action3Text && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{action3Icon && }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{action3Text}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t{action4Text && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{action4Icon && }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{action4Text}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t {actionText}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{action2Text && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showDeleteAction && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{allowBackButton && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    {children}
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{showHelpCenter && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t)\r\n};\r\n\r\n/**\r\n * \r\n * Content component\r\n * @param {Object} props\r\n * @param {boolean} props.fullHeight\r\n * @returns React.Component\r\n */\r\nconst Content = (props) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t{props.children}\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nconst PageContainer = (props) => {\r\n\tlet { children } = props;\r\n\treturn
    {children}
    ;\r\n};\r\n\r\nexport { Header, Content, PageContainer };\r\n","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function getSubscriptions() {\r\n const response = await callApiWithAuthorization(\"/api/v0/subscriptions\");\r\n const data = await response.json();\r\n return data;\r\n}\r\n\r\nexport async function getSubscription(id) {\r\n const response = await callApiWithAuthorization(\"/api/v0/subscription/\" + id);\r\n const data = await response.json();\r\n return data;\r\n}\r\n\r\nexport async function updateSubscription(id, subscription) {\r\n const response = await callApiWithAuthorization(\"/api/v0/subscription/\" + id, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(subscription),\r\n });\r\n return response;\r\n}\r\n\r\nexport async function createSubscription(subscription) {\r\n const response = await callApiWithAuthorization(\"/api/v0/subscription\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(subscription),\r\n });\r\n return response;\r\n}\r\n\r\nexport async function assignSubscriptionToUser(organizationId, userId) {\r\n let request = await callApiWithAuthorization(\"/api/v0/assignSubscription\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n organizationId: organizationId,\r\n userId: userId\r\n })\r\n })\r\n let response = await request.json()\r\n return response\r\n}\r\n\r\nexport async function removeSubscriptionFromUser(organizationId, userId) {\r\n await callApiWithAuthorization(\"/api/v0/removeSubscription\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n organizationId: organizationId,\r\n userId: userId\r\n })\r\n })\r\n}\r\n\r\nexport async function getSubscriptionAndProjects(organizationId) {\r\n let request = await callApiWithAuthorization(\"/api/v0/getSubscriptionAndProjects/\" + organizationId)\r\n let response = await request.json()\r\n return response\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Header, PageContainer, Content } from '../Drawer/PageContainer';\r\nimport Loader from '../Shared/Loader/loader';\r\nimport Alice from '../Display/Alice';\r\nimport Scrollable from '../Shared/Edit/Scrollable';\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport InnerLoader from '../Shared/Loader/InnerLoader';\r\nimport ErrorMessage from '../Shared/Error/ErrorMessage';\r\nimport { Checkbox, NumericTextBox } from '@progress/kendo-react-inputs';\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport { ButtonGroup } from \"@progress/kendo-react-buttons\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { createSubscription, getSubscriptions, updateSubscription } from '../../API/Subscription/SubscriptionHelper';\r\n\r\nconst SubscriptionPortal = () => {\r\n const [state, setState] = useState({\r\n subscriptions: [],\r\n allSubscriptions: [],\r\n loading: true,\r\n showSubscriptionDialog: false,\r\n nameError: {\r\n isValid: true,\r\n message: \"\",\r\n },\r\n subscriptionName: \"\",\r\n private: false,\r\n monthlySeatPrice: 0.0,\r\n annuallySeatPrice: 0.0,\r\n maxApps: 1,\r\n maxSeats: 2,\r\n maxPortalsPerApp: 1,\r\n maxEntitiesPerApp: 2,\r\n maxAttributesPerApp: 3,\r\n maxRelationsPerApp: 1,\r\n showPortalLogos: false,\r\n showApiPerApp: false,\r\n rolesPermission: \"Full access\",\r\n showCalculatedField: true,\r\n maxRecordsPerApp: 200,\r\n maxDatasizePerApp: 500,\r\n maxListPerApp: 10,\r\n maxChartsPerApp: 10,\r\n maxDashboardPerApp: 1,\r\n maxReportPerApp: 1,\r\n numDevInstances: 0,\r\n numTestInstances: 0,\r\n numProdInstances: 0,\r\n numRecordsInDevAndTestInstances: 0,\r\n numOfLanguages: 1,\r\n showInstances: false,\r\n showPlanning: true,\r\n showHistory: 7,\r\n toUpdateId: \"\",\r\n toDeleteSubscription: {},\r\n processingSubscription: false,\r\n disabled: true,\r\n });\r\n\r\n const saveBtn = useRef(null);\r\n const arrayFromZeroToFive = [0, 1, 2, 3, 4, 5];\r\n const arrayFromZeroTofifteen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];\r\n\r\n useEffect(() => {\r\n const fetchSubscriptions = async () => {\r\n let subscriptions = await getSubscriptions();\r\n for (let i = 0; i < subscriptions.length; i++) {\r\n subscriptions[i].indexId = i + 1;\r\n }\r\n setState((prevState) => ({\r\n ...prevState,\r\n subscriptions,\r\n allSubscriptions: subscriptions,\r\n loading: false,\r\n }));\r\n };\r\n fetchSubscriptions();\r\n }, []);\r\n\r\n const toggleSubscriptionDailog = () => {\r\n setState((prevState) => ({\r\n ...prevState,\r\n showSubscriptionDialog: !prevState.showSubscriptionDialog,\r\n subscriptionName: \"\",\r\n toUpdateId: \"\",\r\n toDeleteSubscription: {},\r\n private: false,\r\n monthlySeatPrice: 0.0,\r\n annuallySeatPrice: 0.0,\r\n maxApps: 1,\r\n maxSeats: 2,\r\n maxPortalsPerApp: 1,\r\n maxEntitiesPerApp: 2,\r\n maxAttributesPerApp: 3,\r\n maxRelationsPerApp: 1,\r\n showPortalLogos: false,\r\n showApiPerApp: false,\r\n rolesPermission: \"Full access\",\r\n showCalculatedField: true,\r\n maxRecordsPerApp: 200,\r\n maxDatasizePerApp: 500,\r\n maxListPerApp: 10,\r\n maxChartsPerApp: 10,\r\n maxDashboardPerApp: 1,\r\n maxReportPerApp: 1,\r\n showPlanning: true,\r\n showHistory: 7,\r\n nameError: {\r\n isValid: true,\r\n message: \"\",\r\n }\r\n }));\r\n };\r\n\r\n const setPropertiesOnEdit = (dataItem) => {\r\n debugger\r\n setState((prevState) => ({\r\n ...prevState,\r\n showSubscriptionDialog: true,\r\n subscriptionName: dataItem.subscriptionName,\r\n private: dataItem.private,\r\n monthlySeatPrice: dataItem.monthlySeatPrice,\r\n annuallySeatPrice: dataItem.annuallySeatPrice,\r\n maxApps: dataItem.maxApps,\r\n maxSeats: dataItem.maxSeats,\r\n maxPortalsPerApp: dataItem.maxPortalsPerApp,\r\n maxEntitiesPerApp: dataItem.maxEntitiesPerApp,\r\n maxAttributesPerApp: dataItem.maxAttributesPerApp,\r\n maxRelationsPerApp: dataItem.maxRelationsPerApp,\r\n showPortalLogos: dataItem.showPortalLogos,\r\n showApiPerApp: dataItem.showApiPerApp,\r\n rolesPermission: dataItem.rolesPermission,\r\n showCalculatedField: dataItem.showCalculatedField,\r\n maxRecordsPerApp: dataItem.maxRecordsPerApp,\r\n maxDatasizePerApp: dataItem.maxDatasizePerApp,\r\n maxListPerApp: dataItem.maxListPerApp,\r\n maxChartsPerApp: dataItem.maxChartsPerApp,\r\n maxDashboardPerApp: dataItem.maxDashboardPerApp,\r\n maxReportPerApp: dataItem.maxReportPerApp,\r\n showPlanning: dataItem.showPlanning,\r\n showHistory: dataItem.showHistory,\r\n numDevInstances: dataItem.numDevInstances,\r\n numOfLanguages: dataItem.numOfLanguages,\r\n numTestInstances: dataItem.numTestInstances,\r\n numProdInstances: dataItem.numProdInstances,\r\n numRecordsInDevAndTestInstances: dataItem.numRecordsInDevAndTestInstances,\r\n showInstances: dataItem.showInstances,\r\n toUpdateId: dataItem._id,\r\n }));\r\n };\r\n\r\n const handlePrivate = (e) => {\r\n setState((prevState) => ({ ...prevState, private: e.value }));\r\n };\r\n\r\n const handleSubscriptionName = (e) => {\r\n let { nameError } = state;\r\n let subscriptionName = e.target.value.trim();\r\n let specialCharactersEntered = /[^a-zA-Z0-9 ]/g.test(subscriptionName);\r\n if (subscriptionName === \"\") {\r\n nameError.isValid = false;\r\n nameError.message = \"Subscription name is required\";\r\n } else if (subscriptionName.match(/^\\d/)) {\r\n nameError.isValid = false;\r\n nameError.message = \"Subscription name cannot start with number\";\r\n } else if (specialCharactersEntered) {\r\n nameError.isValid = false;\r\n nameError.message = \"Subscription name cannot have special character\";\r\n } else {\r\n let exist = state.allSubscriptions.find(\r\n (item) =>\r\n item.subscriptionName\r\n .toLowerCase()\r\n .replace(/[^a-zA-Z0-9]/g, \"\") ===\r\n subscriptionName.toLowerCase().replace(/[^a-zA-Z0-9]/g, \"\")\r\n );\r\n if (exist) {\r\n nameError.isValid = false;\r\n nameError.message = \"Subscription with that name already exists\";\r\n } else {\r\n nameError.isValid = true;\r\n nameError.message = \"\";\r\n }\r\n }\r\n setState((prevState) => ({\r\n ...prevState,\r\n subscriptionName: e.target.value,\r\n nameError: nameError,\r\n }));\r\n };\r\n\r\n const handleChange = (e) => {\r\n let { name, value } = e.target;\r\n setState((prevState) => ({ ...prevState, [name]: value }));\r\n };\r\n\r\n const shouldDisable = () => {\r\n if (state.subscriptionName.trim() === \"\") {\r\n return true;\r\n } else if (!state.nameError.isValid) {\r\n return true;\r\n } else {\r\n return (\r\n state.monthlySeatPrice === null ||\r\n state.annuallySeatPrice === null ||\r\n state.maxApps === null ||\r\n state.maxSeats === null ||\r\n state.maxPortalsPerApp === null ||\r\n state.maxEntitiesPerApp === null ||\r\n state.maxAttributesPerApp === null ||\r\n state.maxRelationsPerApp === null ||\r\n state.maxRecordsPerApp === null ||\r\n state.maxDatasizePerApp === null ||\r\n state.maxListPerApp === null ||\r\n state.maxChartsPerApp === null ||\r\n state.maxDashboardPerApp === null ||\r\n state.maxReportPerApp === null\r\n );\r\n }\r\n };\r\n\r\n const onUpdate = async (e) => {\r\n e.preventDefault();\r\n saveBtn.current.disabled = true;\r\n setState((prevState) => ({ ...prevState, processingSubscription: true }));\r\n\r\n const updatedProperties = {\r\n subscriptionName: state.subscriptionName.trim(),\r\n private: state.private,\r\n monthlySeatPrice: state.monthlySeatPrice,\r\n annuallySeatPrice: state.annuallySeatPrice,\r\n maxApps: state.maxApps,\r\n maxSeats: state.maxSeats,\r\n maxPortalsPerApp: state.maxPortalsPerApp,\r\n maxEntitiesPerApp: state.maxEntitiesPerApp,\r\n maxAttributesPerApp: state.maxAttributesPerApp,\r\n maxRelationsPerApp: state.maxRelationsPerApp,\r\n rolesPermission: state.rolesPermission,\r\n showPortalLogos: state.showPortalLogos,\r\n showApiPerApp: state.showApiPerApp,\r\n showCalculatedField: state.showCalculatedField,\r\n maxRecordsPerApp: state.maxRecordsPerApp,\r\n maxDatasizePerApp: state.maxDatasizePerApp,\r\n maxListPerApp: state.maxListPerApp,\r\n maxChartsPerApp: state.maxChartsPerApp,\r\n maxDashboardPerApp: state.maxDashboardPerApp,\r\n maxReportPerApp: state.maxReportPerApp,\r\n numDevInstances: state.numDevInstances,\r\n numOfLanguages: state.numOfLanguages,\r\n numTestInstances: state.numTestInstances,\r\n numProdInstances: state.numProdInstances,\r\n numRecordsInDevAndTestInstances: state.numRecordsInDevAndTestInstances,\r\n showInstances: state.showInstances,\r\n showPlanning: state.showPlanning,\r\n showHistory: state.showHistory\r\n };\r\n\r\n await updateSubscription(state.toUpdateId, updatedProperties);\r\n\r\n const updatedSubscriptions = state.subscriptions.map(subscription =>\r\n subscription._id === state.toUpdateId\r\n ? { ...subscription, ...updatedProperties }\r\n : subscription\r\n );\r\n\r\n setState((prevState) => ({\r\n ...prevState,\r\n subscriptions: updatedSubscriptions,\r\n allSubscriptions: updatedSubscriptions,\r\n processingSubscription: false,\r\n showSubscriptionDialog: false,\r\n toUpdateId: \"\",\r\n }));\r\n };\r\n\r\n const onCreate = async (e) => {\r\n e.preventDefault();\r\n saveBtn.current.disabled = true;\r\n setState((prevState) => ({ ...prevState, processingSubscription: true }));\r\n\r\n const stripeProduct = await createProductOnStripe();\r\n\r\n const subscriptionProperties = {\r\n subscriptionName: state.subscriptionName.trim(),\r\n private: state.private,\r\n monthlySeatPrice: state.monthlySeatPrice,\r\n annuallySeatPrice: state.annuallySeatPrice,\r\n maxApps: state.maxApps,\r\n maxSeats: state.maxSeats,\r\n maxPortalsPerApp: state.maxPortalsPerApp,\r\n maxEntitiesPerApp: state.maxEntitiesPerApp,\r\n maxAttributesPerApp: state.maxAttributesPerApp,\r\n maxRelationsPerApp: state.maxRelationsPerApp,\r\n rolesPermission: state.rolesPermission,\r\n showPortalLogos: state.showPortalLogos,\r\n showApiPerApp: state.showApiPerApp,\r\n showCalculatedField: state.showCalculatedField,\r\n stripeProductId: stripeProduct.id,\r\n maxRecordsPerApp: state.maxRecordsPerApp,\r\n maxDatasizePerApp: state.maxDatasizePerApp,\r\n maxListPerApp: state.maxListPerApp,\r\n maxChartsPerApp: state.maxChartsPerApp,\r\n maxDashboardPerApp: state.maxDashboardPerApp,\r\n maxReportPerApp: state.maxReportPerApp,\r\n showPlanning: state.showPlanning,\r\n showHistory: state.showHistory,\r\n numDevInstances: state.numDevInstances,\r\n numOfLanguages: state.numOfLanguages,\r\n numTestInstances: state.numTestInstances,\r\n numProdInstances: state.numProdInstances,\r\n showInstances: state.showInstances,\r\n numRecordsInDevAndTestInstances: state.numRecordsInDevAndTestInstances,\r\n archived: false,\r\n };\r\n\r\n await createSubscription(subscriptionProperties);\r\n\r\n let updatedSubscriptions = [...state.subscriptions, subscriptionProperties];\r\n for (let i = 0; i < updatedSubscriptions.length; i++) {\r\n updatedSubscriptions[i].indexId = i + 1;\r\n }\r\n\r\n setState((prevState) => ({\r\n ...prevState,\r\n subscriptions: updatedSubscriptions,\r\n allSubscriptions: updatedSubscriptions,\r\n processingSubscription: false,\r\n showSubscriptionDialog: false,\r\n }));\r\n };\r\n\r\n const createProductOnStripe = async () => {\r\n const { subscriptionName: productName } = state;\r\n const prices = createPricesArrayForStripe();\r\n const createProductRequest = await callApiWithAuthorization(\"/api/v0/subscription/product\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n productName,\r\n prices,\r\n private: state.private,\r\n }),\r\n });\r\n const product = await createProductRequest.json();\r\n return product;\r\n };\r\n\r\n const createPricesArrayForStripe = () => {\r\n const { monthlySeatPrice, annuallySeatPrice } = state;\r\n return [\r\n {\r\n interval: \"month\",\r\n amount: Number(monthlySeatPrice),\r\n },\r\n {\r\n interval: \"year\",\r\n amount: Number(annuallySeatPrice),\r\n },\r\n ];\r\n };\r\n\r\n const searchSubscriptions = (e) => {\r\n let searchValue = e.target.value.toLowerCase();\r\n let filteredSubscriptions = state.allSubscriptions.filter(\r\n (subscription) =>\r\n subscription.subscriptionName.toLowerCase().includes(searchValue)\r\n );\r\n setState((prevState) => ({\r\n ...prevState,\r\n subscriptions: filteredSubscriptions,\r\n }));\r\n }\r\n\r\n return (\r\n \r\n \r\n {state.allSubscriptions.length !== 0 && (\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n {state.showSubscriptionDialog && (\r\n \r\n \r\n
    \r\n Name\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Private\r\n
    \r\n \r\n
    \r\n
    \r\n
    Designer Parameters
    \r\n
    \r\n
    \r\n
    \r\n Price per seat monthly (USD)\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Price per seat annually (USD)\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max apps\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max of seats per organization\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max portals per app\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max entities per app\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max attributes per entity\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max entity relations per app\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Role Management\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Portal Logos\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Number of Dev Instance\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Number of Test Instance\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Number of Prod Instance\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Number of Records in Dev & Test Instance\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Instances\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n API\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Number of Languages\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    Runtime Parameters
    \r\n
    \r\n
    \r\n
    \r\n Max records per org\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max datasize per org (in mb)\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max list per org\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max charts per org\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max dashboard per org\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Max report per org\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Calculated field\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Planning\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n History\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n {state.processingSubscription && (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n {state.toUpdateId === \"\"\r\n ? \"Create\"\r\n : \"Update\"}\r\n \r\n
    \r\n \r\n \r\n )}\r\n {\r\n state.loading ? (\r\n \r\n ) : (\r\n \r\n {state.allSubscriptions.length === 0 ? (\r\n \r\n Create subscription to manage many aspects of\r\n your business\r\n
    \r\n
    \r\n Click on{\" \"}\r\n + New Subscriptionto\r\n create your first subscription.\r\n
    \r\n ) : (\r\n \r\n \r\n \r\n (\r\n
    \r\n )}\r\n />\r\n {\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n \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\nexport default SubscriptionPortal;","import React, { Component } from \"react\";\r\nimport SubscriptionDrawer from \"../../Components/Drawer/SubscriptionDrawer\";\r\nimport SubscriptionPortal from \"../../Components/Subscription/SubscriptionPortal\";\r\n\r\nexport class SubscriptionPortalPage extends Component {\r\n render() {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\n/**\n * Represents the [KendoReact NotificationGroup component]({% slug api_notification_notificationgroup %}).\n */\nvar NotificationGroup = /** @class */ (function (_super) {\n __extends(NotificationGroup, _super);\n function NotificationGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n NotificationGroup.prototype.render = function () {\n var _a = this.props, _b = _a.style, style = _b === void 0 ? {} : _b, className = _a.className;\n return (React.createElement(\"div\", { className: 'k-notification-group' + (className ? \" \".concat(className) : ''), style: __assign({ alignItems: 'center', flexWrap: 'wrap' }, style) }, this.props.children));\n };\n /**\n * @hidden\n */\n NotificationGroup.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object\n };\n return NotificationGroup;\n}(React.Component));\nexport { NotificationGroup };\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-notification',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1656668126,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport * as licensing from '@progress/kendo-licensing';\nimport { packageMetadata } from './package-metadata';\nvar buttonTitle = 'Close';\n/**\n * Represents the [KendoReact Notification component]({% slug overview_notification %}).\n */\nvar Notification = /** @class */ (function (_super) {\n __extends(Notification, _super);\n function Notification(props) {\n var _this = _super.call(this, props) || this;\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \".concat(packageMetadata.name, \"\\n\");\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \".concat(packageMetadata.licensingDocsUrl, \" for more information.\\n\");\n console.warn(message);\n }\n return _this;\n }\n /**\n * @hidden\n */\n Notification.prototype.render = function () {\n var _this = this;\n var _a = this.props, onClose = _a.onClose, className = _a.className, _b = _a.closable, closable = _b === void 0 ? Notification.defaultProps.closable : _b, _c = _a.type, type = _c === void 0 ? Notification.defaultProps.type : _c;\n return (React.createElement(\"div\", { dir: this.props.dir, className: \"k-notification-container\" },\n React.createElement(\"div\", { className: 'k-widget k-notification' +\n (className ? \" \".concat(className) : '') +\n (type.style === 'none' ? '' : \" k-notification-\".concat(type.style)) +\n (closable ? ' k-notification-closable' : ''), style: this.props.style },\n React.createElement(\"div\", { className: \"k-notification-wrap\" },\n type.icon && React.createElement(\"span\", { className: \"k-icon k-i-\".concat(type.style) }),\n React.createElement(\"div\", { className: \"k-notification-content\" }, this.props.children),\n closable && (React.createElement(\"a\", __assign({ className: \"k-icon k-i-close\", title: buttonTitle, onClick: function (event) {\n if (onClose) {\n onClose.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n } }, (typeof closable !== 'boolean' ? closable : {}))))))));\n };\n /**\n * @hidden\n */\n Notification.propTypes = {\n className: PropTypes.string,\n closable: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n dir: PropTypes.string,\n style: PropTypes.object,\n type: PropTypes.shape({\n style: PropTypes.oneOf(['none', 'success', 'error', 'warning', 'info']),\n icon: PropTypes.bool\n }),\n onClose: PropTypes.func\n };\n /**\n * @hidden\n */\n Notification.defaultProps = {\n closable: false,\n type: {\n style: 'none',\n icon: true\n }\n };\n return Notification;\n}(React.Component));\nexport { Notification };\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n active: false,\n linkProps: {}\n};\nconst BreadcrumbItem = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n active,\n children,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'li',\n linkAs: LinkComponent = Anchor,\n linkProps,\n href,\n title,\n target,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb-item');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(prefix, className, {\n active\n }),\n \"aria-current\": active ? 'page' : undefined,\n children: active ? children : /*#__PURE__*/_jsx(LinkComponent, { ...linkProps,\n href: href,\n title: title,\n target: target,\n children: children\n })\n });\n});\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nBreadcrumbItem.defaultProps = defaultProps;\nexport default BreadcrumbItem;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport BreadcrumbItem from './BreadcrumbItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n label: 'breadcrumb',\n listProps: {}\n};\nconst Breadcrumb = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n listProps,\n children,\n label,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'nav',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb');\n return /*#__PURE__*/_jsx(Component, {\n \"aria-label\": label,\n className: className,\n ref: ref,\n ...props,\n children: /*#__PURE__*/_jsx(\"ol\", { ...listProps,\n className: classNames(prefix, listProps == null ? void 0 : listProps.className),\n children: children\n })\n });\n});\nBreadcrumb.displayName = 'Breadcrumb';\nBreadcrumb.defaultProps = defaultProps;\nexport default Object.assign(Breadcrumb, {\n Item: BreadcrumbItem\n});","import { InteractionRequiredAuthError } from \"@azure/msal-browser\"\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport { loginRequest } from '../../Auth/AuthConfig'\r\n\r\nexport async function getToken() {\r\n let tokenRequest = await callApiWithAuthorization(\"/api/v0/getOrder\", {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n }\r\n })\r\n let token = await tokenRequest.json()\r\n return token.access_token\r\n}\r\n\r\nexport async function getAccessToken(context) {\r\n const accessTokenRequest = {\r\n scopes: loginRequest.scopes,\r\n account: context.accounts[0]\r\n }\r\n try {\r\n let accessTokenResponse = await context.instance.acquireTokenSilent(accessTokenRequest)\r\n return accessTokenResponse.accessToken\r\n } catch (error) {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n alert(\"Token Expired wait untill we validate\")\r\n try {\r\n let accessTokenResponse = await context.instance.acquireTokenPopup(accessTokenRequest)\r\n return accessTokenResponse.accessToken\r\n } catch (error) {\r\n return (\"Access Token Error\")\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport async function checkAccessToken(context) {\r\n const accessTokenRequest = {\r\n scopes: loginRequest.scopes,\r\n account: context.accounts[0]\r\n }\r\n try {\r\n await context.instance.acquireTokenSilent(accessTokenRequest)\r\n return true\r\n } catch (error) {\r\n return false\r\n }\r\n}\r\n\r\nexport function getAccessTokenFromLocalStorage() {\r\n for (const key in localStorage) {\r\n const value = localStorage.getItem(key);\r\n if (value) {\r\n const jsonValue = JSON.parse(value);\r\n if (\r\n jsonValue &&\r\n typeof jsonValue === \"object\" &&\r\n jsonValue[\"credentialType\"] === \"AccessToken\"\r\n ) {\r\n return jsonValue[\"secret\"];\r\n }\r\n }\r\n }\r\n return null;\r\n}","import { getToken } from './Token';\r\n\r\nexport async function createGroup(Properties, accessToken=undefined) {\r\n let token = accessToken ? accessToken : await getToken();\r\n let request = await fetch('https://graph.microsoft.com/v1.0/groups', {\r\n method: 'POST',\r\n headers: { \r\n 'Content-Type': 'application/json',\r\n 'Content-length': '244', \r\n 'Authorization': token\r\n },\r\n body: JSON.stringify(Properties) \r\n })\r\n let result = await request.json()\r\n return result\r\n}\r\n\r\nexport async function getUserFromAD(userPrincipalName, accessToken = undefined) {\r\n let token = accessToken ? accessToken : await getToken();\r\n\r\n let request = await fetch(`https://graph.microsoft.com/v1.0/users?$filter=startswith(userPrincipalName, '${userPrincipalName}')`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": token\r\n }\r\n });\r\n\r\n let response = await request.json();\r\n\r\n return response;\r\n}\r\n\r\nexport async function getGroupMembers(groupId, accessToken=undefined) {\r\n let token = accessToken ? accessToken : await getToken();\r\n \r\n let request = await fetch(`https://graph.microsoft.com/v1.0/groups/${groupId}/members`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": token\r\n }\r\n });\r\n\r\n let response = await request.json();\r\n\r\n return response;\r\n}\r\n\r\nexport async function getGroupsOfUser(userId, accessToken=undefined) {\r\n let token = accessToken ? accessToken : await getToken();\r\n\r\n let request = await fetch(`https://graph.microsoft.com/v1.0/users/${userId}/memberOf`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": token\r\n }\r\n });\r\n\r\n let response = await request.json();\r\n\r\n return response;\r\n}\r\n\r\nexport async function getOrganisationADGroup(orgId, accessToken = undefined) {\r\n let token = accessToken ? accessToken : await getToken();\r\n\r\n let request = await fetch(`https://graph.microsoft.com/v1.0/groups?$filter=startswith(displayName, 'Org_${orgId}')`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": token\r\n }\r\n });\r\n\r\n let response = await request.json();\r\n\r\n return response;\r\n}\r\n\r\nexport async function getCurrentLoggedInUser(token = undefined) {\r\n let accessToken = token ? token : await getToken();\r\n let request = await fetch(\"https://graph.microsoft.com/v1.0/me\", {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": accessToken\r\n }\r\n })\r\n}\r\n\r\nexport async function getUserAccessLevel(userId, orgId) {\r\n \r\n let getAccessLevelRequest = await fetch(process.env.REACT_APP_DESIGNER_API_URL + \"/api/v0/getUserAccessLevel/\" + userId + \"/\" + orgId);\r\n let relationship = await getAccessLevelRequest.json();\r\n let { accessLevel } = relationship[0];\r\n return accessLevel;\r\n}\r\n\r\n\r\nexport async function getUsersofprojects(projectName,projectId){\r\n let accessToken = await getToken();\r\n let Url = `https://graph.microsoft.com/v1.0/groups?$filter=startswith(displayName,'${projectName}_Administrator_${projectId}')`;\r\n\r\n let projecRequest = await fetch(Url, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': accessToken\r\n }\r\n })\r\n\tlet projectResult = await projecRequest.json()\r\n projectResult = projectResult.value[0]\r\n if(projectResult.description.includes(\"ProjectGroup\")){\r\n \r\n let usersRequest = await fetch('https://graph.microsoft.com/v1.0/groups/'+projectResult.id+'/members', {\r\n \t\tmethod: 'GET',\r\n \t\theaders: {\r\n \t\t'Content-Type': 'application/json',\r\n \t\t'Authorization': accessToken\r\n \t\t}\r\n \t\t})\r\n\t\tlet usersResult = await usersRequest.json()\r\n let users = [] ;\r\n for (let user of usersResult.value) {\r\n if (user[\"@odata.type\"] === \"#microsoft.graph.user\") {\r\n\t\t\t\tuser.type=\"Administrator\"\r\n\t\t\t\tusers.push(user);\r\n\t\t\t}\r\n\t\t\tif (user[\"@odata.type\"] === \"#microsoft.graph.group\") {\r\n \r\n\t\t\t\tif(user.description.includes(\"ContributorGroup\")){\r\n\t\t\t\t\tlet subUsers = await getSubMembers(user.id,\"Contributor\",accessToken)\r\n if(subUsers.value.length > 0){\r\n users = [...users,...subUsers.value]\r\n }\r\n \r\n }\r\n\t\t\t\tif(user.description.includes(\"CollaboratorGroup\")){\r\n\t\t\t\t\tlet subUsers = await getSubMembers(user.id,\"Collaborator\",accessToken)\r\n if(subUsers.value.length > 0){\r\n users = [...users,...subUsers.value]\r\n }\r\n\t\t\t\t} \r\n\t\t\t}\r\n }\r\n for ( let user of users ) {\r\n user.fullName = user.givenName + \" \" + user.surname;\r\n }\r\n \r\n return users; \r\n }\r\n else{\r\n return false\r\n }\r\n}\r\n\r\nexport async function getSubMembers(id,type,accessToken) {\r\n let subUserRequest = await fetch('https://graph.microsoft.com/v1.0/groups/'+id+'/members', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': accessToken\r\n }\r\n })\r\n\tlet subUserResult = await subUserRequest.json()\r\n return subUserResult;\r\n}\r\n\r\nexport async function UpdateUser(user) {\r\n let token = await getToken();\r\n \r\n await fetch(\"https://graph.microsoft.com/v1.0/users/\"+ user.Id,{\r\n method:\"PATCH\",\r\n headers:{\r\n Authorization:\"Bearer \" + token,\r\n \"Content-Type\":\"application/json\"\r\n },\r\n body:JSON.stringify({\r\n givenName:user.firstName,\r\n surname:user.lastName,\r\n displayName: user.displayName,\r\n jobTitle:user.jobTitle\r\n })\r\n })\r\n}","import React, { Component } from \"react\";\r\nimport { updateNode } from \"../Helpers/Nodes\";\r\n\r\nclass Theme extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tuser: { ...this.props.user },\r\n\t\t};\r\n\r\n\t\tif (!this.state.user.defaultTheme) this.updateUser(\"light\");\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    Theme
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.updateUser(\"dark\");\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tDark\r\n\t\t\t\t\t\t{this.state.user.defaultTheme === \"dark\" && }\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.updateUser(\"light\");\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tLight\r\n\t\t\t\t\t\t{(this.state.user.defaultTheme === \"light\" || this.state.user.defaultTheme === null) && }\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tupdateUser = async (theme) => {\r\n\t\tlet { user } = this.state;\r\n\r\n\t\t// update database\r\n\t\tawait updateNode(\"User\", user.id, {\r\n\t\t\tdefaultTheme: theme,\r\n\t\t});\r\n\r\n\t\t// update local storage\r\n\t\tlocalStorage.setItem(\"theme\", theme);\r\n\r\n\t\t// change the css global theme\r\n\t\tdocument.documentElement.className = \"theme-\" + theme;\r\n\t\tuser.defaultTheme = theme;\r\n\r\n\t\t// set state\r\n\t\tthis.setState(user);\r\n\t};\r\n}\r\n\r\nexport default Theme;\r\n","import React, { useRef, useState } from \"react\";\r\nimport { Dropdown } from \"react-bootstrap\";\r\nimport { updateNode } from \"../../Helpers/Nodes\";\r\n\r\nconst OrganizationSelector = ({ organizations, selectedOrg, user }) => {\r\n const [orgPopup, setOrgPopup] = useState(false);\r\n\r\n const currentOrg = { ...selectedOrg }\r\n\r\n const blurTimeoutRef = useRef();\r\n\r\n const contentRef = useRef();\r\n\r\n const onFocus = () => {\r\n clearTimeout(blurTimeoutRef.current);\r\n };\r\n const onBlurTimeout = () => {\r\n setOrgPopup(false);\r\n };\r\n const onBlur = () => {\r\n clearTimeout(blurTimeoutRef.current);\r\n blurTimeoutRef.current = setTimeout(onBlurTimeout, 200);\r\n };\r\n\r\n const changeOrganization = (e) => {\r\n if (e.id === null) {\r\n window.location.href = \"/_CreateOrganization\";\r\n } else {\r\n if (user && user.id) {\r\n updateNode(\"user\", user.id, {\r\n lastOrganizationAccessed: e.name\r\n })\r\n }\r\n localStorage.setItem(\"selectedOrganization\", e.name);\r\n window.location.href = \"/\" + e.name;\r\n }\r\n };\r\n\r\n return selectedOrg ? (\r\n \r\n \r\n
    \r\n \r\n {selectedOrg.number}\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n {/*
    \r\n \r\n
    */}\r\n o.number === \"CreateOrg\"\r\n ) > -1\r\n ? 160\r\n : 200,\r\n }}\r\n >\r\n
    My organization
    \r\n {organizations\r\n .filter(\r\n (o) =>\r\n o.number !== \"CreateOrg\" &&\r\n o.roleType === \"Owner\"\r\n )\r\n .map((o, i) => (\r\n \r\n changeOrganization({\r\n id: o.id,\r\n name: o.number,\r\n })\r\n }\r\n >\r\n \r\n {o.number}\r\n \r\n ))}\r\n
    Other organizations
    \r\n {organizations\r\n .filter(\r\n (o) =>\r\n o.number !== \"CreateOrg\" &&\r\n o.roleType !== \"Owner\"\r\n )\r\n .map((o, i) => (\r\n \r\n changeOrganization({\r\n id: o.id,\r\n name: o.number,\r\n })\r\n }\r\n >\r\n \r\n {o.number}\r\n \r\n ))}\r\n \r\n {organizations.findIndex((o) => o.number === \"CreateOrg\") >\r\n -1 && (\r\n changeOrganization({ id: null })}\r\n >\r\n
    \r\n Create your own organization\r\n \r\n )}\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n );\r\n};\r\n\r\nexport default OrganizationSelector;\r\n","import moment from \"moment\";\r\n\r\nexport function convertToJSDate(neo4jDate) {\r\n const dateDetails = [];\r\n const keys = Object.keys(neo4jDate);\r\n for (let key of keys) {\r\n if (key === \"month\") {\r\n dateDetails.push(neo4jDate[key].low - 1);\r\n } else if (key !== \"timeZoneId\") {\r\n dateDetails.push(neo4jDate[key].low);\r\n }\r\n }\r\n dateDetails.pop();\r\n dateDetails.pop();\r\n return dateDetails;\r\n}\r\n\r\nexport function getMomentDifference(time, format) {\r\n let difference\r\n var currentTime = moment()\r\n var EarlierTime = moment(time)\r\n difference = currentTime.diff(EarlierTime, format)\r\n return difference\r\n}\r\n\r\nexport function CheckForInternalUser(username) {\r\n let internalUser = false\r\n internalUser = process.env.REACT_APP_WHITELIST.split(\" \").includes(username);\r\n return internalUser;\r\n}\r\n\r\nexport function isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\n\r\nexport function hasSpecialCharacters(value) {\r\n return /[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]+/.test(value);\r\n}\r\n\r\nexport function CheckForAdminAccess(username) {\r\n let adminAccess = false\r\n adminAccess = process.env.REACT_APP_ADMINLIST.split(\" \").includes(username);\r\n return adminAccess;\r\n}\r\n\r\nexport function getJSDate(neo4jDate) {\r\n const date = new Date();\r\n for (const key in neo4jDate) {\r\n switch (key) {\r\n case \"year\":\r\n date.setUTCFullYear(neo4jDate[key].low)\r\n break;\r\n case \"month\":\r\n date.setUTCMonth(neo4jDate[key].low - 1)\r\n break;\r\n case \"day\":\r\n date.setUTCDate(neo4jDate[key].low)\r\n break;\r\n case \"hour\":\r\n date.setUTCHours(neo4jDate[key].low)\r\n break;\r\n case \"minute\":\r\n date.setUTCMinutes(neo4jDate[key].low)\r\n break;\r\n case \"second\":\r\n date.setUTCSeconds(neo4jDate[key].low)\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return date;\r\n}\r\n\r\nexport async function copyToClipboard(text) {\r\n if (window.clipboardData && window.clipboardData.setData) {\r\n // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.\r\n return window.clipboardData.setData(\"Text\", text);\r\n }\r\n else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\"; // Prevent scrolling to bottom of page in Microsoft Edge.\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\"); // Security exception may be thrown by some browsers.\r\n }\r\n catch (ex) {\r\n console.warn(\"Copy to clipboard failed.\", ex);\r\n return prompt(\"Copy to clipboard: Ctrl+C, Enter\", text);\r\n }\r\n finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n}","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function generatePageConfiguration(projectId) {\r\n\ttry {\r\n\t\tconst request = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/generatePagesFromConfigurations\", {\r\n \t\tmethod: \"POST\",\r\n \t\theaders: {\r\n \t\t\"Content-Type\": \"application/json\"\r\n \t\t},\r\n \t\tbody: JSON.stringify({\r\n \t\tprojectId\r\n \t\t})\r\n \t})\r\n \tconst response = await request.text();\r\n \treturn [response, null]\r\n\t} catch (e) {\r\n\t\treturn [null, e.message];\r\n\t}\r\n}\r\n\r\nexport async function generateIncrementalChanges(projectId, organizationId, publisherId, instanceId, forPreview, forImport){\r\n try {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/project/\" + projectId + \"/incrementalPublish\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n projectId,\r\n organizationId,\r\n publisherId,\r\n instanceId,\r\n forPreview,\r\n\t\t forImport\r\n }),\r\n }\r\n );\r\n const response = await request.blob();\r\n return [response, null];\r\n } catch (e) {\r\n return [null, e.message];\r\n }\r\n}\r\n\r\nexport async function removePortalCreatedPages(projectId) {\r\n\ttry {\r\n \tconst request = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/removePortalPages\", {\r\n \tmethod: \"POST\",\r\n \theaders: {\r\n \t\t\"Content-Type\": \"application/json\"\r\n \t},\r\n \tbody: JSON.stringify({\r\n \t\tprojectId: projectId\r\n \t})\r\n \t});\r\n \tconst response = await request.json();\r\n \treturn [response, null];\r\n } catch (e) {\r\n \treturn [null, e.message];\r\n }\r\n}\r\n\r\nexport async function removePortalItems(projectId) {\r\n\ttry {\r\n \tconst request = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/removeAllPortalItems\", {\r\n \tmethod: \"POST\",\r\n \theaders: {\r\n \t\t\"Content-Type\": \"application/json\"\r\n \t},\r\n \tbody: JSON.stringify({\r\n \t\tprojectId: projectId\r\n \t})\r\n \t});\r\n \tconst response = await request.json();\r\n \treturn [response, null];\r\n } catch (e) {\r\n \treturn [null, e.message];\r\n }\r\n}\r\n\r\nexport async function removePlaceholderLinks(projectId) {\r\n\ttry {\r\n \tconst request = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/deleteTempLinks\", {\r\n \tmethod: \"POST\",\r\n \theaders: {\r\n \t\t\"Content-Type\": \"application/json\"\r\n \t},\r\n \tbody: JSON.stringify({\r\n \t\tprojectId: projectId\r\n \t})\r\n \t});\r\n \tconst response = await request.json();\r\n \treturn [response, null];\r\n } catch (e) {\r\n \treturn [null, e.message];\r\n }\r\n}\r\n\r\nexport async function linkNewAttributeToComponent(projectId, data) {\r\n\ttry {\r\n \tconst request = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/linkComponentWithNewAttribute\", {\r\n \tmethod: \"POST\",\r\n \theaders: {\r\n \t\t\"Content-Type\": \"application/json\"\r\n \t},\r\n \tbody: JSON.stringify({\r\n \t\tdata\r\n \t})\r\n \t});\r\n \tconst response = await request.json();\r\n \treturn [response, null];\r\n } catch (e) {\r\n \treturn [null, e.message];\r\n }\r\n}\r\n\r\nexport async function validateForPublish(projectId, instanceType) {\r\n\tconst request = await callApiWithAuthorization(\r\n\t\t\"/api/v0/project/\" + projectId + \"/validateForPublish\",\r\n\t\t{\r\n\t\t\tmethod: \"POST\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify({\r\n\t\t\t\tinstanceType,\r\n\t\t\t\tprojectId,\r\n\t\t\t}),\r\n\t\t}\r\n\t);\r\n\tconst response = await request.json();\r\n\treturn response;\r\n}\r\n\r\nexport async function checkProjectForDisplayPages(projectId) {\r\n\tconst request = await callApiWithAuthorization(\r\n\t\t\"/api/v0/project/\" + projectId + \"/hasDisplayPages\"\r\n\t);\r\n\tconst response = await request.json();\r\n\treturn response.hasPages;\r\n}\r\n\r\nexport async function removeAllChanges(projectId) {\r\n\tconst request = await callApiWithAuthorization(\r\n\t\t\"/api/v0/project/\" +\r\n\t\tprojectId +\r\n\t\t\"/removeAllChanges\",\r\n\t\t{\r\n\t\t\tmethod: \"DELETE\",\r\n\t\t}\r\n\t);\r\n\tconst response = await request.json();\r\n\treturn response;\r\n}","var arrowWidth = 10;\nvar arrowHeight = 10;\n/**\n * @hidden\n */\nexport var getLeftPosition = function (left, elementWidth, targetElement, anchorElement, position) {\n switch (position) {\n case 'bottom':\n return anchorElement === 'pointer'\n ? left - (elementWidth / 2)\n : targetElement.left - (elementWidth / 2) + targetElement.width / 2;\n case 'left':\n return anchorElement === 'pointer'\n ? left - elementWidth - arrowWidth\n : targetElement.left - elementWidth - arrowWidth;\n case 'right':\n return anchorElement === 'pointer'\n ? left + arrowWidth\n : targetElement.right + arrowWidth;\n case 'top':\n return anchorElement === 'pointer'\n ? left - (elementWidth / 2)\n : targetElement.left - (elementWidth / 2) + targetElement.width / 2;\n default:\n if (anchorElement === 'pointer') {\n return left < (window.screen.availWidth / 2)\n ? left - arrowWidth\n : left - elementWidth + arrowWidth;\n }\n else {\n return left < (window.screen.availWidth / 2)\n ? targetElement.left\n : targetElement.right - elementWidth;\n }\n }\n};\n/**\n * @hidden\n */\nexport var getTopPosition = function (top, targetElement, elementHeight, anchorElement, position) {\n switch (position) {\n case 'bottom':\n return anchorElement === 'pointer'\n ? top + arrowHeight\n : targetElement.bottom + arrowHeight;\n case 'left':\n return anchorElement === 'pointer'\n ? top - (elementHeight / 2)\n : targetElement.top - (elementHeight / 2) + (targetElement.height / 2);\n case 'right':\n return anchorElement === 'pointer'\n ? top - (elementHeight / 2)\n : targetElement.top - (elementHeight / 2) + (targetElement.height / 2);\n case 'top':\n return anchorElement === 'pointer'\n ? top - elementHeight - arrowHeight\n : targetElement.top - elementHeight - arrowHeight;\n default:\n if (anchorElement === 'pointer') {\n return top < (window.innerHeight / 2)\n ? top + arrowWidth\n : top - elementHeight - arrowWidth;\n }\n else {\n return top < (window.innerHeight / 2)\n ? targetElement.bottom + arrowHeight\n : targetElement.top - elementHeight - arrowHeight;\n }\n }\n};\n/**\n * @hidden\n */\nexport var getDomRect = function (currentTarget) {\n if (currentTarget !== null) {\n return currentTarget.getBoundingClientRect();\n }\n return document.body.getBoundingClientRect();\n};\n/**\n * @hidden\n */\nexport var toolTipSelectors = [\n 'k-tooltip-content',\n 'k-animation-container',\n 'k-tooltip',\n 'k-tooltip-title',\n 'k-tooltip k-tooltip-closable',\n 'k-icon k-i-close'\n];\n/**\n * @hidden\n */\nexport var isTooltipElement = function (element) {\n if (element === null) {\n return false;\n }\n var node = element;\n while (node) {\n if (node !== null && node.classList && node.classList.contains('k-tooltip')) {\n return true;\n }\n node.parentNode !== null ? node = node.parentNode : node = false;\n }\n return toolTipSelectors.filter(function (t) { return t === element.className; }).length > 0;\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-tooltip',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1656668356,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent, classNames, ZIndexContext } from '@progress/kendo-react-common';\nimport { getLeftPosition, getTopPosition, getDomRect, isTooltipElement } from './utils';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './../package-metadata';\nvar DEFAULT_TOOLTIP_ZINDEX = 100;\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n function Tooltip(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.context = 0;\n /**\n * @hidden\n */\n _this.state = {\n targetElement: null,\n open: false,\n title: ''\n };\n _this.top = 0;\n _this.left = 0;\n _this.willOpen = false;\n /**\n * The method is used on the MouseOut event to hide the Tooltip.\n */\n _this.handleMouseOut = function (event) {\n var targetElement = _this.state.targetElement;\n var currentDocument = targetElement ? targetElement.ownerDocument : document;\n var element = currentDocument && currentDocument.elementFromPoint(event.clientX, event.clientY);\n if (isTooltipElement(element)) {\n return;\n }\n if (_this.props.open) {\n return;\n }\n clearInterval(_this.updateIntervalId);\n _this.willOpen = false;\n _this.onClose(event);\n };\n /**\n * Used on the `MouseOver` event to show the Tooltip.\n */\n _this.handleMouseOver = function (event) {\n var target = event.target;\n if (!_this.isVisible(target) || isTooltipElement(target) || target === _this.state.targetElement) {\n return;\n }\n _this.showToolTip(event);\n };\n _this.handleBodyMousemove = function (event) {\n _this.top = event.clientY;\n _this.left = event.clientX;\n };\n _this.onClose = function (event) {\n dispatchEvent(_this.props.onClose, event, _this, undefined);\n _this.setState({ targetElement: null, open: false, title: '' });\n };\n _this.setUpdateInterval = function () {\n if (_this.props.updateInterval) {\n _this.updateIntervalId = setInterval(_this.onIntervalUpdate, _this.props.updateInterval);\n }\n };\n _this.onIntervalUpdate = function () {\n var target = _this.state.targetElement;\n if (!target) {\n return;\n }\n if (target.parentElement === null) {\n // Getting element from previous target coordinates will cause reflow which is performance hit.\n // Also remount case can be avoided easily\n _this.onClose({ target: target });\n }\n else {\n _this.showToolTip({ target: target });\n }\n };\n _this.position = function (element) {\n var domRect = getDomRect(_this.state.targetElement);\n var left = getLeftPosition(_this.left, element.offsetWidth, domRect, _this.props.anchorElement, _this.props.position);\n var top = getTopPosition(_this.top, domRect, element.offsetHeight, _this.props.anchorElement, _this.props.position);\n return { left: left, top: top };\n };\n _this.getTitle = function (element) {\n while (element) {\n if (element.getAttribute('title') !== null || element.titleExpando) {\n var title = element.getAttribute('title') || element.titleExpando;\n return { title: title, element: element };\n }\n element = _this.props.parentTitle && element.parentElement || null;\n }\n return { title: '', element: element };\n };\n _this.calloutClassName = function () {\n switch (_this.props.position) {\n case 'bottom':\n return 'k-callout k-callout-n';\n case 'left':\n return 'k-callout k-callout-e';\n case 'right':\n return 'k-callout k-callout-w';\n case 'top':\n return 'k-callout k-callout-s';\n default:\n return _this.top < (window.innerHeight / 2) ? 'k-callout k-callout-n' : 'k-callout k-callout-s';\n }\n };\n _this.getCurrentZIndex = function () {\n return _this.context ? _this.context : DEFAULT_TOOLTIP_ZINDEX;\n };\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n Tooltip.prototype.componentDidMount = function () {\n if (document) {\n document.body.addEventListener('mousemove', this.handleBodyMousemove);\n }\n };\n /**\n * @hidden\n */\n Tooltip.prototype.componentWillUnmount = function () {\n clearTimeout(this.openTimeoutId);\n clearInterval(this.updateIntervalId);\n if (document) {\n document.body.removeEventListener('mousemove', this.handleBodyMousemove);\n }\n };\n /**\n * @hidden\n */\n Tooltip.prototype.componentDidUpdate = function () {\n if (this.props.open && this.props.targetElement) {\n this.showToolTip({ target: this.props.targetElement });\n }\n };\n /**\n * @hidden\n */\n Tooltip.prototype.render = function () {\n var _this = this;\n if (this.props.children) {\n var _a = this.props, children = _a.children, options = __rest(_a, [\"children\"]);\n var tooltip_1 = null;\n return (React.createElement(\"div\", { onMouseOver: function (event) { if (tooltip_1) {\n tooltip_1.handleMouseOver(event);\n } }, onMouseOut: function (event) { if (tooltip_1) {\n tooltip_1.handleMouseOut(event);\n } } },\n React.createElement(Tooltip, __assign({ ref: function (el) { return tooltip_1 = el; } }, options)),\n children));\n }\n if (this.props.open === false) {\n return null;\n }\n var targetElement = this.state.targetElement;\n var currentZIndex = this.getCurrentZIndex();\n return targetElement &&\n this.state.title &&\n targetElement.ownerDocument &&\n ReactDOM.createPortal((React.createElement(\"div\", { ref: function (el) {\n if (!el) {\n return;\n }\n var position;\n if (_this.props.onPosition) {\n var ev = {\n element: el,\n targetElement: _this.state.targetElement,\n mouseTop: _this.top,\n mouseLeft: _this.left,\n anchorElement: _this.props.anchorElement,\n position: _this.props.position,\n target: _this,\n syntheticEvent: null,\n nativeEvent: null\n };\n position = _this.props.onPosition.call(undefined, ev);\n }\n else {\n position = _this.position(el);\n }\n el.style.left = position.left + 'px';\n el.style.top = position.top + 'px';\n }, className: classNames('k-animation-container', 'k-animation-container-fixed', 'k-animation-container-shown', this.props.className), style: __assign({ zIndex: currentZIndex }, this.props.style), tabIndex: 0 },\n React.createElement(\"div\", { className: classNames('k-tooltip', this.props.tooltipClassName), style: __assign({ position: 'relative' }, this.props.tooltipStyle) },\n React.createElement(\"div\", { className: \"k-tooltip-content\" }, this.props.content &&\n React.createElement(this.props.content, { title: this.state.title, target: this.state.targetElement })\n || this.state.title),\n this.props.showCallout && React.createElement(\"div\", { ref: function (el) {\n if (!el) {\n return;\n }\n el.className = _this.calloutClassName();\n if (_this.props.position === 'auto') {\n _this.left < (window.screen.availWidth / 2)\n ? el.style.left = _this.props.setCalloutOnPositionAuto || '25%'\n : el.style.left = _this.props.setCalloutOnPositionAuto || '75%';\n }\n } })))), this.props.appendTo ? this.props.appendTo : targetElement.ownerDocument.body);\n };\n Tooltip.prototype.showToolTip = function (event) {\n var _this = this;\n clearTimeout(this.openTimeoutId);\n clearInterval(this.updateIntervalId);\n if (event.target.hasChildNodes()) {\n event.target.childNodes.forEach(function (childElement) {\n if (childElement.nodeName === 'title') {\n event.target.titleExpando = childElement.innerHTML;\n childElement.remove();\n }\n });\n }\n var target = this.props.targetElement || event.target;\n var titleResult = this.getTitle(target);\n if (!titleResult.title) {\n if (this.state.open) {\n this.onClose(event);\n }\n return;\n }\n if (titleResult.element) {\n titleResult.element.titleExpando = titleResult.title;\n titleResult.element.title = '';\n }\n this.willOpen = true;\n if (!this.props.openDelay) {\n this.setState({ targetElement: target, open: true, title: titleResult.title }, this.setUpdateInterval);\n }\n else {\n this.openTimeoutId = window.setTimeout(function () {\n if (_this.willOpen) {\n _this.setState({ targetElement: target, open: true, title: titleResult.title }, _this.setUpdateInterval);\n }\n }, this.props.openDelay);\n }\n if (this.state.title !== titleResult.title) {\n dispatchEvent(this.props.onOpen, event, this, undefined);\n }\n };\n Tooltip.prototype.isVisible = function (element) {\n return !this.props.filter || this.props.filter(element);\n };\n /**\n * @hidden\n */\n Tooltip.propTypes = {\n anchorElement: PropTypes.oneOf(['pointer', 'target']),\n content: PropTypes.func,\n filter: PropTypes.func,\n openDelay: PropTypes.number,\n position: PropTypes.oneOf(['right', 'left', 'top', 'bottom', 'auto']),\n updateInterval: PropTypes.number\n };\n Tooltip.defaultProps = {\n anchorElement: 'pointer',\n openDelay: 400,\n position: 'auto',\n showCallout: true,\n parentTitle: false\n };\n /**\n * @hidden\n */\n Tooltip.contextType = ZIndexContext;\n return Tooltip;\n}(React.PureComponent));\nexport { Tooltip };\n","import React from 'react';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\nimport ShuffleMessage from '../Shared/ShuffleMessage/ShuffleMessage';\r\n\r\nexport const InProgressPublishContent = (props) => {\r\n const { messages } = props\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n}\r\n\r\nconst InProgressPublishDialog = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default InProgressPublishDialog","import React from 'react';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\n\r\nexport const FailurePublishContent = (props) => {\r\n const { title, error, onClose, appMakerUrl, isShowFromWorkspace } = props\r\n\r\n const goToAppMaker = () => {\r\n window.open(appMakerUrl, \"_blank\").focus();\r\n }\r\n\r\n return (\r\n
    \r\n \r\n

    \r\n {title}\r\n

    \r\n {\r\n error &&\r\n
    \r\n {error}\r\n
    \r\n }\r\n {\r\n isShowFromWorkspace ?\r\n <>\r\n

    \r\n Please go to App Maker to check the reason why it is failed or try exploring other from the{\" \"}\r\n \r\n App Library\r\n . \r\n

    \r\n \r\n \r\n :\r\n \r\n }\r\n
    \r\n )\r\n}\r\n\r\nconst FailurePublishDialog = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default FailurePublishDialog","import { MsalContext } from '@azure/msal-react';\r\nimport React from 'react';\r\nimport { getInstances, publishApplication, replacePublishErrorTerms, updateProjectPortalConfig } from '../Helpers/Launch';\r\nimport { convertToJSDate } from '../Helpers/miscellaneous';\r\nimport moment from \"moment\";\r\nimport * as GenerationApi from \"../../API/Generation/Generation\";\r\nimport { getCompressedJson } from '../../API/Export/ExportApi';\r\nimport { updateNode } from '../Helpers/Nodes';\r\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport { createSearchParams, useNavigate } from 'react-router-dom';\r\nimport { bindShuffleMessageI18nEvents, messages } from '../Shared/ShuffleMessage/MessagesHelper';\r\nimport InProgressPublishDialog from './InProgressPublish';\r\nimport FailurePublishDialog from './FailurePublish';\r\nimport { getAzureUser } from \"../../API/User/User\";\r\n\r\nfunction withNavigate(Component) {\r\n function Wrapper(props) {\r\n const navigate = useNavigate();\r\n return (\r\n \r\n )\r\n }\r\n return Wrapper;\r\n}\r\n\r\nclass PublishToRuntime extends React.Component {\r\n\r\n static contextType = MsalContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n url: \"\",\r\n showDisplayResetWarning: false,\r\n isPreviewPublished: false,\r\n instance: {},\r\n app: { status: \"\" },\r\n user: {},\r\n showCopySuccess: false,\r\n isProjectImported: false,\r\n _launchFunction: null,\r\n projectHasDisplayPages: false,\r\n error: \"\",\r\n hasSchemaError: false,\r\n showRepublishButton: false\r\n };\r\n bindShuffleMessageI18nEvents();\r\n }\r\n\r\n render() {\r\n if (this.state.app.status === \"InProgress\") {\r\n return (\r\n \r\n )\r\n }\r\n if (this.state.app.status === \"Failure\") {\r\n return (\r\n \r\n )\r\n }\r\n return (\r\n <>\r\n
    this.props.toggleDialog()} class=\"k-overlay\">
    \r\n
    \r\n {\r\n this.state.loading &&\r\n
    \r\n \r\n
    \r\n }\r\n {\r\n this.state.showDisplayResetWarning &&\r\n {\r\n if (dialog === null) {\r\n this._keepDropdownOpen = false\r\n } else {\r\n dialog.element.addEventListener(\"click\", this.handleInsideDialogClick)\r\n }\r\n this.displayResetWarningDialog = dialog;\r\n }}\r\n >\r\n
    \r\n {this.props.forPreview === true\r\n ? \"If you proceed with auto generation, we will reset your preview instance to default configurations. All changes you previously applied to the preview instance might not be kept.\"\r\n : \"If you proceed with auto generation, we will reset your publish instance to default configurations. All changes you previously applied to the publish instance might not be kept.\"}\r\n
    Are you sure you want to proceed?
    \r\n
    \r\n \r\n
    \r\n \r\n Cancel\r\n \r\n \r\n Yes, Proceed\r\n \r\n
    \r\n
    \r\n \r\n }\r\n {\r\n (this.state.loading === false && this.state.app.status === \"\") &&\r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.forPreview ? \"Preview\" : \"Publish\"} your app\r\n \r\n {\r\n this.props.forPreview &&\r\n \r\n \r\n \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n {this.getLaunchButtonText()}\r\n \r\n {\r\n (\r\n this.state.instance.Published === true &&\r\n this.state.projectHasDisplayPages === true\r\n ) &&\r\n \r\n }\r\n
    \r\n {\r\n this.state.showRepublishButton &&\r\n (\r\n this.state.instance.Published === true ||\r\n this.state.projectHasDisplayPages === true\r\n ) && (\r\n \r\n {this.props.forPreview\r\n ? \"Regenerate \"\r\n : \"Republish \"}\r\n {this.props.forPreview ? \"Preview\" : \"App\"}\r\n \r\n )\r\n }\r\n \r\n
    \r\n\r\n
    \r\n {this.state.instance.Published === true &&\r\n
    \r\n
    \r\n this.runtimeLink = hyperlink}\r\n >\r\n \r\n Go to App Workspace {this.props.forPreview && \"(Preview)\"}\r\n \r\n \r\n \r\n\r\n {!this.state.showCopySuccess && (\r\n \r\n \r\n \r\n )}\r\n {this.state.showCopySuccess && (\r\n \r\n \r\n Copied\r\n \r\n )}\r\n
    \r\n \r\n Last published time\r\n \r\n {this.state.instance.updatedDate}\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 async componentDidMount() {\r\n const { projectId } = this.props;\r\n\r\n const [instances, project, validationResult] = await Promise.all([\r\n getInstances(projectId),\r\n this.getProject(projectId),\r\n this.validateForPublish(),\r\n ]);\r\n\r\n const instanceType = this.getInstanceType();\r\n const instance = instances.find(\r\n (instance) => instance.instanceType === instanceType\r\n );\r\n \r\n const isProjectImported = project.isImported === \"true\";\r\n\r\n const dateInfo = convertToJSDate(instance.updatedDate);\r\n const date = new Date(Date.UTC(...dateInfo));\r\n instance.updatedDate = moment(date).format(\"LLL\");\r\n\r\n let { error } = instance;\r\n let { app } = this.state\r\n\r\n if (instance.error === undefined) {\r\n error = \"\";\r\n }\r\n\r\n const hasSchemaError = validationResult.error !== undefined;\r\n if (validationResult.error) {\r\n error = validationResult.error;\r\n app.status = \"Failure\"\r\n }\r\n\r\n const organization = this.props.organizations.find((org) => org.number === this.props.orgName);\r\n\r\n let projectURL = this.props.projectUrl + \"_\" + instance.id.slice(0, 5);\r\n let defaultPortalUrl = project.defaultPortal && project.defaultPortal.length > 0 ? project.defaultPortal[0].urlName : \"\"\r\n let url = `${process.env.REACT_APP_RUNTIME_URL}/${organization.url}/${projectURL}/${defaultPortalUrl}`\r\n\r\n this.props.setUrl(url);\r\n this.props.setLastPublishedInstance(instance);\r\n\r\n this.setState(\r\n {\r\n instance,\r\n isProjectImported,\r\n error,\r\n url,\r\n hasSchemaError,\r\n user: this.props.user,\r\n app,\r\n },\r\n async () => {\r\n const projectHasDisplayPages =\r\n await this.checkIfProjectHasDisplayPages();\r\n const _launchFunction = this.getLaunchFunction(\r\n projectHasDisplayPages\r\n );\r\n this.setState({\r\n _launchFunction,\r\n projectHasDisplayPages,\r\n loading: false,\r\n });\r\n }\r\n );\r\n }\r\n\r\n getProject = async (projectId) => {\r\n const request = await callApiWithAuthorization(\"/api/v0/getLibraryProject/\" + projectId);\r\n const result = await request.json();\r\n return result\r\n }\r\n\r\n getInstanceType() {\r\n return \"Production\";\r\n }\r\n\r\n getLaunchButtonText() {\r\n const { forPreview } = this.props;\r\n const { instance } = this.state;\r\n if (instance.Published === true) {\r\n if (forPreview) {\r\n return \"Update Preview\";\r\n } else {\r\n return \"Update App\";\r\n }\r\n } else {\r\n if (forPreview) {\r\n return \"Preview App\";\r\n } else {\r\n return \"Publish App\";\r\n }\r\n }\r\n }\r\n\r\n handleShowingRepublishButton = (e) => {\r\n this.setState({\r\n showRepublishButton: !this.state.showRepublishButton\r\n })\r\n }\r\n\r\n validateForPublish = async () => {\r\n const instanceType = this.getInstanceType().toLowerCase();\r\n const { projectId } = this.props;\r\n console.time(\"validateForPublish\")\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/project/\" + projectId + \"/validateForPublish\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n instanceType,\r\n projectId,\r\n }),\r\n }\r\n );\r\n const response = await request.json();\r\n console.timeEnd(\"validateForPublish\")\r\n return response;\r\n };\r\n\r\n setLaunchFunction = async (launchFunction) => {\r\n this._launchFunction = launchFunction;\r\n };\r\n\r\n getLaunchFunction = (projectHasDisplayPages) => {\r\n if (projectHasDisplayPages) {\r\n return this.launchWithIncrementalPreview;\r\n }\r\n return this.launchWithFullGeneration;\r\n };\r\n\r\n checkIfProjectHasDisplayPages = async () => {\r\n const { projectId } = this.props;\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/project/\" + projectId + \"/hasDisplayPages\"\r\n );\r\n const response = await request.json();\r\n const { hasPages } = response;\r\n return hasPages;\r\n };\r\n\r\n togglePublishing = async (value) => {\r\n this.setState({\r\n app: {\r\n status: value\r\n }\r\n })\r\n }\r\n\r\n toggleMenu = () => {\r\n this.setState({\r\n showOtherOptions: !this.state.showOtherOptions,\r\n });\r\n };\r\n\r\n showSuccess = (publishResult) => {\r\n const { data } = publishResult;\r\n const newInstanceData = {\r\n ...this.state.instance,\r\n Published: true,\r\n lastUpdatedDate: new Date(),\r\n };\r\n this.setState({\r\n app: {\r\n status: publishResult.status\r\n },\r\n instance: newInstanceData,\r\n })\r\n if (data.appUrl) {\r\n try {\r\n window.open(this.state.url, \"_blank\").focus();\r\n } catch (e) {\r\n //\r\n }\r\n }\r\n return newInstanceData;\r\n };\r\n\r\n openRuntimeInNewTab = (instance) => {\r\n const { Url } = instance;\r\n window.open(Url, \"_blank\").focus();\r\n }\r\n\r\n resetAppPublishDialog = () => {\r\n this.setState({\r\n app: {\r\n status: \"reset\"\r\n }\r\n })\r\n this.props.toggleDialog()\r\n }\r\n\r\n copyLink = () => {\r\n navigator.clipboard.writeText(this.state.instance.Url);\r\n this.setState(\r\n {\r\n showCopySuccess: true,\r\n },\r\n () => {\r\n setTimeout(() => {\r\n this.setState({\r\n showCopySuccess: false,\r\n });\r\n }, 2000);\r\n }\r\n );\r\n };\r\n\r\n launchWithIncrementalPreview = (event) => {\r\n event.stopPropagation();\r\n this.togglePublishing(\"InProgress\")\r\n .then(this.performIncrementalGeneration)\r\n .then(this.publishJsonToRuntime)\r\n .then(this.showSuccess)\r\n .then(this.updateLaunchFunction)\r\n .then(this.toggleDialogIfApplicable)\r\n .catch(this.showErrorMessage);\r\n };\r\n\r\n toggleDisplayResetWarning = (e) => {\r\n this.setState({\r\n showDisplayResetWarning: !this.state.showDisplayResetWarning,\r\n });\r\n };\r\n\r\n hideDisplayResetWarningIfVisible = () => {\r\n if (this.state.showDisplayResetWarning) {\r\n this.toggleDisplayResetWarning();\r\n }\r\n };\r\n\r\n launchWithFullGeneration = (event) => {\r\n event.stopPropagation();\r\n this.togglePublishing(\"InProgress\")\r\n .then(this.hideDisplayResetWarningIfVisible)\r\n .then(this.performFullGeneration)\r\n .then(this.getCompressedJson)\r\n .then(this.publishJsonToRuntime)\r\n .then(this.updateInstanceProperties)\r\n .then(this.showSuccess)\r\n // .then(this.openRuntimeInNewTab)\r\n .then(this.refreshPage)\r\n .catch(this.showErrorMessage)\r\n };\r\n\r\n updateLaunchFunction = async () => {\r\n const projectHasDisplayPages =\r\n await this.checkIfProjectHasDisplayPages();\r\n const _launchFunction = this.getLaunchFunction(projectHasDisplayPages);\r\n this.setState({\r\n projectHasDisplayPages,\r\n _launchFunction,\r\n });\r\n };\r\n\r\n showErrorMessage = (err) => {\r\n this.setState({\r\n error: err.message,\r\n app: { status: \"Failure\" }\r\n });\r\n };\r\n\r\n toggleDialogIfApplicable = () => {\r\n this.togglePublishing(\"\");\r\n if (this.state.error === \"\") {\r\n if (this.state.user.showSuccessDialog === \"true\") {\r\n this.props.showSuccess();\r\n }\r\n this.props.toggleDialog();\r\n }\r\n }\r\n\r\n performIncrementalGeneration = async () => {\r\n const { projectId, forPreview } = this.props;\r\n\r\n let user = await getAzureUser(this.context);\r\n\r\n const userId = user.oid\r\n\r\n const organization = this.props.organizations.find((org) => org.number === this.props.orgName);\r\n\r\n const [compressedJson, generationError] =\r\n await GenerationApi.generateIncrementalChanges(\r\n projectId,\r\n organization.id,\r\n userId,\r\n this.state.instance.id,\r\n forPreview,\r\n false\r\n );\r\n\r\n await callApiWithAuthorization(\r\n \"/api/v0/project/\" +\r\n this.props.projectId +\r\n \"/removeAllChanges\",\r\n {\r\n method: \"DELETE\",\r\n }\r\n );\r\n\r\n return compressedJson;\r\n };\r\n\r\n performFullGeneration = async () => {\r\n const { projectId } = this.props;\r\n\r\n await GenerationApi.removePortalCreatedPages(projectId);\r\n await GenerationApi.removePortalItems(projectId);\r\n\r\n const [generationResponse, generationError] =\r\n await GenerationApi.generatePageConfiguration(projectId);\r\n\r\n if (generationError !== null) {\r\n throw new Error(generationError);\r\n }\r\n\r\n await GenerationApi.removePlaceholderLinks(projectId);\r\n\r\n await callApiWithAuthorization(\r\n \"/api/v0/project/\" +\r\n this.props.projectId +\r\n \"/removeAllChanges\",\r\n {\r\n method: \"DELETE\",\r\n }\r\n );\r\n };\r\n\r\n getCompressedJson = async () => {\r\n const { context } = this;\r\n\r\n const user = await getAzureUser(context);\r\n\r\n const userId = user.oid;\r\n\r\n const { projectId, forPreview, orgName } = this.props;\r\n\r\n const organization = this.props.organizations.find((org) => org.number === orgName)\r\n\r\n const compressedJson = await getCompressedJson(\r\n projectId,\r\n organization.id,\r\n userId,\r\n this.state.instance.id,\r\n forPreview,\r\n false\r\n );\r\n\r\n return compressedJson;\r\n };\r\n\r\n publishJsonToRuntime = async (compressedJson) => {\r\n const { projectId } = this.props;\r\n const { instance } = this.state;\r\n\r\n updateProjectPortalConfig(projectId);\r\n\r\n console.time(\"runtime\");\r\n\r\n const isFirstTimePublish = instance.Published === false;\r\n let result = await publishApplication(\r\n this.context,\r\n instance,\r\n compressedJson,\r\n isFirstTimePublish\r\n );\r\n\r\n console.timeEnd(\"runtime\");\r\n\r\n if (result.status === \"Failure\") {\r\n throw new Error(replacePublishErrorTerms(result.message));\r\n }\r\n\r\n await updateNode(\"Instance\", instance.id, {\r\n appId: result.data.appId,\r\n status: result.status,\r\n Published: true,\r\n });\r\n\r\n updateNode(\"Project\", this.props.projectId, {\r\n hasSchemaChanges: false,\r\n isDbChanged: false\r\n });\r\n\r\n return result;\r\n };\r\n\r\n updateInstanceProperties = (result) => {\r\n const instance = { ...this.state.instance };\r\n instance.Published = true;\r\n instance.appId = result.data.appId;\r\n instance.status = result.status;\r\n instance.Url = result.data.appUrl;\r\n this.setState({ instance });\r\n return result;\r\n };\r\n\r\n refreshPage = () => {\r\n const searchParams = {\r\n showSuccessfulPublishDialog: this.state.user.showSuccessDialog === \"true\",\r\n instanceId: this.state.instance.id,\r\n url: this.state.url\r\n }\r\n const search = searchParams.showSuccessfulPublishDialog ? createSearchParams(searchParams).toString() : \"\";\r\n this.props.navigate({\r\n path: \".\",\r\n search\r\n })\r\n window.location.reload();\r\n };\r\n}\r\n\r\nexport default withNavigate(PublishToRuntime);","import React, { useState } from 'react';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { updateNode } from '../Helpers/Nodes';\r\n\r\nexport const SuccessfulPublishContent = (props) => {\r\n\r\n const { \r\n user, updateUserState,\r\n onClose, workspaceUrl,\r\n isShowFromWorkspace, onBack,\r\n message = \"App is successfully generated\"\r\n } = props\r\n\r\n const [dontShowSuccessDialog, setDontShowSuccessDialog] = useState(false);\r\n\r\n const handleClose = () => {\r\n if (dontShowSuccessDialog) {\r\n updateNode(\"User\", user.id, { showSuccessDialog: \"false\" });\r\n if (updateUserState) {\r\n updateUserState({\r\n ...user,\r\n showSuccessDialog: \"false\"\r\n })\r\n }\r\n }\r\n onClose();\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    { message }

    \r\n
    \r\n
    \r\n {\r\n isShowFromWorkspace ?\r\n \r\n Install more App\r\n \r\n :\r\n \r\n Okay\r\n \r\n }\r\n
    \r\n {\r\n !isShowFromWorkspace &&\r\n
    \r\n setDontShowSuccessDialog(e.value)}\r\n checked={dontShowSuccessDialog} />\r\n
    \r\n }\r\n
    \r\n
    \r\n )\r\n}\r\n\r\n\r\nconst SuccessfulPublishDialog = (props) => {\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SuccessfulPublishDialog;","import React, { Component } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Notification, NotificationGroup } from \"@progress/kendo-react-notification\";\r\nimport Breadcrumb from \"react-bootstrap/Breadcrumb\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { updateNode } from \"../Helpers/Nodes\";\r\nimport { UpdateUser } from \"../Helpers/AzureAD\";\r\n//import InviteUserDailog from \"../OrganizationSettings/UserManagement/InviteUserDailog\";\r\nimport { Dropdown } from \"react-bootstrap\";\r\nimport Theme from \"./Theme\";\r\nimport OrganizationSelector from \"../Shared/organizationSelector/organizationSelector\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport PublishToRuntime from \"../PublishToRuntime/PublishToRuntime\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport SuccessfulPublishDialog from \"../PublishToRuntime/SuccessfulPublish\";\r\nimport { useSearchParams } from \"react-router-dom\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport { Tooltip } from \"@progress/kendo-react-tooltip\";\r\nimport { getAzureUser } from \"../../API/User/User\";\r\n\r\nfunction withSearchParams(Component) {\r\n\tfunction Wrapper(props) {\r\n\t\tconst [searchParams, setSearchParams] = useSearchParams();\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\treturn Wrapper;\r\n}\r\n\r\nclass NavigationComponent extends Component {\r\n\tstatic contextType = MsalContext;\r\n\tanchor = null;\r\n\tlastPublishedAppUrl = \"\";\r\n\tlastPublishedInstance = {};\r\n\r\n\tiframe;\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tshowloader: false,\r\n\t\t\tOrgName: this.props.OrgName,\r\n\t\t\tvisible: false,\r\n\t\t\tshowLaunchPopup: false,\r\n\t\t\tshowPreviewPopup: false,\r\n\t\t\tshowUserDialog: false,\r\n\t\t\tshowDisplayResetWarning: false,\r\n\t\t\tuserId: \"\",\r\n\t\t\temail: \"\",\r\n\t\t\tuserData: {},\r\n\t\t\tcurrentOrgnization: {},\r\n\t\t\tnotificationMessage: \"\",\r\n\t\t\tredirect: false,\r\n\t\t\tloading: false,\r\n\t\t\tAddDialog: false,\r\n\t\t\tfirstName: \"\",\r\n\t\t\tlastName: \"\",\r\n\t\t\tdisplayName: \"\",\r\n\t\t\tjobTitle: \"\",\r\n\t\t\tprojectName: \"\",\r\n\t\t\tbgColor: \"\",\r\n\t\t\tshowInvitePopup: false,\r\n\t\t\torganizations: this.props.organizations,\r\n\t\t\tselectedOrg: this.props.selectedOrg,\r\n\t\t\tisPreviewDialogOpen: false,\r\n\t\t\tisPublishDialogOpen: false,\r\n\t\t\tshowSuccessfulPublishDialog: false,\r\n\t\t\tstartLogout: false\r\n\t\t};\r\n\r\n\t\tthis.publishRef = React.createRef();\r\n\t\tthis.previewRef = React.createRef();\r\n\t}\r\n\r\n\tcomponentDidMount = async () => {\r\n\t\tdocument.addEventListener(\"click\", this.handlePopups);\r\n\t\twindow.addEventListener(\"message\", this.handleMessage);\r\n\r\n\t\tlet { context } = this;\r\n\r\n\t\tlet { user } = this.props;\r\n\r\n\t\tlet { organizations, OrgName } = this.props\r\n\t\tlet currentOrgnization = {}\r\n\t\tif (organizations !== undefined) {\r\n\t\t\tcurrentOrgnization = organizations.find(org => org.number === OrgName)\r\n\t\t}\r\n\t\tif (!user && !user.id) {\r\n\t\t\tlocalStorage.clear();\r\n\t\t\tcontext.instance.logoutRedirect();\r\n\t\t}\r\n\t\tconst showSuccessfulPublishDialog = this.props.searchParams.get(\"showSuccessfulPublishDialog\") === \"true\";\r\n\t\tconst instanceId = this.props.searchParams.get(\"instanceId\");\r\n\t\tconst runtimeUrl = this.props.searchParams.get(\"url\");\r\n\t\tthis.setLastPublishedInstance({ id: instanceId });\r\n\t\tthis.setPublishedAppUrl(runtimeUrl);\r\n\t\tthis.props.setSearchParams(this.props.searchParams);\r\n\t\tthis.setState({\r\n\t\t\tuserData: user,\r\n\t\t\tfirstName: user.firstName || \"\",\r\n\t\t\tlastName: user.lastName || \"\",\r\n\t\t\tjobTitle: user.jobTitle || \"\",\r\n\t\t\tdisplayName: user.displayName || \"\",\r\n\t\t\t//companyName: user.companyName || \"\",\r\n\t\t\temail: user.email,\r\n\t\t\tuserId: user.id,\r\n\t\t\tbgColor: user.bgColor,\r\n\t\t\tcurrentOrgnization,\r\n\t\t\tshowSuccessfulPublishDialog\r\n\t\t});\r\n\t};\r\n\r\n\tremoveAccessTokenFromRuntime = () => {\r\n\t\tif (this.iframe && this.iframe.contentWindow) {\r\n\t\t\tthis.iframe.contentWindow.postMessage({ type: \"LOGOUT\" }, \"*\");\r\n\t\t}\r\n\t}\r\n\r\n\thandleMessage = (event) => {\r\n\t\tif (event.origin === process.env.REACT_APP_RUNTIME_URL) {\r\n\t\t\tconst data = JSON.parse(event.data);\r\n\t\t\tif (data.status === \"Success\") {\r\n\t\t\t\tthis.signOut();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttogglePreview = () => { this.setState({ isPreviewDialogOpen: !this.state.isPreviewDialogOpen }); }\r\n\ttogglePublish = () => { this.setState({ isPublishDialogOpen: !this.state.isPublishDialogOpen }); }\r\n\r\n\thandlePopups = (e) => {\r\n\r\n\t\tif (this.launcher !== null && this.state.showLaunchPopup) {\r\n\t\t\tif (this.launchComponent.instanceComponent && this.launchComponent.instanceComponent.popup && this.launchComponent.instanceComponent.popup !== null) {\r\n\t\t\t\tif (!this.launchComponent.instanceComponent.popup.contains(e.target) && !this.launcher.contains(e.target) && !(e.target === this.anchor)) {\r\n\t\t\t\t\tthis.setState({ showLaunchPopup: false });\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!this.launcher.contains(e.target) && !(e.target === this.anchor) & !e.target.classList.contains(\"publish-button\")) {\r\n\t\t\t\t\tthis.setState({ showLaunchPopup: false });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.userPopup !== null && this.state.showUserPopup) {\r\n\t\t\tif (!this.userPopup.contains(e.target) && !(e.target === this.userAnchor) && !this.userAnchor.contains(e.target)) {\r\n\t\t\t\tthis.setState({ showUserPopup: false });\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tdocument.removeEventListener(\"click\", this.handlePopups);\r\n\t}\r\n\r\n\tshowLaunchPopup = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tshowLaunchPopup: !this.state.showLaunchPopup,\r\n\t\t});\r\n\t};\r\n\r\n\tshowPreviewPopup = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tshowPreviewPopup: !this.state.showPreviewPopup,\r\n\t\t});\r\n\t};\r\n\r\n\tshowUserPopup = () => {\r\n\t\tthis.setState({ showUserPopup: !this.state.showUserPopup });\r\n\t};\r\n\r\n\tShowInvitePopup = (userAdded, notificationMessage) => {\r\n\t\tthis.setState({\r\n\t\t\tuserAdded: userAdded,\r\n\t\t\tnotificationMessage: notificationMessage,\r\n\t\t\tshowInvitePopup: !this.state.showInvitePopup,\r\n\t\t});\r\n\t\tif (userAdded) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tnotificationMessage: \"\",\r\n\t\t\t\t\tuserAdded: false,\r\n\t\t\t\t});\r\n\t\t\t}, 2000);\r\n\t\t}\r\n\t};\r\n\r\n\ttoggleShowUserDialog = () => {\r\n\t\tthis.setState({\r\n\t\t\tshowUserDialog: !this.state.showUserDialog,\r\n\t\t\tshowUserPopup: false,\r\n\t\t\tshowInvitePopup: false,\r\n\t\t\tfirstName: this.state.userData.firstName,\r\n\t\t\tlastName: this.state.userData.lastName,\r\n\t\t\tdisplayName: this.state.userData.displayName,\r\n\t\t});\r\n\t};\r\n\r\n\thandleEmail = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tEmail: e.target.value,\r\n\t\t});\r\n\t};\r\n\r\n\thandleGivenName = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tfirstName: e.target.value,\r\n\t\t});\r\n\t};\r\n\r\n\thandleSurname = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tlastName: e.target.value,\r\n\t\t});\r\n\t};\r\n\r\n\thandleDisplayName = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tdisplayName: e.target.value,\r\n\t\t});\r\n\t};\r\n\r\n\t// handleCompanyName = (e) => {\r\n\t// this.setState({\r\n\t// companyName: e.target.value,\r\n\t// });\r\n\t// };\r\n\r\n\thandleJobTitle = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tjobTitle: e.target.value,\r\n\t\t});\r\n\t};\r\n\r\n\tgoToEntity = () => {\r\n\t\twindow.location.href = `/${this.props.OrgName}/${this.props.projectName}/Entities`;\r\n\t};\r\n\r\n\tupdateuser = async (e) => {\r\n\t\te.preventDefault();\r\n\t\tlet { context } = this;\r\n\t\tconst userAdData = await getAzureUser(context);\r\n\r\n\t\tupdateNode(\"User\", this.state.userId, {\r\n\t\t\tfirstName: this.state.firstName,\r\n\t\t\tlastName: this.state.lastName,\r\n\t\t\tjobTitle: this.state.jobTitle,\r\n\t\t\t//companyName: this.state.companyName,\r\n\t\t\tdisplayName: this.state.displayName,\r\n\t\t});\r\n\t\tlet userObj = {\r\n\t\t\tId: userAdData.oid,\r\n\t\t\tfirstName: this.state.firstName,\r\n\t\t\tlastName: this.state.lastName,\r\n\t\t\tjobTitle: this.state.jobTitle,\r\n\t\t\tdisplayName: this.state.displayName,\r\n\t\t};\r\n\t\tUpdateUser(userObj);\r\n\t\tlet userInfo = this.state.userData;\r\n\t\tuserInfo.firstName = this.state.firstName;\r\n\t\t//userInfo.companyName = this.state.companyName;\r\n\t\tuserInfo.lastName = this.state.lastName;\r\n\t\tuserInfo.displayName = this.state.displayName;\r\n\t\tuserInfo.jobTitle = this.state.jobTitle;\r\n\t\tthis.setState({\r\n\t\t\tuserData: userInfo,\r\n\t\t});\r\n\t\tthis.toggleShowUserDialog();\r\n\t};\r\n\r\n\tshouldDisabled = () => {\r\n\t\tlet condition = this.state.displayName !== this.state.userData.displayName || this.state.firstName !== this.state.userData.firstName || this.state.lastName !== this.state.userData.lastName || this.state.jobTitle !== this.state.userData.jobTitle;\r\n\t\t// ||this.state.companyName !== this.state.userData.companyName;\r\n\t\tif (this.state.displayName === \"\" || this.state.email === \"\") {\r\n\t\t\tcondition = true;\r\n\t\t}\r\n\r\n\t\tif (condition) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n\r\n\thandlePreview = async () => { };\r\n\r\n\topenRuntimeInIframe = () => {\r\n\t\tthis.setState({ startLogout: true });\r\n\t}\r\n\r\n\tsignOut = async () => {\r\n\t\tthis.setState({ showloader: true });\r\n\r\n\t\tupdateNode(\"User\", this.state.userData.id, { lastOrganizationAccessed: this.props.OrgName });\r\n\r\n\t\tlocalStorage.clear();\r\n\t\tconst { context } = this;\r\n\t\tconst logoutRequest = { account: context.instance.getAccountByHomeId(context.accounts[0].homeAccountId) };\r\n\r\n\t\tcontext.instance.logoutRedirect(logoutRequest);\r\n\r\n\t\tthis.setState({ showloader: false });\r\n\t};\r\n\r\n\ttoggleDisplayResetWarning = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tshowDisplayResetWarning: !this.state.showDisplayResetWarning,\r\n\t\t});\r\n\t};\r\n\r\n\ttoggleSuccessfulPublishDialog = () => {\r\n\t\tthis.setState({\r\n\t\t\tshowSuccessfulPublishDialog: !this.state.showSuccessfulPublishDialog\r\n\t\t});\r\n\t\tthis.props.searchParams.delete(\"showSuccessfulPublishDialog\");\r\n\t\tthis.props.searchParams.delete(\"instanceId\");\r\n\t\tthis.props.searchParams.delete(\"url\");\r\n\t\tthis.props.setSearchParams(this.props.searchParams);\r\n\t}\r\n\r\n\tsetPublishedAppUrl = (url) => {\r\n\t\tthis.lastPublishedAppUrl = url;\r\n\t}\r\n\r\n\tsetLastPublishedInstance = (instance) => {\r\n\t\tthis.lastPublishedInstance = { ...instance };\r\n\t}\r\n\r\n\thandlePreviewDropdown = (event) => { };\r\n\r\n\thandlePublishDropdown = (event) => { };\r\n\r\n\tupdateUserState = (userData) => {\r\n\t\tthis.setState({ userData })\r\n\t}\r\n\r\n\topenRuntimeInNewTab = () => {\r\n\t\tconst Url = process.env.REACT_APP_RUNTIME_URL + \"/\" + this.state.currentOrgnization.url\r\n\t\twindow.open(Url, \"_blank\").focus();\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.state.startLogout &&\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.iframe = iframe;\r\n\t\t\t\t\t\t\tif (iframe) {\r\n\t\t\t\t\t\t\t\tiframe.addEventListener(\"load\", () => {\r\n\t\t\t\t\t\t\t\t\tiframe.contentWindow.postMessage(\r\n\t\t\t\t\t\t\t\t\t\tJSON.stringify({ type: \"LOGOUT\" }), \"*\"\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}} />\r\n\t\t\t\t}\r\n\t\t\t\t{this.state.showloader &&\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.state.userAdded &&\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.notificationMessage}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t{/* {this.state.showInvitePopup && (\r\n\t\t\t\t\t this.ShowInvitePopup(false)} className=\"user-popup\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)} */}\r\n\r\n\t\t\t\t{this.state.showSuccessfulPublishDialog &&\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{this.state.showUserDialog && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tEmail\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    First Name
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    Last Name
    \r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tDisplay Name\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t
    Role
    \r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t{/*
    Company Name
    \r\n */}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\"LOGO\"\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{this.state.selectedOrg ? : this.props.children}\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.props.showWorkspaceButton &&\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t{this.props.projectName !== undefined && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{this.state.isPublishDialogOpen &&\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{/* {this.props.userRole !== \"Member\" && !this.props.hideInviteButton && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t this.ShowInvitePopup(false)}\r\n\t\t\t\t\t\t\tdisabled={this.props.userRole === \"Member\" ? true : false}\r\n\t\t\t\t\t\t\tref={(button) => {this.inviteAnchor = button;}}\r\n\t\t\t\t\t\t\ttitle=\"Invite your team\"\r\n\t\t\t\t\t\t\tclassName=\"btn-invite\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t)} */}\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{this.state.email.substring(0, 2).toUpperCase()}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\tEdit Profile\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{/*
    First Name: {this.state.firstName}
    \r\n\t\t\t\t\t\t\t\t\t\t
    Last Name: {this.state.lastName}
    */}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{this.state.displayName !== \"\" ? this.state.displayName : this.state.firstName !== \"\" ? this.state.firstName + ' ' + this.state.lastName : this.state.email.split('@')[0]}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t\t\t{this.state.email}\r\n\t\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.state.currentOrgnization && this.state.currentOrgnization.internalMode &&\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.userAnchor = button;\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>
    \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default withSearchParams(NavigationComponent);\r\n","import * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default (className => /*#__PURE__*/React.forwardRef((p, ref) => /*#__PURE__*/_jsx(\"div\", { ...p,\n ref: ref,\n className: classNames(p.className, className)\n})));","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n variant,\n as: Component = 'img',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(variant ? `${prefix}-${variant}` : prefix, className),\n ...props\n });\n});\nCardImg.displayName = 'CardImg';\nexport default CardImg;","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardHeaderContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CardHeaderContext from './CardHeaderContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-header');\n const contextValue = useMemo(() => ({\n cardHeaderBsPrefix: prefix\n }), [prefix]);\n return /*#__PURE__*/_jsx(CardHeaderContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix)\n })\n });\n});\nCardHeader.displayName = 'CardHeader';\nexport default CardHeader;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardImg from './CardImg';\nimport CardHeader from './CardHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH5 = divWithClassName('h5');\nconst DivStyledAsH6 = divWithClassName('h6');\nconst CardBody = createWithBsPrefix('card-body');\nconst CardTitle = createWithBsPrefix('card-title', {\n Component: DivStyledAsH5\n});\nconst CardSubtitle = createWithBsPrefix('card-subtitle', {\n Component: DivStyledAsH6\n});\nconst CardLink = createWithBsPrefix('card-link', {\n Component: 'a'\n});\nconst CardText = createWithBsPrefix('card-text', {\n Component: 'p'\n});\nconst CardFooter = createWithBsPrefix('card-footer');\nconst CardImgOverlay = createWithBsPrefix('card-img-overlay');\nconst defaultProps = {\n body: false\n};\nconst Card = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n bg,\n text,\n border,\n body,\n children,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix, bg && `bg-${bg}`, text && `text-${text}`, border && `border-${border}`),\n children: body ? /*#__PURE__*/_jsx(CardBody, {\n children: children\n }) : children\n });\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nexport default Object.assign(Card, {\n Img: CardImg,\n Title: CardTitle,\n Subtitle: CardSubtitle,\n Body: CardBody,\n Link: CardLink,\n Text: CardText,\n Header: CardHeader,\n Footer: CardFooter,\n ImgOverlay: CardImgOverlay\n});","import React, { Component } from 'react';\r\n\r\nimport { Card } from \"react-bootstrap\";\r\n\r\nexport class OrganisationList extends Component {\r\n render() {\r\n return (\r\n this.props.organisations.map(organisation => (\r\n \r\n \r\n \r\n {organisation.orgName.substring(0, 1)}\r\n   \r\n {organisation.orgName}\r\n \r\n \r\n \r\n ))\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport NavigationComponents from \"../../Components/Navigation/Navigation\";\r\nimport { OrganisationList } from \"./OrganisationList\";\r\n\r\nexport class PageNotFound extends Component {\r\n render() {\r\n let { message, status, statusMessage, organisations } = this.props;\r\n return (\r\n
    \r\n {(status === 500 || status === 401) ? null : (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n {status} - {statusMessage}\r\n

    \r\n
    \r\n {message}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n componentWillUnmount() {\r\n localStorage.removeItem(\"error\");\r\n }\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { useLocation, useParams } from 'react-router-dom';\r\nimport { PageNotFound } from \"../Pages/404/PageNotFound\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport Loader from \"../Components/Shared/Loader/loader\";\r\nimport { CheckForAdminAccess } from \"../Components/Helpers/miscellaneous\";\r\nimport { getUserAndItsOrganizations } from \"../API/Organization/organization\";\r\n\r\nexport const AdminRouteRender = (props) => {\r\n\tlet check = true;\r\n\tconst context = useMsal();\r\n\tconst location = useLocation();\r\n\tconst params = useParams();\r\n\r\n\tconst [state, setState] = useState({\r\n\t\tloading: true,\r\n\t\tuser: {},\r\n\t\tisOwner: false\r\n\t});\r\n\r\n\tconst checkUserIsValid = async () => {\r\n\t\ttry {\r\n\t\t\tdebugger\r\n\t\t\tlet { organizations, user} = await getUserAndItsOrganizations(context.accounts[0].username)\r\n\t\t\tif (localStorage.getItem(\"theme\") !== null) {\r\n\t\t\t\tdocument.documentElement.className = \"theme-\" + localStorage.getItem(\"theme\");\r\n\t\t\t} else {\r\n\t\t\t\tdocument.documentElement.className = \"theme-\" + user.defaultTheme;\r\n\t\t\t}\r\n\t\t\tsetState(prevState => ({\r\n\t\t\t\t...prevState,\r\n\t\t\t\tloading: false,\r\n\t\t\t\tuser: user,\r\n\t\t\t\torganizations: organizations\r\n\t\t\t}));\r\n\t\t} catch (e) {\r\n\t\t\tsetState({ showServerError: true });\r\n\t\t}\r\n\t};\r\n\r\n\tconst requireLogin = () => {\r\n\t\tcontext.instance.loginRedirect();\r\n\t};\r\n\r\n\tif (context.inProgress !== \"none\") {\r\n\t\treturn ;\r\n\t}\r\n\r\n\tif (context.accounts.length === 0) {\r\n\t\trequireLogin();\r\n\t}\r\n\r\n\tif (state.loading) {\r\n\t\tif (check) {\r\n\t\t\tcheckUserIsValid();\r\n\t\t\tcheck = false;\r\n\t\t}\r\n\t\treturn ;\r\n\t}\r\n\r\n\tif (!state.user && !state.user._id) {\r\n\t\tlet message = (\r\n\t\t\t\r\n\t\t\t\tYour account\r\n\t\t\t\t{context.accounts[0].username}\r\n\t\t\t\tis not authorized to view this page.\r\n\t\t\t\r\n\t\t);\r\n\t\treturn ;\r\n\t}\r\n\r\n\tif (!CheckForAdminAccess(context.accounts[0].username)) {\r\n\t\tlet message = (\r\n\t\t\t\r\n\t\t\t\tYour account\r\n\t\t\t\t{context.accounts[0].username}\r\n\t\t\t\tis not authorized to view this page.\r\n\t\t\t\r\n\t\t);\r\n\t\treturn ;\r\n\t}\r\n\r\n\tif (state.showServerError) {\r\n\t\tlet message = (\r\n\t\t\t\r\n\t\t\t\tOops! Sorry, the server has some issues.\r\n\t\t\t\t
    \r\n\t\t\t\tTake a break! it will be back soon.\r\n\t\t\t
    \r\n\t\t);\r\n\t\treturn ;\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{React.Children.map(props.children, (child) => {\r\n\t\t\t\tif (React.isValidElement(child)) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{React.cloneElement(child, {\r\n\t\t\t\t\t\t\t\t// history: history,\r\n\t\t\t\t\t\t\t\tlocation: location,\r\n\t\t\t\t\t\t\t\tmatch: params,\r\n\t\t\t\t\t\t\t\tuser: state.user,\r\n\t\t\t\t\t\t\t\tnewUser: context.accounts[0].idTokenClaims.newUser ? context.accounts[0].idTokenClaims.newUser : false\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t})}\r\n\t\t\r\n\t);\r\n}\r\n","import { MsalContext } from \"@azure/msal-react\";\r\nimport React, { Component } from \"react\";\r\nimport { CheckForInternalUser } from \"../../Helpers/miscellaneous\";\r\nimport { Tooltip } from \"@progress/kendo-react-tooltip\";\r\n\r\nclass SolutionCards extends Component {\r\n\tstatic contextType = MsalContext\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{this.props.solution.isSuperApp === true && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSUPER APP\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{this.props.solution.isFeaturedApp === true && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tFEATURED APP\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    this.props.selectSolutions(this.props.solution)}>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.props.solution.TilesImageName !== undefined &&\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t
    \r\n\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    {this.props.solution.name}
    \r\n\t\t\t\t\t\t\t

    {this.props.solution.description}

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t{\r\n\t\t\t\t\tthis.props.userRole !== \"App Participant\" &&\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tCheckForInternalUser(this.props.user.email) &&\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{this.props.solution.numberOfTimesCloned ? this.props.solution.numberOfTimesCloned.low : 0}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.props.isShowFromRuntime ?\r\n\t\t\t\t\t\t\t\t this.props.onCreate(this.props.solution)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"btn btn-color px-2 py-1\">Use app\r\n\r\n\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t this.props.UseSolutionTemplate(this.props.solution)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"btn btn-color px-2 py-1\">Use app\r\n\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t
    \r\n\t\t\t\t}\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tgoToDesginer = () => {\r\n\t\tlocalStorage.setItem();\r\n\t};\r\n}\r\n\r\nexport default SolutionCards;\r\n","import { useEffect, useRef } from 'react';\n/**\n * Runs an effect only when the dependencies have changed, skipping the\n * initial \"on mount\" run. Caution, if the dependency list never changes,\n * the effect is **never run**\n *\n * ```ts\n * const ref = useRef(null);\n *\n * // focuses an element only if the focus changes, and not on mount\n * useUpdateEffect(() => {\n * const element = ref.current?.children[focusedIdx] as HTMLElement\n *\n * element?.focus()\n *\n * }, [focusedIndex])\n * ```\n * @param effect An effect to run on mount\n *\n * @category effects\n */\n\nfunction useUpdateEffect(fn, deps) {\n var isFirst = useRef(true);\n useEffect(function () {\n if (isFirst.current) {\n isFirst.current = false;\n return;\n }\n\n return fn();\n }, deps);\n}\n\nexport default useUpdateEffect;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('carousel-caption');","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CarouselItem = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n bsPrefix,\n className,\n ...props\n}, ref) => {\n const finalClassName = classNames(className, useBootstrapPrefix(bsPrefix, 'carousel-item'));\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: finalClassName\n });\n});\nCarouselItem.displayName = 'CarouselItem';\nexport default CarouselItem;","import * as React from 'react';\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n let index = 0;\n return React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child);\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n let index = 0;\n React.Children.forEach(children, child => {\n if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n });\n}\n/**\n * Finds whether a component's `children` prop includes a React element of the\n * specified type.\n */\n\n\nfunction hasChildOfType(children, type) {\n return React.Children.toArray(children).some(child => /*#__PURE__*/React.isValidElement(child) && child.type === type);\n}\n\nexport { map, forEach, hasChildOfType };","import useEventCallback from '@restart/hooks/useEventCallback';\nimport useUpdateEffect from '@restart/hooks/useUpdateEffect';\nimport useCommittedRef from '@restart/hooks/useCommittedRef';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport Anchor from '@restart/ui/Anchor';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport CarouselCaption from './CarouselCaption';\nimport CarouselItem from './CarouselItem';\nimport { map, forEach } from './ElementChildren';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nconst SWIPE_THRESHOLD = 40;\nconst defaultProps = {\n slide: true,\n fade: false,\n controls: true,\n indicators: true,\n indicatorLabels: [],\n defaultActiveIndex: 0,\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n wrap: true,\n touch: true,\n prevIcon: /*#__PURE__*/_jsx(\"span\", {\n \"aria-hidden\": \"true\",\n className: \"carousel-control-prev-icon\"\n }),\n prevLabel: 'Previous',\n nextIcon: /*#__PURE__*/_jsx(\"span\", {\n \"aria-hidden\": \"true\",\n className: \"carousel-control-next-icon\"\n }),\n nextLabel: 'Next'\n};\n\nfunction isVisible(element) {\n if (!element || !element.style || !element.parentNode || !element.parentNode.style) {\n return false;\n }\n\n const elementStyle = getComputedStyle(element);\n return elementStyle.display !== 'none' && elementStyle.visibility !== 'hidden' && getComputedStyle(element.parentNode).display !== 'none';\n}\n\nconst Carousel = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n bsPrefix,\n slide,\n fade,\n controls,\n indicators,\n indicatorLabels,\n activeIndex,\n onSelect,\n onSlide,\n onSlid,\n interval,\n keyboard,\n onKeyDown,\n pause,\n onMouseOver,\n onMouseOut,\n wrap,\n touch,\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n prevIcon,\n prevLabel,\n nextIcon,\n nextLabel,\n variant,\n className,\n children,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n activeIndex: 'onSelect'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'carousel');\n const isRTL = useIsRTL();\n const nextDirectionRef = useRef(null);\n const [direction, setDirection] = useState('next');\n const [paused, setPaused] = useState(false);\n const [isSliding, setIsSliding] = useState(false);\n const [renderedActiveIndex, setRenderedActiveIndex] = useState(activeIndex || 0);\n useEffect(() => {\n if (!isSliding && activeIndex !== renderedActiveIndex) {\n if (nextDirectionRef.current) {\n setDirection(nextDirectionRef.current);\n } else {\n setDirection((activeIndex || 0) > renderedActiveIndex ? 'next' : 'prev');\n }\n\n if (slide) {\n setIsSliding(true);\n }\n\n setRenderedActiveIndex(activeIndex || 0);\n }\n }, [activeIndex, isSliding, renderedActiveIndex, slide]);\n useEffect(() => {\n if (nextDirectionRef.current) {\n nextDirectionRef.current = null;\n }\n });\n let numChildren = 0;\n let activeChildInterval; // Iterate to grab all of the children's interval values\n // (and count them, too)\n\n forEach(children, (child, index) => {\n ++numChildren;\n\n if (index === activeIndex) {\n activeChildInterval = child.props.interval;\n }\n });\n const activeChildIntervalRef = useCommittedRef(activeChildInterval);\n const prev = useCallback(event => {\n if (isSliding) {\n return;\n }\n\n let nextActiveIndex = renderedActiveIndex - 1;\n\n if (nextActiveIndex < 0) {\n if (!wrap) {\n return;\n }\n\n nextActiveIndex = numChildren - 1;\n }\n\n nextDirectionRef.current = 'prev';\n onSelect == null ? void 0 : onSelect(nextActiveIndex, event);\n }, [isSliding, renderedActiveIndex, onSelect, wrap, numChildren]); // This is used in the setInterval, so it should not invalidate.\n\n const next = useEventCallback(event => {\n if (isSliding) {\n return;\n }\n\n let nextActiveIndex = renderedActiveIndex + 1;\n\n if (nextActiveIndex >= numChildren) {\n if (!wrap) {\n return;\n }\n\n nextActiveIndex = 0;\n }\n\n nextDirectionRef.current = 'next';\n onSelect == null ? void 0 : onSelect(nextActiveIndex, event);\n });\n const elementRef = useRef();\n useImperativeHandle(ref, () => ({\n element: elementRef.current,\n prev,\n next\n })); // This is used in the setInterval, so it should not invalidate.\n\n const nextWhenVisible = useEventCallback(() => {\n if (!document.hidden && isVisible(elementRef.current)) {\n if (isRTL) {\n prev();\n } else {\n next();\n }\n }\n });\n const slideDirection = direction === 'next' ? 'start' : 'end';\n useUpdateEffect(() => {\n if (slide) {\n // These callbacks will be handled by the callbacks.\n return;\n }\n\n onSlide == null ? void 0 : onSlide(renderedActiveIndex, slideDirection);\n onSlid == null ? void 0 : onSlid(renderedActiveIndex, slideDirection);\n }, [renderedActiveIndex]);\n const orderClassName = `${prefix}-item-${direction}`;\n const directionalClassName = `${prefix}-item-${slideDirection}`;\n const handleEnter = useCallback(node => {\n triggerBrowserReflow(node);\n onSlide == null ? void 0 : onSlide(renderedActiveIndex, slideDirection);\n }, [onSlide, renderedActiveIndex, slideDirection]);\n const handleEntered = useCallback(() => {\n setIsSliding(false);\n onSlid == null ? void 0 : onSlid(renderedActiveIndex, slideDirection);\n }, [onSlid, renderedActiveIndex, slideDirection]);\n const handleKeyDown = useCallback(event => {\n if (keyboard && !/input|textarea/i.test(event.target.tagName)) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n\n if (isRTL) {\n next(event);\n } else {\n prev(event);\n }\n\n return;\n\n case 'ArrowRight':\n event.preventDefault();\n\n if (isRTL) {\n prev(event);\n } else {\n next(event);\n }\n\n return;\n\n default:\n }\n }\n\n onKeyDown == null ? void 0 : onKeyDown(event);\n }, [keyboard, onKeyDown, prev, next, isRTL]);\n const handleMouseOver = useCallback(event => {\n if (pause === 'hover') {\n setPaused(true);\n }\n\n onMouseOver == null ? void 0 : onMouseOver(event);\n }, [pause, onMouseOver]);\n const handleMouseOut = useCallback(event => {\n setPaused(false);\n onMouseOut == null ? void 0 : onMouseOut(event);\n }, [onMouseOut]);\n const touchStartXRef = useRef(0);\n const touchDeltaXRef = useRef(0);\n const touchUnpauseTimeout = useTimeout();\n const handleTouchStart = useCallback(event => {\n touchStartXRef.current = event.touches[0].clientX;\n touchDeltaXRef.current = 0;\n\n if (pause === 'hover') {\n setPaused(true);\n }\n\n onTouchStart == null ? void 0 : onTouchStart(event);\n }, [pause, onTouchStart]);\n const handleTouchMove = useCallback(event => {\n if (event.touches && event.touches.length > 1) {\n touchDeltaXRef.current = 0;\n } else {\n touchDeltaXRef.current = event.touches[0].clientX - touchStartXRef.current;\n }\n\n onTouchMove == null ? void 0 : onTouchMove(event);\n }, [onTouchMove]);\n const handleTouchEnd = useCallback(event => {\n if (touch) {\n const touchDeltaX = touchDeltaXRef.current;\n\n if (Math.abs(touchDeltaX) > SWIPE_THRESHOLD) {\n if (touchDeltaX > 0) {\n prev(event);\n } else {\n next(event);\n }\n }\n }\n\n if (pause === 'hover') {\n touchUnpauseTimeout.set(() => {\n setPaused(false);\n }, interval || undefined);\n }\n\n onTouchEnd == null ? void 0 : onTouchEnd(event);\n }, [touch, pause, prev, next, touchUnpauseTimeout, interval, onTouchEnd]);\n const shouldPlay = interval != null && !paused && !isSliding;\n const intervalHandleRef = useRef();\n useEffect(() => {\n var _ref, _activeChildIntervalR;\n\n if (!shouldPlay) {\n return undefined;\n }\n\n const nextFunc = isRTL ? prev : next;\n intervalHandleRef.current = window.setInterval(document.visibilityState ? nextWhenVisible : nextFunc, (_ref = (_activeChildIntervalR = activeChildIntervalRef.current) != null ? _activeChildIntervalR : interval) != null ? _ref : undefined);\n return () => {\n if (intervalHandleRef.current !== null) {\n clearInterval(intervalHandleRef.current);\n }\n };\n }, [shouldPlay, prev, next, activeChildIntervalRef, interval, nextWhenVisible, isRTL]);\n const indicatorOnClicks = useMemo(() => indicators && Array.from({\n length: numChildren\n }, (_, index) => event => {\n onSelect == null ? void 0 : onSelect(index, event);\n }), [indicators, numChildren, onSelect]);\n return /*#__PURE__*/_jsxs(Component, {\n ref: elementRef,\n ...props,\n onKeyDown: handleKeyDown,\n onMouseOver: handleMouseOver,\n onMouseOut: handleMouseOut,\n onTouchStart: handleTouchStart,\n onTouchMove: handleTouchMove,\n onTouchEnd: handleTouchEnd,\n className: classNames(className, prefix, slide && 'slide', fade && `${prefix}-fade`, variant && `${prefix}-${variant}`),\n children: [indicators && /*#__PURE__*/_jsx(\"div\", {\n className: `${prefix}-indicators`,\n children: map(children, (_, index) => /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n \"data-bs-target\": \"\" // Bootstrap requires this in their css.\n ,\n \"aria-label\": indicatorLabels != null && indicatorLabels.length ? indicatorLabels[index] : `Slide ${index + 1}`,\n className: index === renderedActiveIndex ? 'active' : undefined,\n onClick: indicatorOnClicks ? indicatorOnClicks[index] : undefined,\n \"aria-current\": index === renderedActiveIndex\n }, index))\n }), /*#__PURE__*/_jsx(\"div\", {\n className: `${prefix}-inner`,\n children: map(children, (child, index) => {\n const isActive = index === renderedActiveIndex;\n return slide ? /*#__PURE__*/_jsx(TransitionWrapper, {\n in: isActive,\n onEnter: isActive ? handleEnter : undefined,\n onEntered: isActive ? handleEntered : undefined,\n addEndListener: transitionEndListener,\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(child, { ...innerProps,\n className: classNames(child.props.className, isActive && status !== 'entered' && orderClassName, (status === 'entered' || status === 'exiting') && 'active', (status === 'entering' || status === 'exiting') && directionalClassName)\n })\n }) : /*#__PURE__*/React.cloneElement(child, {\n className: classNames(child.props.className, isActive && 'active')\n });\n })\n }), controls && /*#__PURE__*/_jsxs(_Fragment, {\n children: [(wrap || activeIndex !== 0) && /*#__PURE__*/_jsxs(Anchor, {\n className: `${prefix}-control-prev`,\n onClick: prev,\n children: [prevIcon, prevLabel && /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: prevLabel\n })]\n }), (wrap || activeIndex !== numChildren - 1) && /*#__PURE__*/_jsxs(Anchor, {\n className: `${prefix}-control-next`,\n onClick: next,\n children: [nextIcon, nextLabel && /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: nextLabel\n })]\n })]\n })]\n });\n});\nCarousel.displayName = 'Carousel';\nCarousel.defaultProps = defaultProps;\nexport default Object.assign(Carousel, {\n Caption: CarouselCaption,\n Item: CarouselItem\n});","import React, { Component } from \"react\";\r\nimport Carousel from \"react-bootstrap/Carousel\";\r\nimport { ENTITY_PLURAL_LABEL } from \"../../Helpers/Labels/EntityLabel\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nclass SolutionDetail extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n integration: \"\",\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n \r\n Back to App Library\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    {this.props.solution.name}

    \r\n
    \r\n
    \r\n\r\n {\r\n this.props.userRole !== \"App Participant\" ?\r\n
    \r\n {\r\n this.props.isShowFromRuntime ?\r\n \r\n :\r\n this.props.UseSolutionTemplate(this.props.solution)}\r\n className=\"mb-1 btn btn-primary\">\r\n \r\n Use App\r\n \r\n }\r\n
    \r\n :\r\n
    \r\n }\r\n\r\n
    \r\n {this.props.solution.isSuperApp === true && (\r\n \r\n SUPER APP\r\n \r\n )}\r\n\r\n {this.props.solution.isFeaturedApp === true && (\r\n \r\n FEATURED APP\r\n \r\n )}\r\n
    \r\n\r\n {\r\n this.props.userRole !== \"App Participant\" ?\r\n
    \r\n You can easily customize your app\r\n
    :\r\n
    \r\n }\r\n\r\n
    \r\n {this.props.solution.tags &&\r\n this.props.solution.tags\r\n .filter((o) => o.length > 0)\r\n .map((tag) => (\r\n \r\n {tag}\r\n \r\n ))}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    Overview
    \r\n {this.props.solution.description && (\r\n
    \r\n {this.props.solution.description}\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n Portals\r\n
    \r\n\r\n {this.props.solution.Portals &&\r\n this.props.solution.Portals.slice(0, 5).map(\r\n (portal, index) => (\r\n
    \r\n \r\n {portal.portalName}\r\n
    \r\n )\r\n )}\r\n {this.props.solution.Portals &&\r\n this.props.solution.Portals.length > 5 && (\r\n
    \r\n \r\n more\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n {ENTITY_PLURAL_LABEL}\r\n
    \r\n {this.props.solution.Entities &&\r\n this.props.solution.Entities.slice(\r\n 0,\r\n 8\r\n ).map((entity, index) => (\r\n
    \r\n \r\n {entity.name}\r\n
    \r\n ))}\r\n {this.props.solution.Entities &&\r\n this.props.solution.Entities.length > 8 && (\r\n
    \r\n \r\n more\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n Features\r\n
    \r\n
    \r\n {this.props.solution.hasTableFeature === true &&
    Table
    }\r\n {this.props.solution.hasCardsFeature === true &&
    Cards
    }\r\n {this.props.solution.hasCalendarFeature === true &&
    Calendar
    }\r\n {this.props.solution.hasSplitViewFeature === true &&
    Split View
    }\r\n {this.props.solution.hasListsFeature === true &&
    Lists
    }\r\n {this.props.solution.hasChartsFeature === true &&
    Charts
    }\r\n {this.props.solution.hasReportingFeature === true &&
    Reporting
    }\r\n {this.props.solution.hasDashboardFeature === true &&
    Dashboard
    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Screenshots\r\n
    \r\n
    \r\n {this.props.solution.SlideshowImages.length > 0 ? (\r\n <>\r\n \r\n {this.props.solution.SlideshowImages.map(\r\n (item) => (\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n )\r\n )}\r\n
    \r\n \r\n ) : (\r\n Image not available to display\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default SolutionDetail;\r\n","import React from 'react';\r\n\r\nconst NoRecord = (props) => {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n props.message ?\r\n props.message\r\n :\r\n \"No record found !\"\r\n }\r\n
    \r\n {props.children}\r\n
    \r\n )\r\n}\r\nexport default NoRecord;","import { getAzureUser } from \"../../API/User/User\";\r\n\r\nexport async function enabledisableOnRuntime(\r\n context,\r\n type,\r\n url,\r\n orgId,\r\n appId,\r\n portalId,\r\n disabled\r\n) {\r\n let token = localStorage.getItem(\"accessToken\");\r\n\r\n let user = await getAzureUser(context)\r\n\r\n var requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + token,\r\n tokentype: \"accesstoken\"\r\n },\r\n };\r\n\r\n var baseURL = process.env.REACT_APP_RUNTIME_API_URL + \"/api/ui/DisableRuntime?\";\r\n var searchParams = new URLSearchParams();\r\n\r\n searchParams.append(\"type\", type);\r\n searchParams.append(\"url\", url);\r\n\r\n if (type === \"Organization\") {\r\n searchParams.append(\"orgId\", orgId);\r\n } else if (type === \"Application\") {\r\n searchParams.append(\"orgId\", orgId);\r\n searchParams.append(\"appId\", appId);\r\n } else {\r\n searchParams.append(\"orgId\", orgId);\r\n searchParams.append(\"appId\", appId);\r\n searchParams.append(\"portalId\", portalId);\r\n }\r\n\r\n searchParams.append(\"disabled\", disabled);\r\n searchParams.append(\"userId\", user.oid);\r\n\r\n let requestURL = baseURL + searchParams.toString();\r\n\r\n let request = await fetch(requestURL, requestOptions);\r\n\r\n let result = await request.json();\r\n\r\n return result;\r\n}\r\n\r\nexport async function deleteOnRuntime(\r\n type,\r\n url,\r\n orgId,\r\n appId,\r\n portalId\r\n) {\r\n\r\n let token = localStorage.getItem(\"accessToken\");\r\n \r\n var requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + token,\r\n tokentype: \"accesstoken\"\r\n },\r\n };\r\n\r\n var baseURL = process.env.REACT_APP_RUNTIME_API_URL + \"/api/ui/DeleteRuntime?\";\r\n var searchParams = new URLSearchParams();\r\n\r\n searchParams.append(\"type\", type);\r\n searchParams.append(\"url\", url);\r\n\r\n if (type === \"Organization\") {\r\n searchParams.append(\"orgId\", orgId);\r\n } else if (type === \"Application\") {\r\n searchParams.append(\"orgId\", orgId);\r\n searchParams.append(\"appId\", appId);\r\n } else {\r\n searchParams.append(\"orgId\", orgId);\r\n searchParams.append(\"appId\", appId);\r\n searchParams.append(\"portalId\", portalId);\r\n }\r\n\r\n let requestURL = baseURL + searchParams.toString();\r\n\r\n let request = await fetch(requestURL, requestOptions);\r\n\r\n let result = await request.json();\r\n\r\n return result;\r\n}","import { enabledisableOnRuntime } from \"../DisableDeleteRuntime\";\r\nimport { getInstances } from \"../Launch\";\r\n\r\nexport function postMessageToRuntime(message) {\r\n window.parent.postMessage(JSON.stringify(message), process.env.REACT_APP_RUNTIME_URL);\r\n}\r\n\r\nexport async function disableAllInstancesOfApplicationOnRuntime(context, organizationId, instances, projectName) {\r\n for (let instance of instances) {\r\n const url = projectName.replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\") + \"_\" + instance._id.slice(0, 5);\r\n try {\r\n let result = await enabledisableOnRuntime(\r\n context,\r\n \"Application\",\r\n url,\r\n organizationId,\r\n instance._id,\r\n null,\r\n true\r\n );\r\n \r\n if (result.status === undefined) {\r\n throw new Error(result.message);\r\n }\r\n } catch (e) {\r\n return [\"error\", e.message];\r\n }\r\n }\r\n return [\"success\", \"Disabled all instances of app on runtime\"];\r\n}\r\n\r\nexport async function disableInstanceOnRuntime(context, organizationId, projectName, instanceId) {\r\n const url = projectName.replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\") + \"_\" + instanceId.slice(0, 5);\r\n try {\r\n let result = await enabledisableOnRuntime(\r\n context,\r\n \"Application\",\r\n url,\r\n organizationId,\r\n instanceId,\r\n null,\r\n true\r\n );\r\n\r\n if (result.status === undefined) {\r\n throw new Error(result.message);\r\n }\r\n return {\r\n status: \"success\",\r\n message: \"Disabled instance on runtime\"\r\n }\r\n } catch (e) {\r\n return {\r\n status: \"error\",\r\n message: e.message\r\n }\r\n }\r\n}\r\n\r\nexport async function enableInstanceOnRuntime(context, organizationId, projectName, instanceId) {\r\n const url = projectName.replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\") + \"_\" + instanceId.slice(0, 5);\r\n try {\r\n let result = await enabledisableOnRuntime(\r\n context,\r\n \"Application\",\r\n url,\r\n organizationId,\r\n instanceId,\r\n null,\r\n false\r\n );\r\n\r\n if (result.status === undefined) {\r\n throw new Error(result.message);\r\n }\r\n\r\n return {\r\n status: \"success\",\r\n message: \"Disabled instance on runtime\"\r\n }\r\n } catch (e) {\r\n return {\r\n status: \"error\",\r\n message: e.message\r\n }\r\n }\r\n}","import React from 'react'\r\nimport upgradePackages from './UpgradePackage';\r\nimport { postMessageToRuntime } from '../../Helpers/Runtime/runtime';\r\n\r\n// TODO: Add translations for the following UpgradeContent component\r\nconst UpgardeContent = (props) => {\r\n const {\r\n showInline,\r\n showBackButton,\r\n onBack,\r\n toggleDialog,\r\n Type,\r\n Headline,\r\n organization,\r\n isShowFromWorkspace\r\n } = props\r\n\r\n const redirectToUpgradeSubscription = (event) => {\r\n event.preventDefault()\r\n sendOpenPopupMessageToRuntime();\r\n toggleDialog();\r\n }\r\n\r\n function sendOpenPopupMessageToRuntime() {\r\n postMessageToRuntime({\r\n eventType: \"OPEN_PRICING_POPUP\"\r\n })\r\n }\r\n\r\n const upgradePackage = upgradePackages[Type];\r\n\r\n return (\r\n \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // \"responsive\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // {/*
    \r\n //
    \r\n //
    \r\n // {upgradePackage.Description}--\r\n //
    \r\n //
    \r\n //
    */}\r\n //
    \r\n //
    \r\n //
    \r\n // {upgradePackage.FeatureHeader}\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // {upgradePackage.Feature1}\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // {upgradePackage.Feature2}\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // {upgradePackage.Feature3}\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // {upgradePackage.Feature4}\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // {upgradePackage.Feature5}\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // {upgradePackage.Feature6}\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // {\r\n // showBackButton &&\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 \"responsive\r\n
    \r\n
    \r\n
    It's time to upgrade.
    \r\n
    \r\n
    \r\n Congratulations on the success of your app! \r\n

    It seems you've reached the full potential of your current plan.

    \r\n To continue expanding your capabilities and accommodate larger apps,
    as well as invite more users, we recommend upgrading to a higher plan.\r\n \r\n
    \r\n
    \r\n
    \r\n {\r\n showBackButton &&\r\n \r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default UpgardeContent\r\n","import React from 'react'\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport UpgardeContent from './UpgradeContent';\r\n\r\nconst Upgarde = ({ toggleDialog, Type, Headline, organization }) => {\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Upgarde\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n// import { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport React, { Component } from \"react\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\";\r\nimport { getNode } from \"../../Helpers/Nodes\";\r\nimport Upgarde from \"../../Shared/Subscription/Upgrade\";\r\nimport { cloneProject } from \"../../../API/Project/project\";\r\nimport ShuffleMessage from \"../../Shared/ShuffleMessage/ShuffleMessage\";\r\nimport { bindShuffleMessageI18nEvents, messages } from \"../../Shared/ShuffleMessage/MessagesHelper\";\r\n\r\nclass UseSolutionTemplate extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedOrganization: {},\r\n redirect: false,\r\n CreatingProject: false,\r\n CreatingProjectName: \"\",\r\n showUpgradeDailog: false,\r\n error: {\r\n isValid: false,\r\n type: \"\",\r\n message: \"\",\r\n }\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n bindShuffleMessageI18nEvents();\r\n this.setState({\r\n selectedOrganization: this.props.organization\r\n });\r\n };\r\n\r\n render() {\r\n if (this.state.redirect) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (this.state.showUpgradeDailog) {\r\n return (\r\n more apps? '}\r\n toggleDialog={this.toggleUpgradeDailog}\r\n Type={'Pro'}\r\n />\r\n )\r\n }\r\n\r\n if (this.state.CreatingProject) {\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 return (\r\n \r\n
    \r\n {this.state.error.isValid && (\r\n
    \r\n
    \r\n {this.state.error.message}\r\n
    \r\n
    \r\n )}\r\n
    Selected app
    \r\n
    \r\n {\r\n this.props.solution.TilesImageName !== undefined &&\r\n \r\n }\r\n
    \r\n
    \r\n \r\n {this.props.solution.name}\r\n \r\n {this.props.solution.isSuperApp === true && (\r\n \r\n \r\n SUPER APP\r\n \r\n )}\r\n\r\n {this.props.solution.isFeaturedApp ===\r\n \"true\" && (\r\n \r\n \r\n FEATURED APP\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n {this.props.solution.description}\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n {this.state.CreatingProject && (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n Use App\r\n \r\n
    \r\n \r\n \r\n );\r\n }\r\n\r\n // handleOrganization = (e) => {\r\n // this.setState({\r\n // selectedOrganization: e.target.value,\r\n // });\r\n // };\r\n\r\n toggleUpgradeDailog = () => {\r\n this.props.onClose()\r\n }\r\n\r\n cloneProject = async (e) => {\r\n e.preventDefault();\r\n this.setState({\r\n CreatingProject: true\r\n })\r\n let project = await getNode(this.props.solution.id, \"Project\");\r\n let response = await cloneProject(project, this.props.user, this.state.selectedOrganization)\r\n if (response.status === \"success\") {\r\n this.setState({\r\n redirect: true,\r\n CreatingProjectName: response.data.name,\r\n CreatingProject: false,\r\n });\r\n } else {\r\n this.setState({\r\n CreatingProject: false,\r\n showUpgradeDailog: response.error.type === \"upgrade\" ? true : false,\r\n error: response.error\r\n })\r\n }\r\n };\r\n}\r\n\r\nexport default UseSolutionTemplate;\r\n","import React from 'react';\r\n\r\nfunction AppsByCategoryTagHeader({ tag, numberOfProjects, onSeeAllClick }) {\r\n\r\n function handleSeeAllClick() {\r\n onSeeAllClick({ templateName: tag });\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n { tag }\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default AppsByCategoryTagHeader;","import React from 'react';\r\nimport AppsByCategoryTagHeader from './AppsByCategoryTagHeader';\r\nimport { filterProjectsByTag } from './filter';\r\nimport SolutionCards from './SolutionCards';\r\n\r\nfunction AllLibraryAppsByCategory({ tags, projects, accessedFromWorkspace, onProjectSelect, onUseAppClick, onSeeAllClick , userRole, user }) {\r\n return (\r\n
    \r\n {\r\n tags.map((tag, index) => (\r\n \r\n ))\r\n }\r\n
    \r\n );\r\n}\r\n\r\nfunction ListOfThreeProjectWithSameTag({ projects, tag, accessedFromWorkspace, onProjectSelect, onUseAppClick, onSeeAllClick, userRole, user }) {\r\n const projectsWithSameTags = filterProjectsByTag(projects, tag);\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n {\r\n projectsWithSameTags.slice(0, 3).map((project) => (\r\n
    \r\n onProjectSelect(project)}\r\n isShowFromRuntime={accessedFromWorkspace}\r\n onCreate={onUseAppClick}\r\n UseSolutionTemplate={onUseAppClick} />\r\n
    \r\n ))\r\n }\r\n
    \r\n \r\n );\r\n}\r\n\r\nexport default AllLibraryAppsByCategory;","export function filterProjectsByTag(projects, tag) {\r\n return projects.filter(project => (project.tags.includes(tag)));\r\n}","import React, { Component } from \"react\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport SolutionCards from \"./SolutionCards\";\r\nimport SolutionDetail from \"./SolutionDetail\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { PageContainer, Content } from \"../../Drawer/PageContainer\";\r\nimport NoRecord from \"../../Display/NoRecord\";\r\nimport UseSolutionTemplate from \"./UseSolutionTemplate\";\r\nimport AllLibraryAppsByCategory from \"./AllLibraryAppsByCategory\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\n\r\nclass SolutionCollection extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Solutions: [...this.props.Data],\r\n selectedSolution: { id: \"\", },\r\n UseSolutionTemplate: { id: \"\", },\r\n solutionFilter: \"\",\r\n loading: true,\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n await this.SetData(this.props);\r\n };\r\n\r\n componentWillReceiveProps = async (props) => {\r\n await this.SetData(props);\r\n };\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n
    \r\n {this.state.selectedSolution.id !== \"\" && (\r\n \r\n )}\r\n\r\n {this.state.UseSolutionTemplate.id !== \"\" && (\r\n \r\n )}\r\n\r\n {this.state.selectedSolution.id === \"\" && (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n App Library\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.props.selectedTemplate.templateName}\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n {\r\n this.props.selectedTemplate.templateName === \"All Apps\" &&\r\n this.state.solutionFilter.trim() === \"\" &&\r\n
    \r\n \r\n
    \r\n }\r\n {\r\n (\r\n this.props.selectedTemplate.templateName !== \"All Apps\" ||\r\n this.state.solutionFilter.trim() !== \"\"\r\n ) &&\r\n this.state.Solutions.length !== 0 &&\r\n this.state.Solutions.map((solution, index) => (\r\n
    \r\n this.handleSelectedTemplate(solution)}\r\n solution={solution}\r\n userRole={this.props.userRole}\r\n user={this.props.user}\r\n onCreate={this.props.onCreate}\r\n isShowFromRuntime={this.props.isShowFromRuntime}\r\n />\r\n
    \r\n ))\r\n }\r\n
    \r\n
    \r\n
    \r\n {this.state.Solutions.length === 0 && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Don't find what you're looking for?\r\n \r\n \r\n\r\n create you app from scratch\r\n \r\n \r\n |\r\n \r\n\r\n Collab with Alice\r\n \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n SetData = async (props) => {\r\n let SolutionsData = [...props.Data];\r\n let solutionFilter = (\r\n props.selectedTemplate.templateName === this.props.selectedTemplate.templateName ?\r\n this.state.solutionFilter :\r\n \"\"\r\n );\r\n if (props.selectedTemplate.templateName !== \"All Apps\") {\r\n if (props.selectedTemplate.templateName === \"Super App\") {\r\n SolutionsData = SolutionsData.filter(\r\n (item) => item.isSuperApp === true\r\n );\r\n } else if (props.selectedTemplate.templateName === \"Featured\") {\r\n SolutionsData = SolutionsData.filter(\r\n (item) => item.isFeaturedApp === true\r\n );\r\n } else {\r\n SolutionsData = SolutionsData.filter((item) =>\r\n item.tag.includes(props.selectedTemplate.templateName)\r\n );\r\n }\r\n }\r\n\r\n this.setState({\r\n Solutions: SolutionsData,\r\n selectedSolution: { id: \"\", },\r\n UseSolutionTemplate: {\r\n id: \"\",\r\n },\r\n loading: false,\r\n solutionFilter,\r\n });\r\n };\r\n\r\n handleSelectedTemplate = (dataItem) => {\r\n this.setState({\r\n selectedSolution: dataItem,\r\n });\r\n };\r\n\r\n handleShowUseSolutionTemplate = (dataItem) => {\r\n this.setState({\r\n UseSolutionTemplate: dataItem,\r\n });\r\n };\r\n\r\n handleCloseUseSolutionTemplate = () => {\r\n this.setState({\r\n UseSolutionTemplate: {\r\n id: \"\",\r\n }\r\n });\r\n };\r\n\r\n handleBack = () => {\r\n this.setState({\r\n selectedSolution: {\r\n id: \"\",\r\n },\r\n });\r\n };\r\n\r\n filterSolutions = (e) => {\r\n let SolutionsData = [...this.props.Data];\r\n debugger;\r\n if (e.target.value.trim() !== \"\") {\r\n SolutionsData = SolutionsData.filter((item) =>\r\n item.name.toLowerCase().includes(e.target.value.trim().toLowerCase())\r\n );\r\n }\r\n if (this.props.selectedTemplate.templateName !== \"All Apps\") {\r\n if (this.props.selectedTemplate.templateName === \"Super App\") {\r\n SolutionsData = SolutionsData.filter(\r\n (item) => item.isSuperApp === true\r\n );\r\n } else if (\r\n this.props.selectedTemplate.templateName === \"Featured\"\r\n ) {\r\n SolutionsData = SolutionsData.filter(\r\n (item) => item.isFeaturedApp === true\r\n );\r\n } else {\r\n SolutionsData = SolutionsData.filter((item) =>\r\n item.tag.includes(this.props.selectedTemplate.templateName)\r\n );\r\n }\r\n }\r\n\r\n this.setState({\r\n Solutions: SolutionsData,\r\n solutionFilter: e.target.value,\r\n });\r\n };\r\n\r\n navigateToAllApps = () => {\r\n if (this.state.solutionFilter.trim() === \"\") {\r\n this.props.onSeeAllClick({\r\n templateName: \"All Apps\"\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default SolutionCollection;\r\n","import React, { Component } from 'react';\r\nimport { getNode } from '../../Helpers/Nodes';\r\nimport UpgardeContent from '../../Shared/Subscription/UpgradeContent';\r\nimport { cloneProject, deleteProjectFromDesigner, getProject, updateProject, updateProjectInstance } from '../../../API/Project/project';\r\nimport { bindShuffleMessageI18nEvents, messages } from '../../Shared/ShuffleMessage/MessagesHelper';\r\nimport { updateNode } from '../../Helpers/Nodes';\r\nimport { getCompressedJson } from '../../../API/Export/ExportApi';\r\nimport { publishApplication } from '../../Helpers/Launch';\r\nimport { MsalContext } from '@azure/msal-react';\r\nimport { updateProjectPortalConfig } from '../../Helpers/Launch';\r\nimport { InProgressPublishContent } from '../../PublishToRuntime/InProgressPublish';\r\nimport { FailurePublishContent } from \"../../PublishToRuntime/FailurePublish\"\r\nimport { SuccessfulPublishContent } from '../../PublishToRuntime/SuccessfulPublish';\r\nimport { callApiWithAuthorization } from '../../../API/CallApi';\r\nimport { generateIncrementalChanges, generatePageConfiguration, removePlaceholderLinks } from '../../../API/Generation/Generation';\r\nimport { isAccessedInIframe } from '../../Helpers/Iframe/iframe';\r\nimport { postMessageToRuntime } from '../../Helpers/Runtime/runtime';\r\nimport { getAzureUser } from '../../../API/User/User';\r\nimport { deleteDirectory } from '../../Helpers/DateLakeStorage';\r\n\r\nclass PublishingAppToWorkspace extends Component {\r\n\r\n static contextType = MsalContext\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n app: { status: \"InProgress\" },\r\n error: {\r\n isValid: true,\r\n message: \"\",\r\n type: \"\"\r\n }\r\n }\r\n }\r\n\r\n componentWillMount = async () => {\r\n\r\n bindShuffleMessageI18nEvents();\r\n const { user, organization, selectedApp } = this.props\r\n try {\r\n console.time(\"Designer\");\r\n let project = await getProject(selectedApp._id)\r\n let response = await cloneProject(project, user, organization)\r\n\r\n if (response.status === \"success\") {\r\n try {\r\n const validationResult = await this.validateProject(response.data);\r\n if (validationResult.error) {\r\n let error = {\r\n message: validationResult.error\r\n }\r\n throw error\r\n } else {\r\n await this.publishProject(response.data)\r\n }\r\n } catch (error) {\r\n await deleteProjectFromDesigner(response.data._id)\r\n let path = organization._id + \"/\" + response.data._id;\r\n deleteDirectory(path, response.data._id);\r\n this.setState({\r\n app: { status: \"Failure\", name: response.data?.name },\r\n error: error.message\r\n })\r\n }\r\n } else {\r\n this.setState({\r\n app: { status: \"Failure\", name: response.data?.name },\r\n error: response.error\r\n })\r\n }\r\n } catch (error) {\r\n this.setState({\r\n app: { status: \"Failure\", name: selectedApp.name },\r\n error: error.message\r\n })\r\n }\r\n }\r\n\r\n render() {\r\n let { error, app } = this.state\r\n if (error.isValid === false && error.type === \"upgrade\") {\r\n return (\r\n
    \r\n more apps? '}\r\n toggleDialog={this.toggleUpgradeDialog}\r\n Type={'Pro'}\r\n />\r\n
    \r\n )\r\n }\r\n if (error.isValid === false) {\r\n return (\r\n
    \r\n
    \r\n {error.message}\r\n
    \r\n
    \r\n )\r\n }\r\n if (app.status === \"Success\") {\r\n return (\r\n \r\n )\r\n }\r\n if (app.status === \"Failure\") {\r\n return (\r\n \r\n )\r\n }\r\n return (\r\n \r\n )\r\n }\r\n\r\n getProject = async (id) => {\r\n const request = await callApiWithAuthorization(`/api/v0/project/${id}`);\r\n const response = await request.json();\r\n return response;\r\n }\r\n\r\n validateProject = async (project) => {\r\n const instance = project.instances.find(instance => instance.instanceType === \"Production\")\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/project/\" + project._id + \"/validateForPublish\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n instanceId: instance.id,\r\n projectId: project._id\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n }\r\n\r\n publishProject = async (dataItem) => {\r\n const user = await getAzureUser(this.context)\r\n const userId = user.oid\r\n const { _id: organizationId } = this.props.organization;\r\n const instance = dataItem.instances.find(instance => instance.instanceType === \"Production\")\r\n const projectHasDisplayPages = await this.checkIfProjectHasDisplayPages(dataItem._id);\r\n let compressedJson;\r\n if (projectHasDisplayPages) {\r\n compressedJson = await this.performIncrementalGeneration(\r\n dataItem._id, organizationId, userId, instance._id\r\n )\r\n } else {\r\n await this.performFullGeneration(dataItem._id)\r\n compressedJson = await this.getCompressedJson(instance._id, dataItem._id)\r\n }\r\n console.timeEnd(\"Designer\");\r\n let response = await this.publishJsonToRuntime(compressedJson, instance, dataItem)\r\n if (response.status === \"Success\") {\r\n await updateProjectInstance(dataItem._id, instance._id, { Published: true, appId: response.data.appId })\r\n await updateProject(dataItem._id, { isDbChanged: false, hasSchemaChanges: false })\r\n } else {\r\n throw response\r\n }\r\n if (this.props.onCreate) {\r\n this.props.onCreate(dataItem);\r\n }\r\n this.setState({\r\n app: {\r\n ...dataItem,\r\n status: response.status\r\n }\r\n })\r\n if (this.props.openedInRuntime) {\r\n if (isAccessedInIframe()) {\r\n let url = response.data.appUrl + \"/\" + (dataItem.defaultPortal && dataItem.defaultPortal.id ? dataItem.defaultPortal.urlName : \"\")\r\n postMessageToRuntime({\r\n type: \"projectCreated\",\r\n openAppUrl: url\r\n })\r\n }\r\n } else {\r\n if (response.status === \"Success\") {\r\n let url = response.data.appUrl + \"/\" + (dataItem.defaultPortal && dataItem.defaultPortal.id ? dataItem.defaultPortal.urlName : \"\")\r\n window.open(url, \"_blank\").focus();\r\n }\r\n }\r\n }\r\n\r\n checkIfProjectHasDisplayPages = async (projectId) => {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/project/\" + projectId + \"/hasDisplayPages\"\r\n );\r\n const response = await request.json();\r\n const { hasPages } = response;\r\n return hasPages;\r\n };\r\n\r\n performIncrementalGeneration = async (projectId, organizationId, userId, instanceId) => {\r\n const [compressedJson, generationError] =\r\n await generateIncrementalChanges(\r\n projectId,\r\n organizationId,\r\n userId,\r\n instanceId,\r\n false,\r\n false\r\n );\r\n\r\n await callApiWithAuthorization(\r\n \"/api/v0/project/\" +\r\n projectId +\r\n \"/removeAllChanges\",\r\n {\r\n method: \"DELETE\",\r\n }\r\n );\r\n\r\n return compressedJson;\r\n };\r\n\r\n performFullGeneration = async (projectId) => {\r\n const [generationResponse, generationError] =\r\n await generatePageConfiguration(projectId);\r\n\r\n if (generationError !== null) {\r\n throw new Error(generationError);\r\n }\r\n\r\n await removePlaceholderLinks(projectId);\r\n\r\n await callApiWithAuthorization(\r\n \"/api/v0/project/\" +\r\n projectId +\r\n \"/removeAllChanges\",\r\n {\r\n method: \"DELETE\",\r\n }\r\n );\r\n };\r\n\r\n getCompressedJson = async (instanceId, projectId) => {\r\n const { user, organization } = this.props;\r\n const compressedJson = await getCompressedJson(\r\n projectId,\r\n organization.id,\r\n user.azureId,\r\n instanceId,\r\n false,\r\n false\r\n );\r\n // updateNode(\"Project\", projectId, {\r\n // hasSchemaChanges: false,\r\n // isDbChanged: false,\r\n // });\r\n return compressedJson;\r\n }\r\n\r\n publishJsonToRuntime = async (compressedJson, instance, project) => {\r\n // updateProjectPortalConfig(project.id)\r\n console.time(\"Runtime\");\r\n let result = await publishApplication(this.context, instance, compressedJson, true)\r\n console.timeEnd(\"Runtime\");\r\n debugger;\r\n return result;\r\n };\r\n\r\n UpdateInstance = async (instance, response) => {\r\n await updateNode(\"Instance\", instance.id, {\r\n appId: response.data.appId,\r\n status: response.status,\r\n Published: true,\r\n });\r\n }\r\n}\r\n\r\nexport default PublishingAppToWorkspace;","export function isAccessedInIframe() {\r\n return window.self !== window.top;\r\n}","export default (data, customEntities) => {\r\n return data.sort((a, b) => {\r\n const aMatch = customEntities.find(entity => entity.name.toLowerCase() === a.name.toLowerCase());\r\n const bMatch = customEntities.find(entity => entity.name.toLowerCase() === b.name.toLowerCase());\r\n if (aMatch && bMatch) {\r\n return 0;\r\n }\r\n if (aMatch) {\r\n return -1;\r\n }\r\n if (bMatch) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n}","export default {\r\n DATA_LOADED: \"DATA_LOADED\",\r\n NO_ENTITY_RECOMMENDED: \"NO_ENTITY_RECOMMENDED\",\r\n ENTITY_SELECTED: \"ENTITY_SELECTED\",\r\n ENTITY_TOGGLED: \"ENTITY_TOGGLED\",\r\n ENTITY_DESELECTED: \"ENTITY_DESELECTED\",\r\n ENTITY_EXPANDED: \"ENTITY_EXPANDED\",\r\n ATTRIBUTE_SELECTED: \"ATTRIBUTE_SELECTED\",\r\n ATTRIBUTE_TOGGLED: \"ATTRIBUTE_TOGGLED\",\r\n ATTRIBUTE_DESELECTED: \"ATTRIBUTE_DESELECTED\",\r\n RELATIONS_LOADED: \"RELATIONS_LOADED\",\r\n RELATION_SELECTED: \"RELATION_SELECTED\",\r\n RELATION_DESELECTED: \"RELATION_DESELECTED\",\r\n COLD_START: \"COLD_START\",\r\n NEXT_ENTITY_SET_LOADED: \"NEXT_ENTITY_SET_LOADED\",\r\n START_LOADING: \"START_LOADING\",\r\n ENTITY_RECOMMENDED: \"ENTITY_RECOMMENDED\",\r\n TOGGLE_SHOW_MORE_OPTION: \"TOGGLE_SHOW_MORE_OPTION\",\r\n RELATIONS_SELECTED: \"RELATIONS_SELECTED\",\r\n RELATIONS_DESELECTED: \"RELATIONS_DESELECTED\",\r\n TOGGLE_SELECT_ALL_ENTITIES: \"TOGGLE_SELECT_ALL_ENTITIES\",\r\n TOGGLE_SHOW_LIBRARY_ATTRIBUTES: \"TOGGLE_SHOW_LIBRARY_ATTRIBUTES\",\r\n TOGGLE_SHOW_ORGANIZATION_ATTRIBUTES: \"TOGGLE_SHOW_ORGANIZATION_ATTRIBUTES\",\r\n CUSTOM_ENTITIES_CHANGED: \"CUSTOM_ENTITIES_CHANGED\",\r\n SET_CREATING_DATA: \"SET_CREATING_DATA\",\r\n RELATION_SWAP: \"RELATION_SWAP\",\r\n}","import sortDataInSameOrderAsCustomEntities from \"./sortDataInSameOrderAsCustomEntities\";\r\nimport TYPES from \"./TYPES\";\r\n\r\nexport default (state, action) => {\r\n switch (action.type) {\r\n case TYPES.DATA_LOADED: {\r\n return {\r\n ...state,\r\n loading: false,\r\n entitiesLoaded: true,\r\n data: action.payload.map(item => ({\r\n ...item,\r\n expanded: false,\r\n selected: item.selected || !!item.requiredInAlice,\r\n numRequiredAttributes: item.attributes.filter(attr => attr.requiredInAlice === \"true\").length,\r\n attributes: item.attributes.map((attr) => ({\r\n ...attr,\r\n selected: !!item.requiredInAlice\r\n }))\r\n })),\r\n }\r\n }\r\n case TYPES.NO_ENTITY_RECOMMENDED:\r\n return {\r\n ...state,\r\n showNoEntitiesMessage: true\r\n }\r\n case TYPES.ENTITY_SELECTED: {\r\n const newData = state.data.map(element => {\r\n if (element.id === action.payload.id) {\r\n const newAttributes = element.attributes.map((attr, index) => ({\r\n ...attr, selected: index < 20\r\n }));\r\n return {\r\n ...element,\r\n selected: true,\r\n attributes: newAttributes\r\n };\r\n };\r\n\r\n return element;\r\n })\r\n return {\r\n ...state,\r\n data: newData\r\n }\r\n }\r\n case TYPES.ENTITY_DESELECTED: {\r\n const newData = state.data.map(element => {\r\n if (element.id === action.payload.id) {\r\n const newAttributes = element.attributes.map(attr => ({\r\n ...attr, selected: false\r\n }))\r\n return {\r\n ...element,\r\n selected: false,\r\n attributes: newAttributes\r\n }\r\n };\r\n\r\n return element;\r\n });\r\n\r\n return {\r\n ...state,\r\n data: newData\r\n }\r\n }\r\n case TYPES.ENTITY_EXPANDED: {\r\n const data = state.data.map((item) => {\r\n if (item.id === action.payload.id) {\r\n return {\r\n ...item,\r\n expanded: !item.expanded\r\n }\r\n }\r\n \r\n return item;\r\n });\r\n return {\r\n ...state,\r\n data\r\n }\r\n }\r\n case TYPES.ATTRIBUTE_SELECTED: {\r\n const { entityId, attributeId } = action.payload;\r\n const newData = state.data.map(element => {\r\n if (element.id === entityId) {\r\n const newAttributes = element.attributes.map(attr => {\r\n if (attr.id === attributeId) {\r\n return {\r\n ...attr,\r\n selected: true\r\n }\r\n }\r\n\r\n return attr;\r\n });\r\n\r\n return {\r\n ...element,\r\n selected: true,\r\n attributes: newAttributes\r\n }\r\n };\r\n\r\n return element;\r\n })\r\n return {\r\n ...state,\r\n data: newData\r\n }\r\n }\r\n case TYPES.ATTRIBUTE_DESELECTED: {\r\n const { entityId, attributeId } = action.payload;\r\n const newData = state.data.map(element => {\r\n if (element.id === entityId) {\r\n const newAttributes = element.attributes.map(attr => {\r\n if (attr.id === attributeId) {\r\n return {\r\n ...attr,\r\n selected: false\r\n }\r\n }\r\n\r\n return attr;\r\n });\r\n\r\n const selected = newAttributes.some(attr => attr.selected);\r\n\r\n return {\r\n ...element,\r\n selected,\r\n attributes: newAttributes\r\n }\r\n }\r\n\r\n return element;\r\n })\r\n return {\r\n ...state,\r\n data: newData\r\n }\r\n }\r\n case TYPES.RELATIONS_LOADED:\r\n return {\r\n ...state,\r\n relationsLoaded: true,\r\n relations: action.payload.map((relation, index) => ({\r\n ...relation,\r\n id: index,\r\n // This is done to retain selection when\r\n // used in create project or workspace\r\n // as the relations are loaded when the entity selection changes\r\n selected: relation.selected || false\r\n }))\r\n }\r\n case TYPES.RELATION_SELECTED:\r\n return {\r\n ...state,\r\n relations: state.relations.map(relation => {\r\n if (relation.id === action.payload.id) {\r\n return {\r\n ...relation,\r\n selected: true\r\n }\r\n }\r\n\r\n return relation;\r\n })\r\n }\r\n case TYPES.RELATION_DESELECTED:\r\n return {\r\n ...state,\r\n relations: state.relations.map(relation => {\r\n if (relation.id === action.payload.id) {\r\n return {\r\n ...relation, selected: false\r\n }\r\n }\r\n\r\n return relation;\r\n })\r\n }\r\n case TYPES.COLD_START: {\r\n return {\r\n ...state,\r\n isColdStart: true\r\n }\r\n }\r\n case TYPES.NEXT_ENTITY_SET_LOADED: {\r\n return {\r\n ...state,\r\n data: [\r\n ...state.data,\r\n ...action.payload\r\n ]\r\n }\r\n }\r\n case TYPES.START_LOADING: {\r\n return {\r\n ...state,\r\n loading: true\r\n }\r\n }\r\n case TYPES.ENTITY_RECOMMENDED:\r\n return {\r\n ...state,\r\n showNoEntitiesMessage: false\r\n }\r\n case TYPES.TOGGLE_SHOW_MORE_OPTION:\r\n return {\r\n ...state,\r\n isShowMoreOptionVisible: !state.isShowMoreOptionVisible\r\n }\r\n case TYPES.RELATIONS_SELECTED:\r\n debugger;\r\n return {\r\n ...state,\r\n relations: state.relations.map(relation => ({\r\n ...relation,\r\n selected: true\r\n }))\r\n }\r\n case TYPES.RELATIONS_DESELECTED:\r\n return {\r\n ...state,\r\n relations: state.relations.map(relation => ({\r\n ...relation,\r\n selected: false\r\n }))\r\n }\r\n case TYPES.TOGGLE_SELECT_ALL_ENTITIES: {\r\n // select all entities if none or some are selected\r\n // else deselect all entities\r\n const selected = state.data.every(entity => entity.selected);\r\n const newData = state.data.map(entity => ({\r\n ...entity,\r\n selected: entity.requiredInAlice === \"true\" ? true : !selected,\r\n attributes: entity.attributes.map((attr, index) => {\r\n let isSelected = attr.selected;\r\n if (entity.requiredInAlice === \"true\" && entity.numRequiredAttributes === 0) {\r\n isSelected = index === 0;\r\n } else if (attr.requiredInAlice === \"true\") {\r\n isSelected = true;\r\n } else {\r\n isSelected = !entity.selected && index < 20;\r\n }\r\n return {\r\n ...attr,\r\n selected: isSelected\r\n }\r\n })\r\n }));\r\n return {\r\n ...state,\r\n data: newData \r\n }\r\n }\r\n case TYPES.TOGGLE_SHOW_LIBRARY_ATTRIBUTES: {\r\n // toggle showLibraryAttributes\r\n return {\r\n ...state,\r\n showLibraryAttributes: !state.showLibraryAttributes\r\n }\r\n }\r\n case TYPES.TOGGLE_SHOW_ORGANIZATION_ATTRIBUTES: {\r\n // toggle showOrganizationAttributes\r\n return {\r\n ...state,\r\n showOrganizationAttributes: !state.showOrganizationAttributes\r\n }\r\n }\r\n case TYPES.CUSTOM_ENTITIES_CHANGED: {\r\n const customEntities = action.payload;\r\n const newData = sortDataInSameOrderAsCustomEntities(state.data, customEntities).map(entity => {\r\n const customEntity = customEntities.some(customEntity => customEntity.name.toLowerCase() === entity.name.toLowerCase());\r\n return {\r\n ...entity,\r\n selected: customEntity,\r\n attributes: entity.attributes.map((attr, index) => ({\r\n ...attr,\r\n selected: customEntity && index < 20\r\n }))\r\n }\r\n });\r\n\r\n return {\r\n ...state,\r\n data: newData\r\n }\r\n }\r\n case TYPES.SET_CREATING_DATA: {\r\n return {\r\n ...state,\r\n creatingData: action.payload\r\n }\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport const getRecommendationUsingUserEntities = async (entityNames, organizationId, projectTypes, skip) => {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/recommend/entity\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n entityNames,\r\n organizationId,\r\n projectTypes,\r\n skip\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport const getRecommendationUsingUserInput = async (entityNames, organizationId, projectTypes, skip) => {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/recommend/entity/using-input\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n entityNames,\r\n organizationId,\r\n projectTypes,\r\n skip\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport const getColdStartData = async (organizationId, projectTypes, skip, includeAlwaysRecommended) => {\r\n const request = await callApiWithAuthorization(\"/api/v0/recommend/entity/no-data\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n organizationId, projectTypes, skip, includeAlwaysRecommended\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport const importEntities = async (projectId, data) => {\r\n const request = await callApiWithAuthorization(\"/api/v0/recommend/entity/import\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n projectId, data\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n};\r\n\r\nexport const getRecommendedEntityRelations = async (entityNames, organizationId, projectId) => {\r\n debugger\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/recommend/relation\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n entityNames,\r\n projectId\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport const importEntityRelations = async (selectedRelations, projectId) => {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/recommend/relation/import\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n selectedRelations,\r\n projectId,\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getNumberOfEntitiesAndRelations(projectId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/project/${projectId}/numberOfEntitiesAndRelations`,\r\n );\r\n const response = await request.json();\r\n return response;\r\n}","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function getActiveProducts() {\r\n const request = await callApiWithAuthorization(\"/api/v0/payment/activeProducts\");\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function createCheckoutUrl(customerId, priceId, quantity) {\r\n const request = await callApiWithAuthorization(\"/api/v0/payment/checkout\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ customerId, priceId, quantity }),\r\n });\r\n const response = await request.json();\r\n return response.url;\r\n}\r\n\r\nexport async function checkIfCustomerHasPaymentMethodSetup(organizationId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/hasPaymentMethod\");\r\n const response = await request.json();\r\n return response.customerHasPaymentMethod;\r\n}\r\n\r\nexport async function getCurrentSubscriptionForOrganisation(organisationId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/getOrganizationSubscription/\" + organisationId);\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getCurrentSubscriptionStripeDataForOrganisation(organizationId) {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/organization/\" + organizationId + \"/stripe/subscription\"\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateNumberOfSeats(organizationId, subscriptionId, seats, paymentMethodId) {\r\n const request = await callApiWithAuthorization(`/api/v0/organization/${organizationId}/seats`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n subscriptionId, seats, paymentMethodId\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateSubscriptionPrice(organizationId, subscriptionId, priceId, seats, paymentMethodId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/organization/${organizationId}/subscription`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n subscriptionId,\r\n priceId,\r\n seats,\r\n paymentMethodId\r\n }),\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function handleRemovedUsers(organizationId, users) {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/payment/seats/changeAtPeriodEnd\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n users,\r\n }),\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getSubscriptionParameters(stripeProductId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/subscription/\" + stripeProductId);\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getNewPrice(subscriptionId, priceId, numSeats) {\r\n const request = await callApiWithAuthorization(\"/api/v0/payment/subscription/newPrice\", {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n subscriptionId,\r\n priceId,\r\n numSeats\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getSetupIntentClientSecret(customerId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/payment/setup\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n customerId\r\n })\r\n });\r\n const response = await request.json();\r\n return response.clientSecret;\r\n}\r\n\r\nexport async function getNumberOfSubscriptionUser(organizationId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/numSubscriptionUser\");\r\n const response = await request.json();\r\n return response.numberOfSubscriptionUser;\r\n}\r\n\r\nexport async function getNumberOfActiveProjects(organizationId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/numActiveProjects\");\r\n const response = await request.json();\r\n return response.numberOfActiveProjects;\r\n}\r\n\r\nexport async function getPaymentMethodById(organizationId, paymentMethodId) {\r\n const request = await callApiWithAuthorization(`/api/v0/organization/${organizationId}/payment-method/${paymentMethodId}`);\r\n const response = await request.json();\r\n return response.paymentMethod;\r\n}\r\n\r\nexport async function updateExpiry(organizationId, paymentMethodId, expiryMonth, expiryYear) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/organization/${organizationId}/paymentMethod/${paymentMethodId}`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n expiryMonth, expiryYear\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateCustomerDefaultPaymentMethod(organizationId, paymentMethodId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/stripe/default-payment-method\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n paymentMethodId\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getCustomerStripeData(organizationId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/stripe/customer\");\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateCustomer(organizationId, properties) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/stripe/customer\", {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(properties)\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function addCustomerTaxId(organizationId, taxId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/stripe/taxId\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n taxId\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateCustomerTaxId(organizationId, taxId, newTaxId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organizationId/\" + organizationId + \"/stripe/taxId/\" + taxId, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n newTaxId\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function deleteCustomerTaxId(organizationId, taxId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/stripe/taxId/\" + taxId, {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function deleteCustomerPaymentMethod(organizationId, paymentMethodId) {\r\n const request = await callApiWithAuthorization(`/api/v0/organization/${organizationId}/stripe/payment-method/${paymentMethodId}`, {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function chargeCustomerForInvoice(organizationId, invoiceId, paymentMethodId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/organization/${organizationId}/invoice/${invoiceId}/pay`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n paymentMethodId\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getProjectsWithUserCreateRoles(organizationId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/project-with-user-created-roles\")\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function chargeCustomerForOpenInvoices(organizationId, paymentMethodId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/payment/pay-open-invoice\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n paymentMethodId\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getNumberOfAssignedSeats(organizationId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/num-assigned-seats\");\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getPaymentMethodsOfAnOrganization(organizationId) {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/paymentMethod\");\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\n/**\r\n * Function to cancel change of seat in the next phase of subscription schedule\r\n * @param {string} subscriptionId stripe id of the subscription\r\n * @returns response from the server\r\n */\r\nexport async function cancelSeatChangeInNextPhase(organizationId, subscriptionId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/organization/${organizationId}/subscription/cancel-seat-change`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n subscriptionId\r\n })\r\n }\r\n )\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\n/**\r\n * Function to cancel change of plan in the next phase of subscription schedule\r\n * @param {string} subscriptionId stripe id of the subscription\r\n * @returns response from the server\r\n */\r\nexport async function cancelPlanChangeInNextPhase(organizationId, subscriptionId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/organization/${organizationId}/subscription/cancel-plan-change`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n subscriptionId\r\n })\r\n }\r\n )\r\n const response = await request.json();\r\n return response;\r\n}","import React, { createContext, useReducer } from 'react';\r\nimport entityRecommendationReducer from './EntityRecommendationReducer';\r\nimport * as api from '../../API/Recommendation/EntityRecommendation';\r\nimport { getCurrentSubscriptionForOrganisation } from '../../API/Payment/Payment';\r\n\r\nexport const initialState = {\r\n loading: true,\r\n entitiesLoaded: false,\r\n relationsLoaded: false,\r\n showNoEntitiesMessage: false,\r\n isColdStart: false,\r\n isShowMoreOptionVisible: true,\r\n showLibraryAttributes: true,\r\n showOrganizationAttributes: true,\r\n creatingData: false,\r\n data: [],\r\n relations: [],\r\n selectedEntities: {},\r\n selectedAttributes: {}\r\n}\r\n\r\nconst subscriptionApi = {\r\n getCurrentSubscriptionForOrganisation\r\n}\r\n\r\nconst EntityRecommendationContext = createContext(initialState);\r\n\r\nexport function EntityRecommendationContextProvider({ children }) {\r\n\r\n const [state, dispatch] = useReducer(entityRecommendationReducer, initialState)\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport default EntityRecommendationContext;","import React, { useEffect, useState } from 'react';\r\nimport { callApiWithAuthorization } from '../../../../API/CallApi';\r\nimport SolutionCards from '../SolutionCards';\r\nimport SolutionDetail from '../SolutionDetail';\r\nimport { useMsal } from '@azure/msal-react';\r\n\r\nfunction RecommendedLibraryProjects({ tags, importApp, onProjectsLoaded, user }) {\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [projects, setProjects] = useState([]);\r\n const [selectedSolution, setSelectedSolution] = useState(null);\r\n const [importingSchema, setImportingSchema] = useState(false);\r\n \r\n async function getProjects() {\r\n const tagString = tags.join(',').toLowerCase();\r\n const request = await callApiWithAuthorization(\"/api/v0/library/project?tags=\"+tagString);\r\n const projects = await request.json();\r\n projects.forEach(project => {\r\n if (project.tags)\r\n project.tags = project.tags.split(',')\r\n });\r\n setProjects(projects);\r\n setLoading(false);\r\n if (onProjectsLoaded && typeof onProjectsLoaded === \"function\") {\r\n onProjectsLoaded(projects);\r\n }\r\n }\r\n\r\n async function handleImport(solution) {\r\n try {\r\n setImportingSchema(true);\r\n await importApp(solution);\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n setImportingSchema(false);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getProjects();\r\n }, [])\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n Loading...\r\n
    \r\n )\r\n }\r\n\r\n if (importingSchema) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n if (selectedSolution) {\r\n return (\r\n setSelectedSolution(null)}\r\n UseSolutionTemplate={handleImport}\r\n solution={selectedSolution} />\r\n )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n We have some library projects with the same tags.\r\n
    \r\n
    \r\n
    \r\n {\r\n projects.map(project => (\r\n
    \r\n setSelectedSolution(solution)} />\r\n
    \r\n ))\r\n }\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nRecommendedLibraryProjects.defaultProps = {\r\n tags: []\r\n}\r\n\r\nexport default RecommendedLibraryProjects;","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-indicators',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666771487,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact Skeleton component]({% slug overview_skeleton %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Skeleton = React.forwardRef(function (props, target) {\n validatePackage(packageMetadata);\n var className = props.className, style = props.style;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); });\n var shape = React.useMemo(function () { return props.shape || defaultProps.shape; }, [props.shape]);\n var animation = React.useMemo(function () {\n if (props.animation === false) {\n return false;\n }\n else {\n return props.animation || defaultProps.animation;\n }\n }, [props.animation]);\n var skeletonClasses = React.useMemo(function () { return classNames('k-skeleton', {\n 'k-skeleton-circle': shape === 'circle',\n 'k-skeleton-rectangle': shape === 'rectangle',\n 'k-skeleton-text': shape === 'text',\n 'k-skeleton-pulse': (typeof animation === 'object' && animation.type === 'pulse'),\n 'k-skeleton-wave': (typeof animation === 'object' && animation.type === 'wave') || (animation === true)\n }, className); }, [shape, animation, className]);\n return (React.createElement(\"span\", { ref: elementRef, className: skeletonClasses, style: style }));\n});\nSkeleton.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n animation: PropTypes.shape({\n type: PropTypes.oneOf(['wave', 'pulse'])\n }),\n shape: PropTypes.oneOf(['circle', 'rectangle', 'text'])\n};\nvar defaultProps = {\n shape: 'text',\n animation: { type: 'pulse' }\n};\nSkeleton.defaultProps = defaultProps;\nSkeleton.displayName = 'KendoSkeleton';\n","import * as licensing from '@progress/kendo-licensing';\n/**\n * @hidden\n */\nexport function validatePackage(packageMetadata) {\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \".concat(packageMetadata.name, \"\\n\");\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \".concat(packageMetadata.licensingDocsUrl, \" for more information.\\n\");\n console.warn(message);\n }\n}\n","/**\n * @hidden\n */\nexport var classNames = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = {};\n var addLeafKeys = function (arg) { return typeof arg === 'object' ? Object\n .keys(arg)\n .forEach(function (key) {\n result[key] = arg[key];\n }) : result[arg] = true; };\n ;\n var addKeys = function (list) { return list\n .filter(function (arg) { return arg !== true && !!arg; })\n .map(function (arg) {\n return Array.isArray(arg) ?\n addKeys(arg) :\n addLeafKeys(arg);\n }); };\n ;\n addKeys(args);\n return Object\n .keys(result)\n .map(function (key) { return (result[key] && key) || null; })\n .filter(function (el) { return el !== null; })\n .join(' ');\n};\n","export const ENTITY_RELATION_LABEL = \"Object Relation\";\r\n\r\nexport const ENTITY_RELATION_PLURAL_LABEL = \"Object Relations\";","export default function byEntity1CardinalityAndEntity2(a,b) {\r\n debugger\r\n // First, compare by entity1\r\n if (a.from < b.from) return -1;\r\n if (a.from > b.from) return 1;\r\n \r\n // If entity1 is the same, compare by cardinality\r\n const cardinalityOrder = { \"one-to-many\": 0, \"one-to-one\": 1, \"many-to-many\": 2 };\r\n const aCardinalityOrder = cardinalityOrder[a.cardinality];\r\n const bCardinalityOrder = cardinalityOrder[b.cardinality];\r\n if (aCardinalityOrder < bCardinalityOrder) return -1;\r\n if (aCardinalityOrder > bCardinalityOrder) return 1;\r\n \r\n // If entity1 and cardinality are the same, compare by entity2\r\n if (a.to < b.to) return -1;\r\n if (a.to > b.to) return 1;\r\n \r\n // If all three fields are the same, leave them in their current order\r\n return 0;\r\n}","import { DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { Skeleton } from '@progress/kendo-react-indicators';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport { getEntityRelations } from '../../../API/EntityRelations/EntityRelations';\r\nimport EntityRecommendationContext from '../../../Context/EntityRecommendation/EntityRecommendationContext';\r\nimport TYPES from '../../../Context/EntityRecommendation/TYPES';\r\nimport { ENTITY_RELATION_PLURAL_LABEL } from '../../Helpers/Labels/EntityRelationLabel';\r\nimport Scrollable from '../../Shared/Edit/Scrollable';\r\nimport InnerLoader from '../../Shared/Loader/InnerLoader';\r\nimport { OverlayLoader } from '../../Shared/Loader/OverlayLoader';\r\nimport byEntity1CardinalityAndEntity2 from './sortRelations';\r\nimport sortRelations from './sortRelations';\r\n\r\nfunction EntityRelationsRecommendation({ usedInSchemaRecommendation, organizationId, projectId, entities, onAdd, onBack }) {\r\n\r\n const { api, state, dispatch } = useContext(EntityRecommendationContext);\r\n\r\n const importRelations = async (e) => {\r\n try {\r\n if (e && e.target) {\r\n e.target.disabled = true;\r\n }\r\n const data = state.relations.filter(relation => relation.selected).map(relation => {\r\n return {\r\n from: relation.from, cardinality: relation.cardinality, to: relation.to,\r\n referenceAttribute: relation.referenceAttribute?.properties\r\n }\r\n });\r\n const importedRelations = await api.importEntityRelations(data, projectId)\r\n onAdd(importedRelations);\r\n dispatch({\r\n type: TYPES.SET_CREATING_DATA,\r\n payload: false\r\n })\r\n } catch (err) {\r\n console.error(err);\r\n } finally {\r\n if (e && e.target)\r\n e.target.disabled = false;\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n )\r\n}\r\n\r\nexport function RecommendedLinkedEntityGrid({\r\n organizationId, projectId, entities, usedInWorkspace,\r\n addButtonText,\r\n onBack, onAdd, onNext\r\n}) {\r\n\r\n const { api, state, dispatch } = useContext(EntityRecommendationContext);\r\n\r\n const [fetchingData, setFetchingData] = useState(true);\r\n \r\n useEffect(() => {\r\n const selectedEntityNames = state.data\r\n .filter(entity => entity.selected)\r\n .map(entity => entity.name.toLowerCase());\r\n const userEntityNames = entities.map(entity => entity.name.toLowerCase())\r\n const entityNames = [...selectedEntityNames, ...userEntityNames];\r\n api.getRecommendedEntityRelations(entityNames, organizationId, projectId)\r\n .then(data => {\r\n if (usedInWorkspace) {\r\n selectPreviouslySelectedRelations(data);\r\n }\r\n const sortedData = data.sort(byEntity1CardinalityAndEntity2);\r\n dispatch({\r\n type: TYPES.RELATIONS_LOADED,\r\n payload: sortedData\r\n })\r\n setFetchingData(false);\r\n });\r\n }, [])\r\n\r\n function selectPreviouslySelectedRelations(data) {\r\n const previouslySelectedRelations = state.relations.filter(relation => relation.selected);\r\n if (previouslySelectedRelations.length > 0) {\r\n data.forEach(relation => {\r\n const previouslySelectedRelation = previouslySelectedRelations.find(r => (\r\n r.from === relation.from && r.to === relation.to && r.cardinality === relation.cardinality\r\n ));\r\n if (previouslySelectedRelation) {\r\n relation.selected = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (fetchingData) {\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 const handleSelect = (relation) => {\r\n const { id, selected } = relation;\r\n const type = selected ? TYPES.RELATION_DESELECTED : TYPES.RELATION_SELECTED;\r\n dispatch({ type, payload: { id } });\r\n }\r\n\r\n function anyRelationSelected() {\r\n return state.relations.some(relation => relation.selected);\r\n }\r\n\r\n async function handleSubmit() {\r\n dispatch({\r\n type: TYPES.SET_CREATING_DATA,\r\n payload: true\r\n })\r\n await onAdd();\r\n } \r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n (\r\n 0 &&\r\n state.relations.every(relation => relation.selected)\r\n }\r\n checked={\r\n state.relations.length > 0 &&\r\n state.relations.every(relation => relation.selected)\r\n }\r\n onChange={(e) => {\r\n const type = e.target.element.checked ? TYPES.RELATIONS_SELECTED : TYPES.RELATIONS_DESELECTED;\r\n dispatch({ type });\r\n }} />\r\n )}\r\n cell={props => (\r\n
    \r\n )} />\r\n \r\n (\r\n \r\n \r\n Cardinality\r\n  \r\n \r\n \r\n \r\n )}\r\n cell={props => (\r\n \r\n )} />\r\n \r\n \r\n \r\n \r\n \r\n { state.creatingData && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n { onBack && }\r\n { onBack && <>  }\r\n { \r\n usedInWorkspace &&\r\n \r\n }\r\n { \r\n !usedInWorkspace &&\r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nRecommendedLinkedEntityGrid.defaultProps = {\r\n entities: []\r\n}\r\n\r\nexport default EntityRelationsRecommendation;","import { number } from 'prop-types';\r\nimport React, { useContext, useState } from 'react';\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport EntityRecommendationContext from '../../Context/EntityRecommendation/EntityRecommendationContext';\r\n\r\nfunction useImportSelectedRecommendationData(organizationId, projectId) {\r\n\r\n const { api, state } = useContext(EntityRecommendationContext);\r\n\r\n const [response, setResponse] = useState(null);\r\n const [error, setError] = useState(null);\r\n\r\n async function importData() {\r\n debugger;\r\n const selectedEntities = getSelectedEntities();\r\n const selectedRelations = getSelectedRelations();\r\n try {\r\n const request = await callApiWithAuthorization(\"/api/v0/recommend/import\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n projectId,\r\n selectedEntities,\r\n selectedRelations\r\n })\r\n });\r\n const response = await request.json();\r\n setResponse(response);\r\n } catch (e) {\r\n setError(e);\r\n }\r\n }\r\n \r\n function getSelectedEntities() {\r\n return state.data.filter(entity => entity.selected).map(entity => {\r\n const { selected, expanded, attributes, id, name } = entity;\r\n return {\r\n name,\r\n entityId: id,\r\n attributes: attributes.filter(attribute => attribute.selected).map(attribute => {\r\n const { selected, id, attributeName } = attribute;\r\n return {\r\n attributeName,\r\n attributeId: id\r\n };\r\n })\r\n };\r\n });\r\n }\r\n\r\n function getSelectedRelations() {\r\n return state.relations.filter(relation => relation.selected).map(relation => {\r\n const { selected, id, ...properties } = relation;\r\n return properties; \r\n });\r\n }\r\n\r\n return { importData, response, error };\r\n}\r\n\r\nexport default useImportSelectedRecommendationData;","import React, { useEffect, useState } from 'react';\r\nimport { MultiSelect } from '@progress/kendo-react-dropdowns';\r\nimport { ENTITY_PLURAL_LABEL } from '../../Helpers/Labels/EntityLabel';\r\n\r\nconst RecommendationFilterMultiSelect = (props) => {\r\n\r\n const [field, setField] = useState(null);\r\n let handler;\r\n useEffect(() => {\r\n if (field && props.value !== undefined && props.value !== null) {\r\n window.addEventListener(\"click\", handleEnter);\r\n }\r\n }, [field, props])\r\n\r\n function handleEnter(event) {\r\n const isClickedOutside = field && field._input && event.type === \"click\" && !field._input.contains(event.target);\r\n if (isClickedOutside) {\r\n const tags = [...field.value];\r\n const inputValue = field._input.value.trim();\r\n if (inputValue && inputValue.length > 0) {\r\n const isTagUsed = tags.some(tag => tag.name.toLowerCase().trim() === inputValue.toLowerCase());\r\n if (!isTagUsed) {\r\n tags.push({ name: inputValue });\r\n }\r\n field.setState(prevValue => ({\r\n ...prevValue,\r\n text: \"\"\r\n }));\r\n props.onChange({\r\n target: {\r\n name: props.name,\r\n value: tags\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n // show red tag in multiselect if \r\n // item has hasNoMatch set to true\r\n // else green\r\n const itemRender = (tagData, li) => {\r\n return React.cloneElement(li, {\r\n ...li.props,\r\n className: {\r\n ...li.props.className,\r\n 'match-found-tag': !tagData.data[0].hasNoMatch,\r\n 'no-match-found-tag': tagData.data[0].hasNoMatch,\r\n }\r\n }, [\r\n \r\n \r\n  \r\n {tagData.data[0].name.substring(0, 23)}\r\n {tagData.data[0].name.length > 23 && \"...\"}\r\n \r\n ], li.props.children);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n { }}\r\n disabled={props.disabled}\r\n popupSettings={{\r\n height: 0\r\n }}\r\n onClose={(event) => {\r\n const { value } = event?.target?._input;\r\n if (value) {\r\n // add new value to the list\r\n // if it is not already there\r\n if (props.value.find(item => item.name === value)) {\r\n return;\r\n }\r\n props.onChange({\r\n target: {\r\n value: [...props.value, { name: value }]\r\n }\r\n });\r\n event.target.setState({ text: '' });\r\n }\r\n }}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default RecommendationFilterMultiSelect;\r\n","import React from \"react\";\r\nimport { Icons } from \"../AttributeTypes\";\r\nimport \"./style.css\";\r\n\r\nconst AttributeIcon = ({ attributeType }) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n};\r\n\r\nAttributeIcon.displayName = \"AttributeIcon\";\r\n\r\nexport default AttributeIcon;\r\n","import { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport { ComboBox, MultiSelect } from '@progress/kendo-react-dropdowns';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\r\nimport { callApiWithAuthorization } from '../../../API/CallApi';\r\nimport EntityRecommendationContext, { EntityRecommendationContextProvider } from '../../../Context/EntityRecommendation/EntityRecommendationContext';\r\nimport TYPES from '../../../Context/EntityRecommendation/TYPES';\r\nimport RecommendedLibraryProjects from '../../Dashboard/SolutionLibrary/Recommendation/RecommendedLibraryProject';\r\nimport EntityRelationsRecommendation, { RecommendedLinkedEntityGrid } from '../../LinkedEntities/Recommendation/EntityRelationsRecommendation';\r\nimport Scrollable from '../../Shared/Edit/Scrollable';\r\nimport useImportSelectedRecommendationData from '../../../Hooks/Recommendation/useImportSelectedRecommendationData';\r\nimport { useMsal } from '@azure/msal-react';\r\nimport RecommendationFilterMultiSelect from './RecommendationFilterMultiSelect';\r\nimport { Dropdown, DropdownButton } from 'react-bootstrap';\r\nimport sortDataInSameOrderAsCustomEntities from '../../../Context/EntityRecommendation/sortDataInSameOrderAsCustomEntities';\r\nimport { Skeleton } from '@progress/kendo-react-indicators';\r\nimport { ENTITY_LABEL, ENTITY_PLURAL_LABEL } from '../../Helpers/Labels/EntityLabel';\r\nimport AttributeIcon from '../../Attributes/Fields/AttributeIcon';\r\nimport { ENTITY_RELATION_PLURAL_LABEL } from '../../Helpers/Labels/EntityRelationLabel';\r\nimport { OverlayLoader } from '../../Shared/Loader/OverlayLoader';\r\nimport InnerLoader from '../../Shared/Loader/InnerLoader';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\n\r\nconst EntityRecommendation = ({\r\n entities = [],\r\n projectId, organizationId,\r\n onAdd, onEntityLimitReached, onTitleChange\r\n}) => {\r\n\r\n const [currentTitle, setCurrentTitle] = useState(`Alice Recommendation - ${ENTITY_PLURAL_LABEL}`);\r\n\r\n const [showRecommendationGrid, setShowRecommendationGrid] = useState(true)\r\n const [showLinkedEntityGrid, setShowLinkedEntityGrid] = useState(false)\r\n const [showProjectTypeField, setShowProjectTypeField] = useState(false);\r\n const [showEntityTypeField, setShowEntityTypeField] = useState(false);\r\n const [showLibraryProjects, setShowLibraryProjects] = useState(false);\r\n\r\n const [projectType, setProjectType] = useState([ { text: \"CRM\" }, { text: \"HR\" } ]);\r\n const [entityType, setEntityType] = useState([]);\r\n\r\n const { importData, response, error } = useImportSelectedRecommendationData(\r\n organizationId, projectId\r\n )\r\n\r\n // everytime currentTitle changes, call onTitleChange to update dialog title\r\n useEffect(() => {\r\n if (onTitleChange) {\r\n onTitleChange(currentTitle);\r\n }\r\n }, [currentTitle]);\r\n \r\n // useEffect(() => {\r\n // getProjectTypes();\r\n // }, [])\r\n\r\n useEffect(() => {\r\n if (response && response.importedEntities) {\r\n onAdd(response.importedEntities);\r\n }\r\n }, [response])\r\n\r\n useEffect(() => {\r\n if (error && (\r\n error.message === \"Max entities limit reached\" ||\r\n error.message === \"Max relations limit reached\"\r\n )) {\r\n onEntityLimitReached();\r\n }\r\n }, [error])\r\n\r\n async function getProjectTypes() {\r\n const request = await callApiWithAuthorization(\"/api/v0/nodes?label=Domain\");\r\n const response = await request.json();\r\n const domains = response.map(domain => ({\r\n text: domain.name,\r\n icon: domain.icon,\r\n id: domain.id,\r\n isSelected: false\r\n }))\r\n setProjectType(domains);\r\n }\r\n\r\n if (showRecommendationGrid) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (showLinkedEntityGrid) {\r\n return (\r\n {\r\n setShowLinkedEntityGrid(false);\r\n setShowRecommendationGrid(true);\r\n }} />\r\n )\r\n }\r\n\r\n if (showProjectTypeField) {\r\n return {\r\n const newProjectTypeData = projectType.map(projectType => ({\r\n ...projectType,\r\n isSelected: projectType.id === selectedType.id\r\n }));\r\n setProjectType(newProjectTypeData)\r\n }}\r\n onNext={() => {\r\n const selectedProjectTypes = projectType.filter(type => type.isSelected);\r\n if (selectedProjectTypes.length === 0) {\r\n setShowEntityTypeField(true);\r\n } else {\r\n setShowLibraryProjects(true);\r\n }\r\n setShowProjectTypeField(false);\r\n }} />;\r\n }\r\n\r\n if (showLibraryProjects) {\r\n const tags = projectType.filter(type => type.isSelected).map(type => type.text)\r\n return (\r\n <>\r\n {\r\n setShowLibraryProjects(false);\r\n setShowProjectTypeField(true);\r\n }}\r\n onNext={() => {\r\n setShowLibraryProjects(false);\r\n setShowEntityTypeField(true);\r\n }}\r\n tags={tags} />\r\n \r\n )\r\n }\r\n\r\n if (showEntityTypeField) {\r\n return (\r\n setEntityType(e.target.value)}\r\n onBack={() => {\r\n const selectedProjectTypes = projectType.filter(type => type.isSelected);\r\n if (selectedProjectTypes.length === 0) {\r\n setShowProjectTypeField(true);\r\n } else {\r\n setShowLibraryProjects(true);\r\n }\r\n setShowEntityTypeField(false);\r\n }}\r\n onNext={() => {\r\n setShowEntityTypeField(false);\r\n setShowRecommendationGrid(true);\r\n }} />\r\n );\r\n }\r\n};\r\n\r\nexport function ProjectType({\r\n types,\r\n allowCustomTags,\r\n customTags,\r\n handleCustomTags,\r\n onTypeChange,\r\n onBack,\r\n onNext\r\n}) {\r\n\r\n return (\r\n <>\r\n
    \r\n What app do you want to create today?\r\n
    \r\n
    \r\n If the app you want to create does not fall into any of these categories, you can type in the category.\r\n
    \r\n
    \r\n {\r\n allowCustomTags &&\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n {\r\n types.map(type => (\r\n onTypeChange(type)}\r\n >\r\n \r\n
    \r\n { type.text }\r\n
    \r\n
    \r\n ))\r\n }\r\n
    \r\n
    \r\n
    \r\n {\r\n onBack &&\r\n typeof onBack === \"function\" &&\r\n \r\n }\r\n \r\n
    \r\n
    \r\n \r\n \r\n )\r\n}\r\n\r\nexport function EntityTypes({\r\n names,\r\n onNameEntered,\r\n onNext,\r\n onBack\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\nexport function RecommendedEntityGrid(props) {\r\n\r\n const {\r\n entities, fetchUsingUserInput, userInput, addButtonText = \"Next\",\r\n organizationId, projectType, usedInCreateProject,\r\n onNext, onBack, onEntitiesLoaded\r\n } = props;\r\n\r\n const {\r\n api, state, dispatch\r\n } = useContext(EntityRecommendationContext);\r\n\r\n const [customEntities, setCustomEntities] = useState([]);\r\n\r\n function getSelectedProjectTypes() {\r\n return projectType.filter(type => type.isSelected).map(type => type.text)\r\n }\r\n\r\n useEffect(() => {\r\n if (!state.entitiesLoaded) {\r\n getData()\r\n }\r\n if (!state.isShowMoreOptionVisible) {\r\n dispatch({\r\n type: TYPES.TOGGLE_SHOW_MORE_OPTION\r\n })\r\n }\r\n }, [])\r\n \r\n function getData() {\r\n if (fetchUsingUserInput) {\r\n const selectedProjectTypes = getSelectedProjectTypes();\r\n if (userInput.length > 0 ){\r\n api.getRecommendationUsingUserInput(\r\n userInput.map(input => input.toLowerCase()),\r\n organizationId,\r\n selectedProjectTypes\r\n )\r\n .then(data => {\r\n dispatch({\r\n type: TYPES.DATA_LOADED,\r\n payload: data\r\n })\r\n if (data.length === 0) {\r\n dispatch({\r\n type: TYPES.TOGGLE_SHOW_MORE_OPTION\r\n })\r\n }\r\n })\r\n } else {\r\n dispatch({ type: TYPES.COLD_START })\r\n api.getColdStartData(organizationId, selectedProjectTypes, 0, usedInCreateProject)\r\n .then(data => {\r\n dispatch({\r\n type: TYPES.DATA_LOADED,\r\n payload: data\r\n })\r\n if (data.length === 0) {\r\n dispatch({\r\n type: TYPES.TOGGLE_SHOW_MORE_OPTION\r\n })\r\n }\r\n })\r\n }\r\n } else if (usedInCreateProject) {\r\n const selectedProjectTypes = getSelectedProjectTypes();\r\n api.getColdStartData(\r\n organizationId,\r\n selectedProjectTypes,\r\n 0,\r\n usedInCreateProject\r\n )\r\n .then(data => {\r\n if (data.length > 0) {\r\n dispatch({\r\n type: TYPES.ENTITY_RECOMMENDED\r\n })\r\n }\r\n dispatch({\r\n type: TYPES.DATA_LOADED,\r\n payload: data\r\n })\r\n if (data.length === 0) {\r\n dispatch({\r\n type: TYPES.TOGGLE_SHOW_MORE_OPTION\r\n })\r\n }\r\n if (onEntitiesLoaded) { onEntitiesLoaded(data); }\r\n })\r\n } else {\r\n api.getRecommendationUsingUserEntities(\r\n entities.map(entity => entity.name.toLowerCase()),\r\n organizationId,\r\n projectType\r\n )\r\n .then(async (data) => {\r\n if (data.length > 0) {\r\n dispatch({\r\n type: TYPES.DATA_LOADED,\r\n payload: data\r\n })\r\n } else {\r\n const selectedProjectTypes = getSelectedProjectTypes();\r\n dispatch({\r\n type: TYPES.NO_ENTITY_RECOMMENDED,\r\n })\r\n dispatch({ type: TYPES.COLD_START })\r\n const coldStartData = await api.getColdStartData(organizationId, selectedProjectTypes, 0, usedInCreateProject);\r\n dispatch({\r\n type: TYPES.DATA_LOADED,\r\n payload: coldStartData\r\n })\r\n }\r\n if (onEntitiesLoaded && typeof onEntitiesLoaded === \"function\") {\r\n onEntitiesLoaded(data);\r\n }\r\n if (data.length === 0) {\r\n dispatch({\r\n type: TYPES.TOGGLE_SHOW_MORE_OPTION\r\n })\r\n }\r\n })\r\n }\r\n }\r\n\r\n const handleExpand = (event) => {\r\n dispatch({\r\n type: TYPES.ENTITY_EXPANDED,\r\n payload: { id: event.dataItem.id }\r\n })\r\n }\r\n\r\n const handleEntitySelect = (entity) => {\r\n const { id, selected } = entity;\r\n const type = selected ? TYPES.ENTITY_DESELECTED : TYPES.ENTITY_SELECTED;\r\n dispatch({\r\n type,\r\n payload: { id }\r\n })\r\n }\r\n\r\n const getNextSetOfEntities = async () => {\r\n const skip = state.data.length;\r\n const selectedProjectTypes = getSelectedProjectTypes();\r\n let nextEntities = [];\r\n if (state.isColdStart) {\r\n nextEntities = await api.getColdStartData(organizationId, selectedProjectTypes, skip, usedInCreateProject);\r\n } else if (fetchUsingUserInput) {\r\n const entityNames = userInput.map(input => input.toLowerCase());\r\n nextEntities = await api.getRecommendationUsingUserInput(\r\n entityNames, organizationId, selectedProjectTypes, skip\r\n )\r\n } else if (customEntities.length > 0) {\r\n const entityNames = customEntities.map(entityName => entityName.toLowerCase());\r\n nextEntities = await api.getRecommendationUsingUserInput(\r\n entityNames, organizationId, selectedProjectTypes, skip\r\n )\r\n } else {\r\n const entityNames = entities.map(entity => entity.name.toLowerCase());\r\n nextEntities = await api.getRecommendationUsingUserEntities(\r\n entityNames,\r\n organizationId,\r\n selectedProjectTypes,\r\n skip\r\n )\r\n }\r\n dispatch({\r\n type: TYPES.NEXT_ENTITY_SET_LOADED,\r\n payload: nextEntities\r\n })\r\n if (nextEntities.length === 0) {\r\n dispatch({\r\n type: TYPES.TOGGLE_SHOW_MORE_OPTION,\r\n })\r\n }\r\n }\r\n\r\n async function refreshData() {\r\n dispatch({\r\n type: TYPES.START_LOADING\r\n });\r\n const selectedProjectTypes = getSelectedProjectTypes();\r\n if (customEntities.length === 0) {\r\n getData();\r\n } else {\r\n const data = await api.getRecommendationUsingUserInput(\r\n customEntities.map(entity => entity.name.toLowerCase()),\r\n organizationId,\r\n selectedProjectTypes\r\n )\r\n dispatch({\r\n type: TYPES.ENTITY_RECOMMENDED\r\n })\r\n const newCustomEntities = setHasNoMatchForNewData(customEntities, data);\r\n setCustomEntities(newCustomEntities)\r\n const selectedData = sortDataInSameOrderAsCustomEntities(data, newCustomEntities).map(entity => ({\r\n ...entity,\r\n selected: newCustomEntities.some(customEntity => (\r\n customEntity.name.toLowerCase() === entity.name.toLowerCase()\r\n ))\r\n }));\r\n // set selected to true for first 20 attributes of each selected entity in selectedData\r\n const selectedDataWithAttributes = selectedData.map(entity => {\r\n debugger;\r\n const attributes = entity.attributes.map((attribute, index) => {\r\n return {\r\n ...attribute,\r\n selected: entity.selected && index < 20\r\n }\r\n })\r\n return {\r\n ...entity,\r\n attributes\r\n }\r\n })\r\n dispatch({\r\n type: TYPES.DATA_LOADED,\r\n payload: selectedDataWithAttributes\r\n })\r\n if (data.length === 0 && state.isShowMoreOptionVisible) {\r\n dispatch({\r\n type: TYPES.TOGGLE_SHOW_MORE_OPTION\r\n })\r\n }\r\n }\r\n }\r\n\r\n // a function which sets hasNoMatch property in each value\r\n // against another variable passed in argument\r\n function setHasNoMatchForNewData(values, data) {\r\n return values.map(value => {\r\n const hasNoMatch = !data.find(entity => entity.name.toLowerCase() === value.name.toLowerCase());\r\n return {\r\n name: value.name,\r\n hasNoMatch\r\n }\r\n })\r\n }\r\n\r\n const handleCustomEntityChange = (event) => {\r\n // get values from event\r\n const { value } = event.target;\r\n\r\n // set a hasNoMatch property in each value\r\n // if an entity with same name is not found in state.data\r\n const values = value.map((value) => {\r\n const hasNoMatch = !state.data.find(entity => entity.name.toLowerCase() === value.name.toLowerCase());\r\n return {\r\n name: value.name,\r\n hasNoMatch\r\n }\r\n }).splice(0, 10);\r\n\r\n // set value of custom entities\r\n setCustomEntities(values);\r\n\r\n // dispatch action to update state\r\n dispatch({\r\n type: TYPES.CUSTOM_ENTITIES_CHANGED,\r\n payload: values\r\n });\r\n }\r\n\r\n function handleSelectAll() {\r\n // dispatch action to select all entities\r\n dispatch({\r\n type: TYPES.TOGGLE_SELECT_ALL_ENTITIES\r\n })\r\n }\r\n\r\n function shouldNextBeDisabled() {\r\n if (usedInCreateProject) {\r\n return state.loading;\r\n } else {\r\n return (\r\n !state.data.some(entity => entity.selected) ||\r\n state.data.length === 0 ||\r\n state.creatingData\r\n );\r\n }\r\n }\r\n\r\n async function handleSubmit() {\r\n if (!usedInCreateProject) {\r\n dispatch({\r\n type: TYPES.SET_CREATING_DATA,\r\n payload: true\r\n })\r\n }\r\n await onNext();\r\n } \r\n\r\n return (\r\n <>\r\n {\r\n state.showNoEntitiesMessage && (\r\n
    We could not find {ENTITY_PLURAL_LABEL.toLowerCase()} for you, but here are the most used ones.
    \r\n )\r\n }\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n  \r\n Update Recommendation\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n // dispatch action to toggle showLibraryAttributes\r\n dispatch({\r\n type: TYPES.TOGGLE_SHOW_LIBRARY_ATTRIBUTES\r\n })\r\n }}>\r\n \r\n \r\n {\r\n // dispatch action to toggle showOrganizationAttributes\r\n dispatch({\r\n type: TYPES.TOGGLE_SHOW_ORGANIZATION_ATTRIBUTES\r\n })\r\n }}>\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {\r\n !state.loading &&\r\n state.data.length === 0 ?\r\n
    \r\n

    \r\n We seem like not have a recommendation for the {ENTITY_PLURAL_LABEL.toLowerCase()} you typed in.\r\n

    \r\n

    \r\n You can type in some other {ENTITY_PLURAL_LABEL.toLowerCase()} or create your own by clicking Next. \r\n

    \r\n
    \r\n :\r\n \r\n \r\n {\r\n state.loading ?\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 expandField=\"expanded\"\r\n onExpandChange={handleExpand}\r\n scrollable=\"scrollable\">\r\n (\r\n <>\r\n    \r\n 0 && state.data.every(entity => entity.selected)}\r\n indeterminate={state.data.length > 0 && state.data.some(entity => entity.selected) && !state.data.every(entity => entity.selected)}\r\n onChange={handleSelectAll} />\r\n \r\n )}\r\n cell={(props) => (\r\n \r\n )}\r\n />\r\n (\r\n \r\n )}\r\n />\r\n \r\n }\r\n\r\n {\r\n state.isShowMoreOptionVisible &&\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n \r\n { state.creatingData && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n {\r\n onBack &&\r\n \r\n }\r\n  \r\n \r\n { addButtonText }\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport function EntityDetail({ entityId, attributes, requiredInAlice, numRequiredAttributes }) {\r\n\r\n const { state, dispatch } = useContext(EntityRecommendationContext);\r\n\r\n const tooltip = useRef(null);\r\n\r\n debugger;\r\n\r\n const handleSelect = (attribute) => {\r\n const { id, selected } = attribute;\r\n const type = selected ? TYPES.ATTRIBUTE_DESELECTED : TYPES.ATTRIBUTE_SELECTED;\r\n dispatch({\r\n type,\r\n payload: { entityId, attributeId: id }\r\n })\r\n }\r\n\r\n function getAttributesToShow() {\r\n if (state.showLibraryAttributes && state.showOrganizationAttributes) {\r\n return attributes;\r\n } else if (state.showLibraryAttributes) {\r\n return attributes.filter(attribute => attribute.fromLibrary);\r\n } else if (state.showOrganizationAttributes) {\r\n return attributes.filter(attribute => !attribute.fromLibrary);\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n function shouldCheckboxBeDisabled(attribute, index) {\r\n if (attribute.requiredInAlice === \"true\") {\r\n return true;\r\n }\r\n return requiredInAlice && numRequiredAttributes === 0 && index === 0;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport function RecommendedLibraryProjectsWithActions({ organizationId, projectId, tags, onAppImported, onNext, onBack }) {\r\n\r\n const msalContext = useMsal();\r\n\r\n async function importSchemaFromProject(solution) {\r\n try {\r\n const email = msalContext.accounts[0].username;\r\n const request = await callApiWithAuthorization(\"/api/v0/project/\"+projectId+\"/import/\"+solution.id, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n organizationId, email\r\n })\r\n });\r\n const response = await request.json();\r\n onAppImported(response);\r\n } catch (e) {\r\n console.error(e);\r\n }\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\nRecommendedEntityGrid.defaultProps = {\r\n entities: []\r\n}\r\n\r\nProjectType.defaultProps = {\r\n types: []\r\n}\r\n\r\nexport default EntityRecommendation;","import React, { useEffect, useState, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\nimport IconPicker, { icons } from '../../Shared/IconPicker/IconPicker';\r\nimport Color from \"../../Helpers/color\";\r\nimport { callApiWithAuthorization } from '../../../API/CallApi';\r\nimport { OverlayLoader } from \"../../Shared/Loader/OverlayLoader\"\r\nimport EntityRecommendationContext, { EntityRecommendationContextProvider } from '../../../Context/EntityRecommendation/EntityRecommendationContext';\r\nimport { RecommendedEntityGrid } from '../../Entities/Recommendation/EntityRecommendation';\r\nimport { RecommendedLinkedEntityGrid } from '../../LinkedEntities/Recommendation/EntityRelationsRecommendation';\r\nimport useImportSelectedRecommendationData from '../../../Hooks/Recommendation/useImportSelectedRecommendationData';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport SolutionLibrary from '../SolutionLibrary/SolutionLibrary';\r\nimport { useContext } from 'react';\r\nimport { getDatalakeImageUrl } from '../../Helpers/DateLakeStorage';\r\nimport { ENTITY_RELATION_PLURAL_LABEL } from '../../Helpers/Labels/EntityRelationLabel';\r\nimport { ENTITY_PLURAL_LABEL } from '../../Helpers/Labels/EntityLabel';\r\n\r\nfunction CreateProjectDialog({\r\n projects,\r\n organization,\r\n user,\r\n onCreate,\r\n onCancel,\r\n onProjectLimitReached,\r\n onClose,\r\n isShowFromRuntime,\r\n}) {\r\n\r\n const navigate = useNavigate();\r\n const [title, setTitle] = useState(\"Recommended Library Apps\");\r\n\r\n function handleCreateProjectResponse(response) {\r\n if (response.message === \"Max apps allowed limit reached\") {\r\n onProjectLimitReached();\r\n } else {\r\n onCreate(response);\r\n }\r\n }\r\n\r\n async function createProject(projectName, icon) {\r\n try {\r\n let color = Color(projects.length + 1);\r\n let properties = {\r\n organizationName: organization.number,\r\n organizationId: organization.id,\r\n email: user.email,\r\n projectName: projectName.trim().replace(/\\s\\s+/g, \" \"),\r\n Icon: icon,\r\n developerMode: false,\r\n abbreviation: \"\",\r\n bgColor: color,\r\n description: \"\",\r\n tag: \"\",\r\n hasSchemaChanges: false,\r\n isPublished: false,\r\n isSuperApp: false,\r\n isFeaturedApp: false,\r\n TilesImages: \"\",\r\n SlideshowImages: \"\",\r\n };\r\n\r\n properties.projectUrl = properties.projectName.replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\")\r\n\r\n if (organization.id === process.env.REACT_APP_LIBRARY_ORGANIZATION_ID) {\r\n properties.tagsForRecommendation = \"\";\r\n }\r\n\r\n const request = await callApiWithAuthorization(\"/api/v0/createProjectandRole\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(properties),\r\n });\r\n const response = await request.json();\r\n\r\n return response;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n function navigateToProject(project) {\r\n navigate(`/${organization.number}/${project.name}/Entities`);\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\nexport function CreateProjectWithRecommendation({\r\n projects, organization, user,\r\n onCancel, createProject, onTitleChange, onSuccessfulImport, onProjectLimitReached, isShowFromRuntime\r\n}) {\r\n\r\n const navigate = useNavigate();\r\n\r\n const [currentTitle, setCurrentTitle] = useState(\"Alice AI Recommendation\");\r\n\r\n const [projectTypes, setProjectTypes] = useState([]);\r\n const [customDomains, setCustomDomains] = useState([]);\r\n\r\n const [showProjectTypeSelection, setShowProjectTypeSelection] = useState(false);\r\n const [showLibraryProjects, setShowLibraryProjects] = useState(isShowFromRuntime ? true : false);\r\n const [showRecommendedEntityGrid, setShowRecommendedEntityGrid] = useState(false);\r\n const [showRecommendedRelationGrid, setShowRecommendedRelationGrid] = useState(false);\r\n const [showCreateProjectForm, setShowCreateProjectForm] = useState(isShowFromRuntime ? false : true);\r\n\r\n const [includeLibraryProjects, setIncludeLibraryProjects] = useState(true);\r\n\r\n const [project, setProject] = useState({});\r\n const { importData, response, error } = useImportSelectedRecommendationData(organization.id, project.id);\r\n\r\n const [projectName, setProjectName] = useState(\"\");\r\n const [icon, setIcon] = useState(icons[0]);\r\n\r\n const { state: recommendationState, dispatch } = useContext(EntityRecommendationContext);\r\n\r\n // every time currentTitle changes, call the onTitleChange function\r\n useEffect(() => {\r\n onTitleChange(currentTitle);\r\n }, [currentTitle]);\r\n\r\n useEffect(() => {\r\n if (project && project.id) {\r\n const showRecommendationDialog = !!recommendationState.data.find(element => element.selected);\r\n if (recommendationState.data.some(element => element.selected)) {\r\n importData()\r\n .then(() => onSuccessfulImport({\r\n ...project,\r\n showRecommendationDialog\r\n }))\r\n .then(() => {\r\n dispatch({\r\n type: \"SET_CREATING_DATA\",\r\n payload: false\r\n })\r\n });\r\n } else {\r\n onSuccessfulImport({\r\n ...project,\r\n showRecommendationDialog\r\n })\r\n dispatch({\r\n type: \"SET_CREATING_DATA\",\r\n payload: false\r\n })\r\n }\r\n } else if (project.status === \"Failure\" && project.message === \"Max apps allowed limit reached\") {\r\n onProjectLimitReached();\r\n }\r\n }, [project])\r\n\r\n function navigateToProject(projectName) {\r\n const showRecommendationDialog = !!recommendationState.data.find(element => element.selected);\r\n navigate(`/${organization.number}/${projectName}/Entities?showRecommendationDialog=${showRecommendationDialog}`);\r\n }\r\n\r\n if (recommendationState.creatingData) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n

    Please wait while we are creating your app ...

    \r\n
    \r\n )\r\n }\r\n \r\n if (includeLibraryProjects && showLibraryProjects) {\r\n const domains = projectTypes.filter(type => type.isSelected).map(type => type.text);\r\n const tags = Array.from(new Set([...domains, ...customDomains]));\r\n\r\n return (\r\n {\r\n setShowLibraryProjects(false);\r\n setShowCreateProjectForm(true);\r\n setCurrentTitle(\"Create Project\");\r\n }}\r\n user={user}\r\n currentOrganization={organization}\r\n organizations={[organization]}\r\n onAppImport={({ name }) => navigateToProject(name)} />\r\n )\r\n }\r\n\r\n if (showRecommendedEntityGrid) {\r\n return (\r\n { }}\r\n onBack={() => {\r\n if (!isShowFromRuntime) {\r\n setShowCreateProjectForm(true);\r\n setCurrentTitle(\"Alice AI Recommendation\")\r\n } else if (includeLibraryProjects) {\r\n setShowLibraryProjects(true);\r\n setCurrentTitle(\"Alice AI Recommendation\")\r\n } else {\r\n setShowCreateProjectForm(true);\r\n setCurrentTitle(\"Select Project Category\")\r\n }\r\n setShowRecommendedEntityGrid(false);\r\n }}\r\n onNext={() => {\r\n setCurrentTitle(`Alice Recommendation - ${ENTITY_RELATION_PLURAL_LABEL}`);\r\n setShowRecommendedRelationGrid(true);\r\n setShowRecommendedEntityGrid(false);\r\n }}\r\n // onEntitiesLoaded={(entities) => {\r\n // if (entities.length === 0) {\r\n // setShowCreateProjectForm(true);\r\n // setShowRecommendedEntityGrid(false);\r\n // }\r\n // }}\r\n />\r\n )\r\n }\r\n\r\n if (showRecommendedRelationGrid) {\r\n return (\r\n {\r\n setShowRecommendedEntityGrid(true);\r\n setShowRecommendedRelationGrid(false);\r\n }}\r\n onAdd={() => {\r\n createProject(projectName, icon)\r\n .then(setProject)\r\n }} />\r\n )\r\n }\r\n\r\n async function handleNextInCreateProjectForm(projectName, icon) {\r\n setProjectName(projectName);\r\n setIcon(icon);\r\n setProjectTypes([\r\n { text: projectName, isSelected: true }\r\n ])\r\n setShowRecommendedEntityGrid(true);\r\n setShowCreateProjectForm(false);\r\n setCurrentTitle(`Alice Recommendation - ${ENTITY_PLURAL_LABEL}`)\r\n }\r\n\r\n if (showCreateProjectForm) {\r\n return (\r\n {\r\n setProject(project)\r\n }}\r\n onCreate={handleNextInCreateProjectForm}\r\n onCancel={onCancel} />\r\n )\r\n }\r\n\r\n return (\r\n
    \r\n Loading....\r\n
    \r\n )\r\n}\r\n\r\nexport function CreateProjectForm({\r\n projects, organization, user, initialProjectName = \"\", initialProjectIcon = \"\",\r\n onAddRequestCompleted, onCreate, onCancel\r\n}) {\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [projectName, setProjectName] = useState(initialProjectName);\r\n const [icon, setIcon] = useState(initialProjectIcon);\r\n const [nameError, setNameError] = useState(\"\");\r\n\r\n const submitBtn = useRef(null);\r\n\r\n const handleProjectName = (e) => {\r\n const { value } = e.target;\r\n if (value.length < 65) {\r\n const isNameUsed = projects.findIndex(project => project.name.trim().toLowerCase() === value.trim().toLowerCase()) > -1;\r\n const nameHasSpecialCharacters = /[^a-zA-Z0-9 ]/g.test(value);\r\n const nameStartsWithNumber = /^\\d/.test(value);\r\n let error = \"\";\r\n if (isNameUsed) {\r\n error = \"Application with that name already exists\"\r\n } else if (nameHasSpecialCharacters) {\r\n error = \"Application name cannot have special character\";\r\n } else if (nameStartsWithNumber) {\r\n error = \"Application name cannot start with number\";\r\n }\r\n setNameError(error);\r\n setProjectName(value);\r\n }\r\n }\r\n\r\n async function handleNext(e) {\r\n e.preventDefault();\r\n setLoading(true);\r\n onCreate(projectName, icon);\r\n }\r\n\r\n const handleSubmit = async (e) => {\r\n try {\r\n e.preventDefault();\r\n submitBtn.current.disabled = true;\r\n setLoading(true);\r\n let color = Color(projects.length + 1);\r\n\r\n let properties = {\r\n organizationName: organization.number,\r\n organizationId: organization.id,\r\n email: user.email,\r\n projectName: projectName.trim().replace(/\\s\\s+/g, \" \"),\r\n Icon: icon,\r\n developerMode: false,\r\n abbreviation: \"\",\r\n bgColor: color,\r\n description: \"\",\r\n tag: \"\",\r\n hasSchemaChanges: false,\r\n isPublished: false,\r\n isSuperApp: false,\r\n isFeaturedApp: false,\r\n TilesImages: \"\",\r\n SlideshowImages: \"\",\r\n };\r\n\r\n properties.projectUrl = properties.projectName.replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\")\r\n\r\n if (organization.id === process.env.REACT_APP_LIBRARY_ORGANIZATION_ID) {\r\n properties.tagsForRecommendation = \"\";\r\n }\r\n\r\n const request = await callApiWithAuthorization(\"/api/v0/createProjectandRole\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(properties),\r\n });\r\n const response = await request.json();\r\n\r\n onAddRequestCompleted(response);\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n e.target.disabled = false;\r\n }\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Please name your application. e.g. Sales Management,\r\n Project Management and so on.\r\n \r\n  \r\n {\r\n nameError &&\r\n \r\n {nameError}\r\n \r\n }\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Based on the name you provide, we will make recommendations using our Alice AI.\r\n
    \r\n
    \r\n 0\r\n }>\r\n Next\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n loading && \r\n }\r\n \r\n )\r\n}\r\n\r\nCreateProjectDialog.defaultProps = {\r\n projects: []\r\n}\r\n\r\nCreateProjectForm.defaultProps = {\r\n projects: []\r\n}\r\n\r\nCreateProjectDialog.propTypes = {\r\n organization: PropTypes.object.isRequired,\r\n user: PropTypes.object.isRequired,\r\n projects: PropTypes.array.isRequired,\r\n onCreate: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n onProjectLimitReached: PropTypes.func.isRequired,\r\n onClose: PropTypes.func.isRequired\r\n}\r\n\r\nexport default CreateProjectDialog;","import React, { Component } from \"react\";\r\nimport SolutionCollection from \"./SolutionCollection\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport { CheckForInternalUser } from \"../../Helpers/miscellaneous\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport PublishingAppToWorkspace from \"./PublishingAppToWorkspace\";\r\nimport CreateProjectDialog from \"../Project/CreateProjectDialog\";\r\nimport { getOrganisationProjects } from \"../../../API/Project/project\";\r\nimport { getLibraryData } from \"../../../API/Organization/organization\";\r\nimport { postMessageToRuntime } from \"../../Helpers/Runtime/runtime\";\r\nclass SolutionLibrary extends Component {\r\n\r\n static contextType = MsalContext\r\n\r\n Solutions = [\r\n // {\r\n // templateName: \"Recommended for you\",\r\n // },\r\n {\r\n templateName: \"Featured\",\r\n },\r\n {\r\n templateName: \"Super App\",\r\n }\r\n ];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n publishingApp: false,\r\n selectedApp: {},\r\n Solutions: [{\r\n templateName: \"All Apps\",\r\n }],\r\n Data: [],\r\n organizationProjects: [],\r\n tags: [],\r\n selectedTemplate: {\r\n templateName: localStorage.getItem(\"selectedTemplate\") || \"Featured\",\r\n },\r\n showCreateProjectDialog: false,\r\n showUpgradeDialog: false\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n await this.getData();\r\n };\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n if (this.state.publishingApp) {\r\n return (\r\n \r\n )\r\n }\r\n return (\r\n
    \r\n {\r\n this.state.showCreateProjectDialog &&\r\n \r\n }\r\n
    \r\n
    \r\n \r\n {this.props.userRole !== \"App Participant\" &&\r\n
    \r\n \r\n Create your own\r\n \r\n
    \r\n }\r\n
    Featured Picks
    \r\n
      \r\n {this.Solutions.filter(\r\n (o) => o.templateName.trim() !== \"\"\r\n ).map((item, i) => (\r\n \r\n this.handleTemplate(item)\r\n }\r\n className={`list-group-item pointer ${item.templateName ===\r\n this.state.selectedTemplate\r\n .templateName && \" active\"\r\n }`}\r\n >\r\n \r\n {item.templateName}\r\n \r\n {item.templateName === \"Featured\" && (\r\n \r\n )}\r\n {item.templateName === \"Super App\" && (\r\n \r\n )}\r\n \r\n ))}\r\n
    \r\n
    \r\n Explore by Category\r\n
    \r\n
      \r\n {this.state.Solutions.filter(\r\n (o) => o.templateName.trim() !== \"\"\r\n ).map((item, i) => (\r\n \r\n this.handleTemplate(item)\r\n }\r\n className={`list-group-item pointer ${item.templateName ===\r\n this.state.selectedTemplate\r\n .templateName && \" active\"\r\n }`}\r\n >\r\n \r\n {item.templateName}\r\n \r\n {item.templateName === \"Featured\" && (\r\n \r\n )}\r\n {item.templateName === \"Super App\" && (\r\n \r\n )}\r\n \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getData = async () => {\r\n let [response, organizationProjects] = await Promise.all([\r\n getLibraryData(),\r\n getOrganisationProjects(this.props.organization._id)\r\n ]);\r\n response = response.filter((item) => item.isActive === true);\r\n if (!CheckForInternalUser(this.props.user.email)) {\r\n response = response.filter((item) => item.isPublished === true);\r\n }\r\n let tags = \"\";\r\n for (let items of response) {\r\n items.SlideshowImages =\r\n items.SlideshowImages && items.SlideshowImages !== \"\"\r\n ? items.SlideshowImages.split(\",\")\r\n : [];\r\n items.tags = items.tag.split(\",\");\r\n items.TilesImageName = items.TilesImages\r\n ? items.TilesImages\r\n : undefined;\r\n if (items.tag !== \"\") {\r\n tags = tags + items.tag + \",\";\r\n }\r\n }\r\n tags = tags.substring(0, tags.length - 1);\r\n tags = tags.split(\",\");\r\n tags = tags.sort();\r\n tags = [...new Set(tags)];\r\n const Solutions = [{\r\n templateName: \"All Apps\",\r\n }];\r\n for (let item of tags) {\r\n Solutions.push({\r\n templateName: item\r\n });\r\n }\r\n\r\n this.setState({\r\n Data: response,\r\n Solutions,\r\n tags,\r\n loading: false,\r\n organizationProjects\r\n });\r\n };\r\n\r\n handleTemplate = (dataItem) => {\r\n localStorage.setItem(\"selectedTemplate\", dataItem.templateName)\r\n this.setState({\r\n selectedTemplate: dataItem,\r\n });\r\n };\r\n\r\n handleCreate = (dataItem) => {\r\n postMessageToRuntime({\r\n eventType: \"PROJECT_NAME_CHANGED\",\r\n value: dataItem.name\r\n })\r\n this.setState({\r\n publishingApp: !this.state.publishingApp,\r\n selectedApp: { ...dataItem }\r\n })\r\n }\r\n\r\n toggleHandleCreate = () => {\r\n this.setState({\r\n selectedApp: {},\r\n publishingApp: false\r\n })\r\n }\r\n\r\n toggleCreateProjectDialog = () => {\r\n this.setState({\r\n showCreateProjectDialog: !this.state.showCreateProjectDialog\r\n })\r\n }\r\n\r\n redirectToProject = (project) => {\r\n const { orgName } = this.props.organization;\r\n const url = `/${orgName}/${project.name}/Entities?showRecommendationPopup=true`;\r\n this.props.navigate(url);\r\n }\r\n\r\n toggleUpgradeDialog = () => {\r\n this.setState({\r\n showUpgradeDialog: !this.state.showUpgradeDialog\r\n })\r\n }\r\n}\r\n\r\nexport default SolutionLibrary;\r\n","import { useMsal } from '@azure/msal-react';\r\nimport React, { useState, useEffect } from 'react';\r\nimport { getAzureUser } from '../../../API/User/User';\r\n\r\nconst WelcomeUser = () => {\r\n\r\n const context = useMsal();\r\n\r\n const [user, setUser] = useState({});\r\n\r\n useEffect(() => {\r\n const getUserData = async () => {\r\n const user = await getAzureUser(context);\r\n setUser(user);\r\n };\r\n if(context.inProgress === \"none\"){\r\n getUserData();\r\n }\r\n }, [context]);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \"responsive\r\n
    \r\n
    \r\n
    \r\n

    Welcome to Codeless ONE, {user && user.name}

    \r\n
    \r\n To get started, please contact your administrator to assign you a subscription.\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default WelcomeUser;","export const NEXT = \"NEXT\";\r\nexport const BACK = \"BACK\";\r\n\r\nexport const SUBSCRIPTION_LOADED = \"SUBSCRIPTION_LOADED\";\r\n\r\nexport const FORM_UPDATED = \"FORM_UPDATED\";\r\n\r\nexport const ENTITIES_LOADED = \"ENTITIES_LOADED\";\r\nexport const ENTITIES_ADDED = \"ENTITIES_ADDED\";\r\nexport const ENTITY_SELECTED = \"ENTITY_SELECTED\";\r\nexport const ENTITY_DESELECTED = \"ENTITY_DESELECTED\";\r\nexport const ENTITY_UPDATED = \"ENTITY_UPDATED\";\r\nexport const ENTITY_CHECKED = \"ENTITY_CHECKED\";\r\nexport const ENTITY_UNCHECKED = \"ENTITY_UNCHECKED\";\r\nexport const TOGGLE_SELECT_ALL_ENTITIES = \"TOGGLE_SELECT_ALL_ENTITIES\";\r\nexport const ENTITY_ATTRIBUTES_LOAD_FAILED = \"ENTITY_ATTRIBUTES_LOAD_FAILED\";\r\nexport const ENTITY_ATTRIBUTE_LOADING_STARTED = \"ENTITY_ATTRIBUTE_LOADING_STARTED\";\r\nexport const TOGGLE_ENTITY_EDIT = \"TOGGLE_ENTITY_EDIT\";\r\nexport const ENTITY_NAME_CHANGED = \"ENTITY_NAME_CHANGED\";\r\n\r\nexport const RESET_RELATIONS_LOADED = \"RESET_RELATIONS_LOADED\";\r\nexport const RELATIONS_LOADED = \"RELATIONS_LOADED\";\r\nexport const RELATION_SELECTED = \"RELATION_SELECTED\";\r\nexport const RELATION_DESELECTED = \"RELATION_DESELECTED\";\r\nexport const TOGGLE_SELECT_ALL_RELATIONS = \"TOGGLE_SELECT_ALL_RELATIONS\";\r\n\r\nexport const CARDINALITY_CHANGED = \"CARDINALITY_CHANGED\";\r\nexport const SHOW_REFERENCE_ATTRIBUTE_TOGGLED = \"SHOW_REFERENCE_ATTRIBUTE_TOGGLED\";\r\nexport const REFERENCE_ATTRIBUTE_CHANGED = \"REFERENCE_ATTRIBUTE_CHANGED\";\r\nexport const INITIAL_REFERENCE_ATTRIBUTES_LOADED = \"INITIAL_REFERENCE_ATTRIBUTES_LOADED\";\r\n\r\nexport const ATTRIBUTES_LOADED = \"ATTRIBUTES_LOADED\";\r\nexport const ATTRIBUTE_SELECTED = \"ATTRIBUTE_SELECTED\";\r\nexport const ATTRIBUTE_DESELECTED = \"ATTRIBUTE_DESELECTED\";\r\nexport const ATTRIBUTES_ADDED = \"ATTRIBUTES_ADDED\";\r\nexport const ATTRIBUTE_TYPE_CHANGED = \"ATTRIBUTE_TYPE_CHANGED\";\r\nexport const ATTRIBUTE_PICKLIST_UPDATED = \"ATTRIBUTE_PICKLIST_UPDATED\";\r\nexport const TOGGLE_SELECT_ALL_ATTRIBUTES = \"TOGGLE_SELECT_ALL_ATTRIBUTES\";\r\nexport const TOGGLE_EDIT_ATTRIBUTE = \"TOGGLE_EDIT_ATTRIBUTE\";\r\nexport const ATTRIBUTE_NAME_CHANGED = \"ATTRIBUTE_NAME_CHANGED\";\r\n\r\nexport const SHOW_ADVANCED_CONFIGURATIONS = \"SHOW_ADVANCED_CONFIGURATIONS\";\r\nexport const HIDE_ADVANCED_CONFIGURATIONS = \"HIDE_ADVANCED_CONFIGURATIONS\";\r\n\r\nexport const UPDATE_PREVIOUS_SELECTED_ENTITY_NAME = \"UPDATE_PREVIOUS_SELECTED_ENTITY_NAME\";\r\n\r\nexport const FACED_ERROR = \"FACED_ERROR\";\r\n\r\nexport const RELATION_SWAP = \"RELATION_SWAP\";\r\n\r\nexport const DISPLAY_CHECKBOX_TOGGLED = \"DISPLAY_CHECKBOX_TOGGLED\";\r\nexport const TOGGLE_DISPLAY_CONFIGURATION_LOADED = \"TOGGLE_DISPLAY_CONFIGURATION_LOADED\";\r\nexport const TOGGLE_LOAD_EDIT_PAGE_CONFIGURATION = \"TOGGLE_LOAD_EDIT_PAGE_CONFIGURATION\";","export function removeAttributeWithOtherEntityName(attributes, allEntityNames, currentEntityName) {\r\n const newAttributes = attributes.filter((attribute) => {\r\n return !allEntityNames.some(name => {\r\n const nameRegex = new RegExp(name.toLowerCase())\r\n return (\r\n name !== currentEntityName &&\r\n attribute.name.toLowerCase().match(nameRegex)\r\n )\r\n })\r\n });\r\n return newAttributes;\r\n}","import * as Events from \"./AliceGPTContextEvents\";\r\nimport { removeAttributeWithOtherEntityName } from \"./utils\";\r\n\r\nconst enabledPageConfigurationFields = [\r\n \"shouldCreateTable\",\r\n \"shouldCreateSplitView\",\r\n \"shouldCreateKanban\",\r\n \"shouldCreateCards\",\r\n \"shouldCreateCalendar\",\r\n \"shouldCreateGanttChart\"\r\n];\r\n\r\nexport default (state, action) => {\r\n switch (action.type) {\r\n case Events.NEXT:\r\n return {\r\n ...state,\r\n step: state.step + 1\r\n };\r\n case Events.BACK:\r\n return {\r\n ...state,\r\n step: state.step - 1,\r\n relationsLoaded: state.step === 2 ? state.relations && state.relations.length > 0 : state.relationsLoaded\r\n };\r\n case Events.SUBSCRIPTION_LOADED:\r\n return {\r\n ...state,\r\n subscription: action.payload\r\n }\r\n case Events.FORM_UPDATED:\r\n return {\r\n ...state,\r\n form: action.payload,\r\n formUpdated: true,\r\n isLoadingEntities: true,\r\n entities: [],\r\n relations: []\r\n };\r\n case Events.SHOW_ADVANCED_CONFIGURATIONS:\r\n return {\r\n ...state,\r\n showAdvancedConfigurations: true\r\n };\r\n case Events.HIDE_ADVANCED_CONFIGURATIONS:\r\n return {\r\n ...state,\r\n showAdvancedConfigurations: false\r\n };\r\n case Events.ENTITIES_LOADED:\r\n const entssities = action.payload;\r\n debugger;\r\n return {\r\n ...state,\r\n isLoadingEntities: false,\r\n entities: action.payload.map(entity => ({\r\n ...entity,\r\n pageConfiguration: {\r\n shouldCreateTable: true,\r\n shouldCreateSplitView: true,\r\n shouldCreateKanban: false,\r\n shouldCreateCards: false,\r\n shouldCreateCalendar: false,\r\n shouldCreateGanttChart: false,\r\n shouldCreateDetailsView: true,\r\n shouldCreateEditRecord: true,\r\n shouldCreateNewRecord: !entity.isUserEntity,\r\n isKanbanDisabled: entity.isUserEntity,\r\n isCalendarDisabled: entity.isUserEntity,\r\n isGanttChartDisabled: entity.isUserEntity\r\n }\r\n })),\r\n selectedEntity: action.payload.length > 0 ? action.payload[0] : state.selectedEntity,\r\n namesOfSelectedEntities: action.payload.length > 0 ? action.payload.filter(entity => entity.checked).map(entity => entity.name) : [],\r\n formUpdated: false\r\n };\r\n case Events.ENTITIES_ADDED:\r\n const filteredNewEntities = action.payload.filter(entity => (\r\n !state.entities.some(e => e.name === entity.name)\r\n ));\r\n const entities = [\r\n ...state.entities,\r\n ...filteredNewEntities.map(entity => ({\r\n ...entity,\r\n attributes: [],\r\n pageConfiguration: {\r\n shouldCreateTable: true,\r\n shouldCreateSplitView: true,\r\n shouldCreateKanban: false,\r\n shouldCreateCards: false,\r\n shouldCreateCalendar: false,\r\n shouldCreateGanttChart: false,\r\n shouldCreateDetailsView: true,\r\n shouldCreateEditRecord: true,\r\n shouldCreateNewRecord: true,\r\n isKanbanDisabled: entity.isUserEntity,\r\n isCalendarDisabled: entity.isUserEntity,\r\n isGanttChartDisabled: entity.isUserEntity\r\n }\r\n }))\r\n ]\r\n return {\r\n ...state,\r\n entities: entities\r\n };\r\n case Events.ENTITY_SELECTED:\r\n return {\r\n ...state,\r\n selectedEntity: action.payload\r\n };\r\n case Events.ENTITY_DESELECTED:\r\n return {\r\n ...state,\r\n selectedEntity: null\r\n };\r\n case Events.ENTITY_UPDATED:\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.id === action.payload.id) {\r\n return action.payload;\r\n }\r\n return entity;\r\n })\r\n };\r\n case Events.ENTITY_CHECKED: {\r\n const newEntities = state.entities.map((entity, index) => {\r\n if (index === action.payload.entityIndex) {\r\n return {\r\n ...entity,\r\n checked: true,\r\n attributes: entity.attributes ? entity.attributes.map((attribute, attributeIndex) => ({\r\n ...attribute,\r\n selected: attributeIndex < 10\r\n })) : []\r\n }\r\n }\r\n return entity;\r\n })\r\n const numSelectedEntities = newEntities.filter(entity => entity.checked).length;\r\n return {\r\n ...state,\r\n entities: newEntities,\r\n namesOfSelectedEntities: [\r\n ...state.namesOfSelectedEntities,\r\n state.entities[action.payload.entityIndex].name\r\n ],\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n checked: true,\r\n attributes: state.selectedEntity.name === state.entities[action.payload.entityIndex].name ?\r\n state.selectedEntity.attributes.map((attribute, attributeIndex) => ({\r\n ...attribute,\r\n selected: attributeIndex < 10\r\n })) : state.selectedEntity.attributes\r\n },\r\n relations: numSelectedEntities < 3 ? [] : state.relations,\r\n initialAttributesLoaded: false,\r\n relationsLoaded: false\r\n };\r\n }\r\n case Events.ENTITY_UNCHECKED: {\r\n debugger;\r\n const newEntities = state.entities.map((entity, index) => {\r\n if (index === action.payload.entityIndex) {\r\n return {\r\n ...entity,\r\n checked: false,\r\n attributes: entity.attributes.map(attribute => ({\r\n ...attribute,\r\n selected: false\r\n }))\r\n }\r\n }\r\n return entity;\r\n })\r\n const numSelectedEntities = newEntities.filter(entity => entity.checked).length;\r\n return {\r\n ...state,\r\n entities: newEntities,\r\n namesOfSelectedEntities: state.namesOfSelectedEntities.filter(name => (\r\n name !== state.entities[action.payload.entityIndex].name\r\n )),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n checked: false,\r\n attributes: state.selectedEntity.name === state.entities[action.payload.entityIndex].name ?\r\n state.selectedEntity.attributes.map(attribute => {\r\n return {\r\n ...attribute,\r\n selected: false\r\n }\r\n }) : state.selectedEntity.attributes\r\n },\r\n relations: numSelectedEntities < 3 ? [] : state.relations,\r\n initialAttributesLoaded: false,\r\n relationsLoaded: false\r\n };\r\n }\r\n case Events.TOGGLE_SELECT_ALL_ENTITIES:\r\n const everyEntityChecked = state.entities.every(entity => entity.checked);\r\n const val = {\r\n ...state,\r\n entities: state.entities.map(entity => ({\r\n ...entity,\r\n checked: entity.isStatic ? true : !everyEntityChecked,\r\n attributes: entity.attributes ? entity.attributes.map((attribute, attributeIndex) => ({\r\n ...attribute,\r\n selected: attribute.isAzureAttribute ? true : (!everyEntityChecked && attributeIndex < 10)\r\n })) : []\r\n })),\r\n namesOfSelectedEntities: everyEntityChecked ? [] : state.entities.map(entity => entity.name),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n attributes: state.selectedEntity.attributes.map((attribute, attributeIndex) => ({\r\n ...attribute,\r\n selected: attribute.isAzureAttribute ? true : (!everyEntityChecked && attributeIndex < 10)\r\n }))\r\n },\r\n relations: everyEntityChecked && state.entities.length < 3 ? [] : state.relations,\r\n initialAttributesLoaded: false,\r\n relationsLoaded: false\r\n };\r\n return val;\r\n case Events.TOGGLE_ENTITY_EDIT:\r\n return {\r\n ...state,\r\n entities: state.entities.map((entity, index) => {\r\n if (index === action.payload.entityIndex) {\r\n debugger\r\n return {\r\n ...entity,\r\n inEdit: !entity.inEdit\r\n }\r\n }\r\n return entity;\r\n })\r\n }\r\n case Events.ENTITY_NAME_CHANGED:\r\n return {\r\n ...state,\r\n entities: state.entities.map((entity, index) => {\r\n if (index === action.payload.entityIndex) {\r\n return {\r\n ...entity,\r\n name: action.payload.newEntityName.trim(),\r\n };\r\n }\r\n return entity;\r\n }),\r\n relations: state.relations && state.relations.length > 0 ? state.relations.map(relation => {\r\n if (relation.from === state.entities[action.payload.entityIndex].name) {\r\n return {\r\n ...relation,\r\n from: action.payload.newEntityName.trim()\r\n }\r\n }\r\n if (relation.to === state.entities[action.payload.entityIndex].name) {\r\n return {\r\n ...relation,\r\n to: action.payload.newEntityName.trim()\r\n }\r\n }\r\n return relation;\r\n }) : state.relations\r\n }\r\n case Events.RESET_RELATIONS_LOADED:\r\n return {\r\n ...state,\r\n relations: [],\r\n initialAttributesLoaded: true,\r\n relationsLoaded: false\r\n }\r\n case Events.RELATIONS_LOADED:\r\n return {\r\n ...state,\r\n relations: action.payload,\r\n initialAttributesLoaded: true,\r\n relationsLoaded: true\r\n };\r\n case Events.RELATION_SELECTED:\r\n return {\r\n ...state,\r\n relations: state.relations.map((relation, index) => {\r\n if (index === action.payload.relationIndex) {\r\n return {\r\n ...relation,\r\n selected: true\r\n }\r\n }\r\n return relation;\r\n })\r\n };\r\n case Events.RELATION_DESELECTED:\r\n return {\r\n ...state,\r\n relations: state.relations.map((relation, index) => {\r\n if (index === action.payload.relationIndex) {\r\n return {\r\n ...relation,\r\n selected: false,\r\n showReferenceAttribute: false\r\n }\r\n }\r\n return relation;\r\n })\r\n };\r\n case Events.SHOW_REFERENCE_ATTRIBUTE_TOGGLED:\r\n return {\r\n ...state,\r\n relations: state.relations.map((relation, index) => {\r\n if (index === action.payload.relationIndex) {\r\n return {\r\n ...relation,\r\n selected: !relation.showReferenceAttribute && !relation.selected ? true : relation.selected,\r\n showReferenceAttribute: !relation.showReferenceAttribute\r\n }\r\n }\r\n return relation;\r\n })\r\n };\r\n case Events.REFERENCE_ATTRIBUTE_CHANGED:\r\n return {\r\n ...state,\r\n relations: state.relations.map((relation, index) => {\r\n if (index === action.payload.relationIndex) {\r\n return {\r\n ...relation,\r\n referenceAttribute: action.payload.referenceAttribute\r\n }\r\n }\r\n return relation;\r\n })\r\n };\r\n case Events.INITIAL_REFERENCE_ATTRIBUTES_LOADED:\r\n return {\r\n ...state,\r\n initialAttributesLoaded: true\r\n }\r\n case Events.ATTRIBUTES_LOADED: {\r\n const entityNames = state.entities.map(entity => entity.name).filter(name => name !== action.payload.entityName);\r\n const attributes = removeAttributeWithOtherEntityName(action.payload.attributes, entityNames)\r\n const { shouldCheckEntity } = action.payload;\r\n const everyEntityChecked = state.entities.every(entity => entity.checked);\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n return {\r\n ...entity,\r\n attributes: attributes.map((attribute, index) => {\r\n if (attribute.type === \"State Field\") {\r\n const otherStateAttributeIndex = attributes.findIndex(attr => attr.type === \"State Field\" && attr.name !== attribute.name);\r\n // there is no other state attribute or this is the first state attribute\r\n const isSelected = otherStateAttributeIndex === -1 || index < otherStateAttributeIndex;\r\n return {\r\n ...attribute,\r\n selected: (entity.checked || everyEntityChecked) && shouldCheckEntity && entity.checked && isSelected && index < 10\r\n }\r\n }\r\n return {\r\n ...attribute,\r\n selected: (entity.checked || everyEntityChecked) && shouldCheckEntity && entity.checked && index < 10\r\n }\r\n }),\r\n attributesLoading: false,\r\n disabled: attributes.length === 0,\r\n checked: (entity.checked || everyEntityChecked) && shouldCheckEntity && attributes.length > 0,\r\n hasAttributeLoadingError: false\r\n }\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: state.selectedEntity.name === action.payload.entityName ?\r\n {\r\n ...state.selectedEntity,\r\n attributes: attributes.map((attribute, index) => {\r\n if (attribute.type === \"State\") {\r\n const otherStateAttributeIndex = attributes.findIndex(attr => attr.type === \"State\" && attr.name !== attribute.name);\r\n // there is no other state attribute or this is the first state attribute\r\n const isSelected = otherStateAttributeIndex === -1 || index < otherStateAttributeIndex;\r\n return {\r\n ...attribute,\r\n selected: (state.selectedEntity.checked || everyEntityChecked) && shouldCheckEntity && state.selectedEntity.checked && isSelected && index < 10\r\n }\r\n }\r\n return {\r\n ...attribute,\r\n selected: (state.selectedEntity.checked || everyEntityChecked) && shouldCheckEntity && state.selectedEntity.checked && index < 10\r\n }\r\n }),\r\n disabled: attributes.length === 0,\r\n checked: (state.selectedEntity.checked || everyEntityChecked) && shouldCheckEntity && attributes.length > 0,\r\n attributesLoading: false,\r\n hasAttributeLoadingError: false\r\n }\r\n :\r\n state.selectedEntity\r\n };\r\n }\r\n case Events.ATTRIBUTE_SELECTED: {\r\n const newNamesOfSelectedEntities = state.namesOfSelectedEntities.includes(action.payload.entityName) ? state.namesOfSelectedEntities : [\r\n ...state.namesOfSelectedEntities,\r\n action.payload.entityName\r\n ];\r\n const isNamesOfSelectedEntitiesChanged = newNamesOfSelectedEntities.length !== state.namesOfSelectedEntities.length || !newNamesOfSelectedEntities.every(name => state.namesOfSelectedEntities.includes(name));\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n return {\r\n ...entity,\r\n checked: true,\r\n attributes: entity.attributes.map((attribute, attributeIndex) => {\r\n if (attributeIndex === action.payload.attributeIndex) {\r\n return {\r\n ...attribute,\r\n selected: true\r\n }\r\n }\r\n return attribute;\r\n })\r\n }\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n attributes:\r\n state.selectedEntity.name === action.payload.entityName ?\r\n state.selectedEntity.attributes.map((attribute, attributeIndex) => {\r\n if (attributeIndex === action.payload.attributeIndex) {\r\n return {\r\n ...attribute,\r\n selected: true\r\n }\r\n }\r\n return attribute;\r\n })\r\n :\r\n state.selectedEntity.attributes,\r\n checked: true\r\n },\r\n namesOfSelectedEntities: newNamesOfSelectedEntities,\r\n relations: newNamesOfSelectedEntities.length < 3 ? [] : state.relations,\r\n relationsLoaded: newNamesOfSelectedEntities.length < 3 ? false : state.relationsLoaded,\r\n initialAttributesLoaded: newNamesOfSelectedEntities.length < 3 ? false : state.initialAttributesLoaded\r\n };\r\n }\r\n case Events.ATTRIBUTE_DESELECTED:\r\n const allSelectedAttributes = state.selectedEntity.attributes.filter(attr => attr.selected);\r\n const newAttributes = state.selectedEntity.attributes.map((attribute, attributeIndex) => {\r\n if (attributeIndex === action.payload.attributeIndex) {\r\n return {\r\n ...attribute,\r\n selected: false\r\n }\r\n }\r\n return attribute;\r\n });\r\n const newSelectedAttributes = newAttributes.filter(attribute => attribute.selected);\r\n const selectedTextAttributes = allSelectedAttributes\r\n .filter(attribute => attribute.type === \"string\")\r\n .filter(attribute => attribute.name !== action.payload.attributeName);\r\n const newNamesOfSelectedEntities = newSelectedAttributes.length === 0 ? state.namesOfSelectedEntities.filter(name => name !== action.payload.entityName) : state.namesOfSelectedEntities;\r\n const isNamesOfSelectedEntitiesChanged = newNamesOfSelectedEntities.length !== state.namesOfSelectedEntities.length || !newNamesOfSelectedEntities.every(name => state.namesOfSelectedEntities.includes(name));\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n return {\r\n ...entity,\r\n attributes: newAttributes,\r\n checked: allSelectedAttributes.length > 1\r\n }\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n attributes:\r\n state.selectedEntity.name === action.payload.entityName ?\r\n newAttributes\r\n :\r\n state.selectedEntity.attributes,\r\n checked: allSelectedAttributes.length > 1\r\n },\r\n relations: newNamesOfSelectedEntities.length < 3 ? [] : state.relations.map(relation => {\r\n if (relation.showReferenceAttribute && relation.referenceAttribute === action.payload.attributeName) {\r\n return {\r\n ...relation,\r\n showReferenceAttribute: selectedTextAttributes.length > 0,\r\n referenceAttribute: (\r\n selectedTextAttributes.length > 0 ? selectedTextAttributes[0].name : \"\"\r\n )\r\n }\r\n }\r\n return relation;\r\n }),\r\n namesOfSelectedEntities: newNamesOfSelectedEntities,\r\n relationsLoaded: newNamesOfSelectedEntities.length < 3 ? false : state.relationsLoaded,\r\n initialAttributesLoaded: newNamesOfSelectedEntities.length < 3 ? false : state.initialAttributesLoaded\r\n };\r\n case Events.ATTRIBUTES_ADDED: {\r\n const entityNames = state.entities.map(entity => entity.name).filter(name => name !== action.payload.entityName);\r\n const attributes = removeAttributeWithOtherEntityName(action.payload.attributes, entityNames)\r\n const selectedEntity = { ...state.selectedEntity };\r\n if (selectedEntity.name === action.payload.entityName) {\r\n const newAttributes = attributes.filter(attribute => (\r\n !selectedEntity.attributes.some(a => a.name === attribute.name)\r\n ));\r\n selectedEntity.attributes = [\r\n ...selectedEntity.attributes,\r\n ...newAttributes\r\n ];\r\n selectedEntity.hadNoMoreAttributes = newAttributes.length === 0;\r\n selectedEntity.disabled = selectedEntity.isStatic ? true : selectedEntity.attributes.length === 0;\r\n }\r\n const entities = state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n const newAttributes = attributes.filter(attribute => (\r\n !entity.attributes.some(a => a.name === attribute.name)\r\n ));\r\n const allAttributes = [\r\n ...entity.attributes,\r\n ...newAttributes\r\n ];\r\n return {\r\n ...entity,\r\n attributes: allAttributes,\r\n hadNoMoreAttributes: newAttributes.length === 0,\r\n disabled: entity.isStatic ? true : allAttributes.length === 0\r\n }\r\n }\r\n return entity;\r\n });\r\n return {\r\n ...state,\r\n entities, selectedEntity\r\n };\r\n }\r\n case Events.ATTRIBUTE_PICKLIST_UPDATED:\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n entity.attributes = entity.attributes.map(attribute => {\r\n if (attribute.name === action.payload.attributeName) {\r\n attribute.picklist = action.payload.picklist;\r\n }\r\n return attribute;\r\n });\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n attributes:\r\n state.selectedEntity.name === action.payload.entityName ?\r\n state.selectedEntity.attributes.map(attribute => {\r\n if (attribute.name === action.payload.attributeName) {\r\n attribute.picklist = action.payload.picklist;\r\n }\r\n return attribute;\r\n })\r\n :\r\n state.selectedEntity.attributes\r\n }\r\n };\r\n case Events.ATTRIBUTE_TYPE_CHANGED:\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n return {\r\n ...entity,\r\n attributes: entity.attributes.map((attribute, index) => {\r\n if (index === action.payload.index) {\r\n return {\r\n ...attribute,\r\n type: action.payload.type,\r\n picklist: attribute.picklist ? attribute.picklist : [\"Value 1\"]\r\n }\r\n }\r\n return attribute;\r\n })\r\n }\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n attributes:\r\n state.selectedEntity.name === action.payload.entityName ?\r\n state.selectedEntity.attributes.map((attribute, index) => {\r\n if (index === action.payload.index) {\r\n return {\r\n ...attribute,\r\n type: action.payload.type,\r\n picklist: attribute.picklist ? attribute.picklist : [\"Value 1\"]\r\n }\r\n }\r\n return attribute;\r\n })\r\n :\r\n state.selectedEntity.attributes\r\n }\r\n }\r\n case Events.UPDATE_PREVIOUS_SELECTED_ENTITY_NAME:\r\n debugger;\r\n return {\r\n ...state,\r\n previousNamesOfSelectedEntities: state.namesOfSelectedEntities\r\n }\r\n case Events.TOGGLE_SELECT_ALL_ATTRIBUTES: {\r\n const everyAttributeSelected = state.selectedEntity.attributes.every(attribute => attribute.selected);\r\n const namesOfSelectedEntities = state.namesOfSelectedEntities.includes(state.selectedEntity.name) ? state.namesOfSelectedEntities : [\r\n ...state.namesOfSelectedEntities,\r\n state.selectedEntity.name\r\n ];\r\n const isNamesOfSelectedEntitiesChanged = namesOfSelectedEntities.length !== state.namesOfSelectedEntities.length || !namesOfSelectedEntities.every(name => state.namesOfSelectedEntities.includes(name));\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n return {\r\n ...entity,\r\n attributes: entity.attributes.map(attribute => ({\r\n ...attribute,\r\n selected: attribute.isAzureAttribute ? true : !everyAttributeSelected\r\n })),\r\n checked: entity.isStatic ? true : !everyAttributeSelected\r\n }\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n checked: state.selectedEntity.isStatic ? true : !everyAttributeSelected,\r\n attributes:\r\n state.selectedEntity.name === action.payload.entityName ?\r\n state.selectedEntity.attributes.map(attribute => ({\r\n ...attribute,\r\n selected: attribute.isAzureAttribute ? true : !everyAttributeSelected\r\n }))\r\n :\r\n state.selectedEntity.attributes\r\n },\r\n namesOfSelectedEntities: namesOfSelectedEntities,\r\n // relations: isNamesOfSelectedEntitiesChanged ? [] : state.relations,\r\n // relationsLoaded: isNamesOfSelectedEntitiesChanged ? false : state.relationsLoaded,\r\n // initialAttributesLoaded: isNamesOfSelectedEntitiesChanged ? false : state.initialAttributesLoaded\r\n };\r\n }\r\n case Events.ENTITY_ATTRIBUTES_LOAD_FAILED:\r\n const newSelectedEntity = { ...state.selectedEntity };\r\n if (newSelectedEntity.name === action.payload.entityName) {\r\n newSelectedEntity.attributes = [];\r\n newSelectedEntity.attributesLoading = false;\r\n newSelectedEntity.hasAttributeLoadingError = true;\r\n }\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n return {\r\n ...entity,\r\n attributes: [],\r\n attributesLoading: false,\r\n hasAttributeLoadingError: true\r\n };\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: newSelectedEntity\r\n }\r\n case Events.ENTITY_ATTRIBUTE_LOADING_STARTED:\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n return {\r\n ...entity,\r\n attributesLoading: true,\r\n hasAttributeLoadingError: false\r\n };\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n attributesLoading: true,\r\n hasAttributeLoadingError: false\r\n }\r\n };\r\n case Events.TOGGLE_EDIT_ATTRIBUTE:\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n return {\r\n ...entity,\r\n attributes: entity.attributes.map((attribute, index) => {\r\n if (index === action.payload.attributeIndex) {\r\n return {\r\n ...attribute,\r\n inEdit: !attribute.inEdit\r\n }\r\n }\r\n return attribute;\r\n })\r\n }\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n attributes:\r\n state.selectedEntity.name === action.payload.entityName ?\r\n state.selectedEntity.attributes.map((attribute, index) => {\r\n if (index === action.payload.attributeIndex) {\r\n return {\r\n ...attribute,\r\n inEdit: !attribute.inEdit\r\n }\r\n }\r\n return attribute;\r\n })\r\n :\r\n state.selectedEntity.attributes\r\n }\r\n }\r\n case Events.ATTRIBUTE_NAME_CHANGED:\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity.name === action.payload.entityName) {\r\n return {\r\n ...entity,\r\n attributes: entity.attributes.map((attribute, index) => {\r\n if (index === action.payload.attributeIndex) {\r\n return {\r\n ...attribute,\r\n name: action.payload.newAttributeName\r\n }\r\n }\r\n return attribute;\r\n })\r\n }\r\n }\r\n return entity;\r\n }),\r\n selectedEntity: {\r\n ...state.selectedEntity,\r\n attributes:\r\n state.selectedEntity.name === action.payload.entityName ?\r\n state.selectedEntity.attributes.map((attribute, index) => {\r\n if (index === action.payload.attributeIndex) {\r\n return {\r\n ...attribute,\r\n name: action.payload.newAttributeName\r\n }\r\n }\r\n return attribute;\r\n })\r\n :\r\n state.selectedEntity.attributes\r\n }\r\n }\r\n case Events.TOGGLE_SELECT_ALL_RELATIONS:\r\n const everyRelationSelected = state.relations.every(relation => relation.selected);\r\n return {\r\n ...state,\r\n relations: state.relations.map(relation => ({\r\n ...relation,\r\n selected: !everyRelationSelected,\r\n showReferenceAttribute: everyRelationSelected ? false : relation.showReferenceAttribute\r\n }))\r\n };\r\n case Events.CARDINALITY_CHANGED:\r\n return {\r\n ...state,\r\n relations: state.relations.map((relation, relationIndex) => {\r\n if (relationIndex === action.payload.relationIndex) {\r\n return {\r\n ...relation,\r\n cardinality: action.payload.cardinality.value,\r\n showReferenceAttribute: action.payload.cardinality.value === \"1-*\" ? relation.showReferenceAttribute : false,\r\n referenceAttribute: action.payload.cardinality.value === \"1-*\" ? relation.referenceAttribute : \"\"\r\n }\r\n }\r\n return relation;\r\n })\r\n };\r\n case Events.FACED_ERROR:\r\n return {\r\n ...state,\r\n error: action.payload.error\r\n };\r\n case Events.RELATION_SWAP: {\r\n return {\r\n ...state,\r\n relations: state.relations.map((relation, index) => {\r\n if (index === action.payload.relationIndex) {\r\n return {\r\n ...relation,\r\n from: relation.to,\r\n to: relation.from,\r\n showReferenceAttribute: false,\r\n referenceAttribute: null\r\n }\r\n }\r\n\r\n return relation;\r\n })\r\n }\r\n }\r\n case Events.DISPLAY_CHECKBOX_TOGGLED: {\r\n return {\r\n ...state,\r\n entities: state.entities.map((entity) => {\r\n if (entity.name === action.payload.entityName) {\r\n const newPageConfiguration = {\r\n ...entity.pageConfiguration,\r\n [action.payload.name]: !entity.pageConfiguration[action.payload.name]\r\n };\r\n const isAnyPageSelected = enabledPageConfigurationFields.some(value => newPageConfiguration[value]);\r\n newPageConfiguration.shouldCreateDetailsView = isAnyPageSelected;\r\n newPageConfiguration.shouldCreateEditRecord = isAnyPageSelected;\r\n newPageConfiguration.shouldCreateNewRecord = isAnyPageSelected;\r\n if (isAnyPageSelected) {\r\n const selectedPageConfigurationFields = enabledPageConfigurationFields.filter(field => newPageConfiguration[field]);\r\n newPageConfiguration.isTableDisabled = selectedPageConfigurationFields.length === 1 && selectedPageConfigurationFields[0] === \"shouldCreateTable\";\r\n } else {\r\n newPageConfiguration.isTableDisabled = true;\r\n newPageConfiguration.shouldCreateTable = true;\r\n newPageConfiguration.shouldCreateDetailsView = true;\r\n newPageConfiguration.shouldCreateEditRecord = true;\r\n newPageConfiguration.shouldCreateNewRecord = true;\r\n }\r\n return {\r\n ...entity,\r\n pageConfiguration: newPageConfiguration\r\n }\r\n }\r\n return entity;\r\n })\r\n }\r\n }\r\n case Events.TOGGLE_DISPLAY_CONFIGURATION_LOADED: {\r\n return {\r\n ...state,\r\n isPageConfigurationLoading: !state.isPageConfigurationLoading\r\n }\r\n }\r\n case Events.TOGGLE_LOAD_EDIT_PAGE_CONFIGURATION:\r\n return {\r\n ...state,\r\n // the following boolean is added so we do not have to\r\n // load the configurations again when the user navigates back\r\n // it is set to true only when in relation recommendation,\r\n // entities change is detected.\r\n shouldLoadEditPageConfigurations: !state.shouldLoadEditPageConfigurations\r\n }\r\n default:\r\n return state;\r\n }\r\n}","export const OPENAI_MODEL = \"gpt-4o-mini\";","import React, { createContext, useReducer } from \"react\";\r\nimport aliceGPTReducer from \"./AliceGPTReducer\";\r\nimport { OPENAI_MODEL } from \"../../Constants/OpenAI\";\r\n\r\nconst initialState = {\r\n step: 0,\r\n form: {\r\n projectName: \"\",\r\n domain: \"\",\r\n description: \"\",\r\n model: OPENAI_MODEL\r\n },\r\n subscription: {},\r\n isLoadingEntities: true,\r\n formUpdated: false,\r\n initialAttributesLoaded: true,\r\n showAdvancedConfigurations: false,\r\n isPageConfigurationLoading: true,\r\n entities: [],\r\n relations: [],\r\n selectedEntity: [],\r\n selectedRelation: [],\r\n namesOfSelectedEntities: [],\r\n previousNamesOfSelectedEntities: [],\r\n error: \"\"\r\n}\r\n\r\nconst AliceGPTContext = createContext(initialState);\r\n\r\nexport const AliceGPTContextProvider = ({ children }) => {\r\n\r\n const [state, dispatch] = useReducer(aliceGPTReducer, initialState);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport default AliceGPTContext;","import React, { useContext } from \"react\";\r\nimport AliceGPTContext from \"../../Context/AliceGPT/AliceGPTContext\";\r\n\r\nfunction useAliceGPT() {\r\n const [state, dispatch] = useContext(AliceGPTContext);\r\n\r\n return [state, dispatch];\r\n}\r\n\r\nexport default useAliceGPT;","export default function startsWithNumber(value) {\r\n return /^\\d/.test(value);\r\n}","import React, { useState } from 'react';\r\nimport useAliceGPT from '../../../../Hooks/AliceGPT/useAliceGPT';\r\nimport * as AliceGPTEvents from '../../../../Context/AliceGPT/AliceGPTContextEvents';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport startsWithNumber from '../../../Helpers/Validators/startsWithNumber';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { LanguagesMap } from '../../../OrganizationSettings/LanguagesMap';\r\n\r\nfunction AliceProjectDetailsForm({ checkDuplicateProjectName, showAIFields, showLanguageDropdown }) {\r\n\r\n const { t } = useTranslation(\"create_project/alice_project_details_form\", { useSuspense: false });\r\n\r\n const [{ form, showAdvancedConfigurations }, dispatch] = useAliceGPT();\r\n\r\n const isProjectNameUsed = checkDuplicateProjectName();\r\n const hasSpecialCharacters = /[^a-zA-Z0-9 ]/g.test(form.projectName);\r\n\r\n function handleFormChange(e) {\r\n const { name, value, maxLength } = e.target;\r\n let newValue = value;\r\n if (maxLength && maxLength > 0 && value.length > maxLength) {\r\n newValue = value.substring(0, maxLength);\r\n };\r\n const newFormDetails = { ...form, [name]: newValue };\r\n dispatch({ type: AliceGPTEvents.FORM_UPDATED, payload: newFormDetails });\r\n }\r\n\r\n function toggleAdvancedConfiguration() {\r\n if (showAdvancedConfigurations) {\r\n dispatch({ type: AliceGPTEvents.HIDE_ADVANCED_CONFIGURATIONS });\r\n } else {\r\n dispatch({ type: AliceGPTEvents.SHOW_ADVANCED_CONFIGURATIONS });\r\n }\r\n }\r\n\r\n return (\r\n e.preventDefault()}\r\n >\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {\r\n showLanguageDropdown &&\r\n
    \r\n {/* TODO: Support static translation */}\r\n \r\n \r\n
    \r\n }\r\n {\r\n showAIFields &&\r\n
    \r\n \r\n \r\n
    \r\n }\r\n
    \r\n {/*
    \r\n \r\n Show advanced configuration\r\n \r\n
    \r\n {\r\n showAdvancedConfigurations && (\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 AliceProjectDetailsForm;","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function getAliceRecommendedEntities(domain, description, model, entitiesToSkip, language=\"en\", skipAuth = false) {\r\n const request = await callApiWithAuthorization(\"/api/v0/alicegpt/entities?language=\" + language, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Skip-Authorization\": skipAuth\r\n },\r\n body: JSON.stringify({\r\n numberOfEntities: 10,\r\n domain,\r\n description,\r\n model,\r\n entitiesToSkip\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getAliceRecommendedAttributes(entityName, model, attributesToSkip, domain, description, language=\"en\", skipAuth) {\r\n const request = await callApiWithAuthorization(\"/api/v0/alicegpt/attribute?language=\" + language, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Skip-Authorization\": skipAuth\r\n },\r\n body: JSON.stringify({\r\n numberOfAttributes: 10,\r\n entityName,\r\n model,\r\n attributesToSkip,\r\n domain,\r\n description\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getAliceRecommendedRelations(entityNames, model, skipAuth = false) {\r\n const request = await callApiWithAuthorization(\"/api/v0/alicegpt/relations\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Skip-Authorization\": skipAuth\r\n },\r\n body: JSON.stringify({\r\n numberOfRelations: 10,\r\n entityNames,\r\n model\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function importSelectedDataByAlice(organizationId, projectId, entities, relations) {\r\n const request = await callApiWithAuthorization(\"/api/v0/alicegpt/import\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n projectId,\r\n entities,\r\n relations\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getAliceRecommendedReferenceAttributeForRelation(fromEntity, toEntity) {\r\n const request = await callApiWithAuthorization(\"/api/v0/alicegpt/reference-attribute\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n fromEntity, toEntity\r\n })\r\n });\r\n const response = await request.text();\r\n return response;\r\n}\r\n\r\nexport async function importEntityAndAttributeInProject(subscriptionId, organizationId, projectId, entities) {\r\n const request = await callApiWithAuthorization(\"/api/v0/alicegpt/project/import/entity\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n subscriptionId,\r\n organizationId,\r\n projectId,\r\n entities\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function importAttributeInEntity(subscriptionId, projectId, entityId, attributes) {\r\n const request = await callApiWithAuthorization(\"/api/v0/alicegpt/project/import/attribute\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n subscriptionId,\r\n projectId,\r\n entityId,\r\n attributes\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function importRelationInProject(organizationId, projectId, relations) {\r\n const request = await callApiWithAuthorization(\"/api/v0/alicegpt/project/import/relation\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n projectId,\r\n relations\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getEntityMenuAndPageConfiguration(entities) {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/alicegpt/entity-menu-page-configuration\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n entities\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function optimizeDisplayUsingAI(projectId) {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/project/\"+projectId+\"/display/optimize-using-ai\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n projectId\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}","// cheap lodash replacements\n\nexport function memoize(fn: () => T): () => T {\n\tlet result: T | null = null\n\tconst memoized = () => {\n\t\tif (result == null) {\n\t\t\tresult = fn()\n\t\t}\n\t\treturn result\n\t}\n\treturn memoized\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without(items: T[], item: T) {\n\treturn items.filter((i) => i !== item)\n}\n\nexport function union(itemsA: T[], itemsB: T[]) {\n\tconst set = new Set()\n\tconst insertItem = (item: T) => set.add(item)\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tset.forEach((key) => result.push(key))\n\treturn result\n}\n","import { union, without } from './utils/js_utils.js'\n\ntype NodePredicate = (node: Node | null | undefined) => boolean\n\nexport class EnterLeaveCounter {\n\tprivate entered: any[] = []\n\tprivate isNodeInDocument: NodePredicate\n\n\tpublic constructor(isNodeInDocument: NodePredicate) {\n\t\tthis.isNodeInDocument = isNodeInDocument\n\t}\n\n\tpublic enter(enteringNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tconst isNodeEntered = (node: Node): boolean =>\n\t\t\tthis.isNodeInDocument(node) &&\n\t\t\t(!node.contains || node.contains(enteringNode as Node))\n\n\t\tthis.entered = union(this.entered.filter(isNodeEntered), [enteringNode])\n\n\t\treturn previousLength === 0 && this.entered.length > 0\n\t}\n\n\tpublic leave(leavingNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tthis.entered = without(\n\t\t\tthis.entered.filter(this.isNodeInDocument),\n\t\t\tleavingNode,\n\t\t)\n\n\t\treturn previousLength > 0 && this.entered.length === 0\n\t}\n\n\tpublic reset(): void {\n\t\tthis.entered = []\n\t}\n}\n","import type { DragDropMonitor } from 'dnd-core'\n\nimport type { NativeItemConfig } from './nativeTypesConfig.js'\n\nexport class NativeDragSource {\n\tpublic item: any\n\tprivate config: NativeItemConfig\n\n\tpublic constructor(config: NativeItemConfig) {\n\t\tthis.config = config\n\t\tthis.item = {}\n\t\tthis.initializeExposedProperties()\n\t}\n\n\tprivate initializeExposedProperties() {\n\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\tObject.defineProperty(this.item, property, {\n\t\t\t\tconfigurable: true, // This is needed to allow redefining it later\n\t\t\t\tenumerable: true,\n\t\t\t\tget() {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Browser doesn't allow reading \"${property}\" until the drop event.`,\n\t\t\t\t\t)\n\t\t\t\t\treturn null\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic loadDataTransfer(dataTransfer: DataTransfer | null | undefined): void {\n\t\tif (dataTransfer) {\n\t\t\tconst newProperties: PropertyDescriptorMap = {}\n\t\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\t\tconst propertyFn = this.config.exposeProperties[property]\n\t\t\t\tif (propertyFn != null) {\n\t\t\t\t\tnewProperties[property] = {\n\t\t\t\t\t\tvalue: propertyFn(dataTransfer, this.config.matchesTypes),\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tObject.defineProperties(this.item, newProperties)\n\t\t}\n\t}\n\n\tpublic canDrag(): boolean {\n\t\treturn true\n\t}\n\n\tpublic beginDrag(): any {\n\t\treturn this.item\n\t}\n\n\tpublic isDragging(monitor: DragDropMonitor, handle: string): boolean {\n\t\treturn handle === monitor.getSourceId()\n\t}\n\n\tpublic endDrag(): void {\n\t\t// empty\n\t}\n}\n","export const FILE = '__NATIVE_FILE__'\nexport const URL = '__NATIVE_URL__'\nexport const TEXT = '__NATIVE_TEXT__'\nexport const HTML = '__NATIVE_HTML__'\n","export function getDataFromDataTransfer(\n\tdataTransfer: DataTransfer,\n\ttypesToTry: string[],\n\tdefaultValue: string,\n): string {\n\tconst result = typesToTry.reduce(\n\t\t(resultSoFar, typeToTry) => resultSoFar || dataTransfer.getData(typeToTry),\n\t\t'',\n\t)\n\n\treturn result != null ? result : defaultValue\n}\n","import * as NativeTypes from '../NativeTypes.js'\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer.js'\n\nexport interface NativeItemConfigExposePropreties {\n\t[property: string]: (\n\t\tdataTransfer: DataTransfer,\n\t\tmatchesTypes: string[],\n\t) => any\n}\n\nexport interface NativeItemConfig {\n\texposeProperties: NativeItemConfigExposePropreties\n\tmatchesTypes: string[]\n}\n\nexport const nativeTypesConfig: {\n\t[key: string]: NativeItemConfig\n} = {\n\t[NativeTypes.FILE]: {\n\t\texposeProperties: {\n\t\t\tfiles: (dataTransfer: DataTransfer): File[] =>\n\t\t\t\tArray.prototype.slice.call(dataTransfer.files),\n\t\t\titems: (dataTransfer: DataTransfer): DataTransferItemList =>\n\t\t\t\tdataTransfer.items,\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Files'],\n\t},\n\t[NativeTypes.HTML]: {\n\t\texposeProperties: {\n\t\t\thtml: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Html', 'text/html'],\n\t},\n\t[NativeTypes.URL]: {\n\t\texposeProperties: {\n\t\t\turls: (dataTransfer: DataTransfer, matchesTypes: string[]): string[] =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n'),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Url', 'text/uri-list'],\n\t},\n\t[NativeTypes.TEXT]: {\n\t\texposeProperties: {\n\t\t\ttext: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Text', 'text/plain'],\n\t},\n}\n","import { NativeDragSource } from './NativeDragSource.js'\nimport { nativeTypesConfig } from './nativeTypesConfig.js'\n\nexport function createNativeDragSource(\n\ttype: string,\n\tdataTransfer?: DataTransfer,\n): NativeDragSource {\n\tconst config = nativeTypesConfig[type]\n\tif (!config) {\n\t\tthrow new Error(`native type ${type} has no configuration`)\n\t}\n\tconst result = new NativeDragSource(config)\n\tresult.loadDataTransfer(dataTransfer)\n\treturn result\n}\n\nexport function matchNativeItemType(\n\tdataTransfer: DataTransfer | null,\n): string | null {\n\tif (!dataTransfer) {\n\t\treturn null\n\t}\n\n\tconst dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || [])\n\treturn (\n\t\tObject.keys(nativeTypesConfig).filter((nativeItemType) => {\n\t\t\tconst typeConfig = nativeTypesConfig[nativeItemType]\n\t\t\tif (!typeConfig?.matchesTypes) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn typeConfig.matchesTypes.some(\n\t\t\t\t(t) => dataTransferTypes.indexOf(t) > -1,\n\t\t\t)\n\t\t})[0] || null\n\t)\n}\n","import { memoize } from './utils/js_utils.js'\n\ndeclare global {\n\tinterface Window extends HTMLElement {\n\t\tsafari: any\n\t}\n}\n\nexport type Predicate = () => boolean\nexport const isFirefox: Predicate = memoize(() =>\n\t/firefox/i.test(navigator.userAgent),\n)\nexport const isSafari: Predicate = memoize(() => Boolean(window.safari))\n","export class MonotonicInterpolant {\n\tprivate xs: any\n\tprivate ys: any\n\tprivate c1s: any\n\tprivate c2s: any\n\tprivate c3s: any\n\n\tpublic constructor(xs: number[], ys: number[]) {\n\t\tconst { length } = xs\n\n\t\t// Rearrange xs and ys so that xs is sorted\n\t\tconst indexes = []\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tindexes.push(i)\n\t\t}\n\t\tindexes.sort((a, b) => ((xs[a] as number) < (xs[b] as number) ? -1 : 1))\n\n\t\t// Get consecutive differences and slopes\n\t\tconst dys = []\n\t\tconst dxs = []\n\t\tconst ms = []\n\t\tlet dx\n\t\tlet dy\n\t\tfor (let i = 0; i < length - 1; i++) {\n\t\t\tdx = (xs[i + 1] as number) - (xs[i] as number)\n\t\t\tdy = (ys[i + 1] as number) - (ys[i] as number)\n\t\t\tdxs.push(dx)\n\t\t\tdys.push(dy)\n\t\t\tms.push(dy / dx)\n\t\t}\n\n\t\t// Get degree-1 coefficients\n\t\tconst c1s = [ms[0]]\n\t\tfor (let i = 0; i < dxs.length - 1; i++) {\n\t\t\tconst m2 = ms[i] as number\n\t\t\tconst mNext = ms[i + 1] as number\n\t\t\tif (m2 * mNext <= 0) {\n\t\t\t\tc1s.push(0)\n\t\t\t} else {\n\t\t\t\tdx = dxs[i] as number\n\t\t\t\tconst dxNext = dxs[i + 1] as number\n\t\t\t\tconst common = dx + dxNext\n\t\t\t\tc1s.push(\n\t\t\t\t\t(3 * common) / ((common + dxNext) / m2 + (common + dx) / mNext),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tc1s.push(ms[ms.length - 1])\n\n\t\t// Get degree-2 and degree-3 coefficients\n\t\tconst c2s = []\n\t\tconst c3s = []\n\t\tlet m\n\t\tfor (let i = 0; i < c1s.length - 1; i++) {\n\t\t\tm = ms[i] as number\n\t\t\tconst c1 = c1s[i] as number\n\t\t\tconst invDx = 1 / (dxs[i] as number)\n\t\t\tconst common = c1 + (c1s[i + 1] as number) - m - m\n\t\t\tc2s.push((m - c1 - common) * invDx)\n\t\t\tc3s.push(common * invDx * invDx)\n\t\t}\n\n\t\tthis.xs = xs\n\t\tthis.ys = ys\n\t\tthis.c1s = c1s\n\t\tthis.c2s = c2s\n\t\tthis.c3s = c3s\n\t}\n\n\tpublic interpolate(x: number): number {\n\t\tconst { xs, ys, c1s, c2s, c3s } = this\n\n\t\t// The rightmost point in the dataset should give an exact result\n\t\tlet i = xs.length - 1\n\t\tif (x === xs[i]) {\n\t\t\treturn ys[i]\n\t\t}\n\n\t\t// Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\t\tlet low = 0\n\t\tlet high = c3s.length - 1\n\t\tlet mid\n\t\twhile (low <= high) {\n\t\t\tmid = Math.floor(0.5 * (low + high))\n\t\t\tconst xHere = xs[mid]\n\t\t\tif (xHere < x) {\n\t\t\t\tlow = mid + 1\n\t\t\t} else if (xHere > x) {\n\t\t\t\thigh = mid - 1\n\t\t\t} else {\n\t\t\t\treturn ys[mid]\n\t\t\t}\n\t\t}\n\t\ti = Math.max(0, high)\n\n\t\t// Interpolate\n\t\tconst diff = x - xs[i]\n\t\tconst diffSq = diff * diff\n\t\treturn ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq\n\t}\n}\n","import type { XYCoord } from 'dnd-core'\n\nimport { isFirefox, isSafari } from './BrowserDetector.js'\nimport { MonotonicInterpolant } from './MonotonicInterpolant.js'\n\nconst ELEMENT_NODE = 1\n\nexport function getNodeClientOffset(node: Node): XYCoord | null {\n\tconst el = node.nodeType === ELEMENT_NODE ? node : node.parentElement\n\n\tif (!el) {\n\t\treturn null\n\t}\n\n\tconst { top, left } = (el as HTMLElement).getBoundingClientRect()\n\treturn { x: left, y: top }\n}\n\nexport function getEventClientOffset(e: MouseEvent): XYCoord {\n\treturn {\n\t\tx: e.clientX,\n\t\ty: e.clientY,\n\t}\n}\n\nfunction isImageNode(node: any) {\n\treturn (\n\t\tnode.nodeName === 'IMG' &&\n\t\t(isFirefox() || !document.documentElement?.contains(node))\n\t)\n}\n\nfunction getDragPreviewSize(\n\tisImage: boolean,\n\tdragPreview: any,\n\tsourceWidth: number,\n\tsourceHeight: number,\n) {\n\tlet dragPreviewWidth = isImage ? dragPreview.width : sourceWidth\n\tlet dragPreviewHeight = isImage ? dragPreview.height : sourceHeight\n\n\t// Work around @2x coordinate discrepancies in browsers\n\tif (isSafari() && isImage) {\n\t\tdragPreviewHeight /= window.devicePixelRatio\n\t\tdragPreviewWidth /= window.devicePixelRatio\n\t}\n\treturn { dragPreviewWidth, dragPreviewHeight }\n}\n\nexport function getDragPreviewOffset(\n\tsourceNode: HTMLElement,\n\tdragPreview: HTMLElement,\n\tclientOffset: XYCoord,\n\tanchorPoint: { anchorX: number; anchorY: number },\n\toffsetPoint: { offsetX: number; offsetY: number },\n): XYCoord {\n\t// The browsers will use the image intrinsic size under different conditions.\n\t// Firefox only cares if it's an image, but WebKit also wants it to be detached.\n\tconst isImage = isImageNode(dragPreview)\n\tconst dragPreviewNode = isImage ? sourceNode : dragPreview\n\tconst dragPreviewNodeOffsetFromClient = getNodeClientOffset(\n\t\tdragPreviewNode,\n\t) as XYCoord\n\tconst offsetFromDragPreview = {\n\t\tx: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n\t\ty: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n\t}\n\tconst { offsetWidth: sourceWidth, offsetHeight: sourceHeight } = sourceNode\n\tconst { anchorX, anchorY } = anchorPoint\n\tconst { dragPreviewWidth, dragPreviewHeight } = getDragPreviewSize(\n\t\tisImage,\n\t\tdragPreview,\n\t\tsourceWidth,\n\t\tsourceHeight,\n\t)\n\n\tconst calculateYOffset = () => {\n\t\tconst interpolantY = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the top\n\t\t\t\toffsetFromDragPreview.y,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n\t\t\t\t// Dock to the bottom\n\t\t\t\toffsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n\t\t\t],\n\t\t)\n\t\tlet y = interpolantY.interpolate(anchorY)\n\t\t// Work around Safari 8 positioning bug\n\t\tif (isSafari() && isImage) {\n\t\t\t// We'll have to wait for @3x to see if this is entirely correct\n\t\t\ty += (window.devicePixelRatio - 1) * dragPreviewHeight\n\t\t}\n\t\treturn y\n\t}\n\n\tconst calculateXOffset = () => {\n\t\t// Interpolate coordinates depending on anchor point\n\t\t// If you know a simpler way to do this, let me know\n\t\tconst interpolantX = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the left\n\t\t\t\toffsetFromDragPreview.x,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n\t\t\t\t// Dock to the right\n\t\t\t\toffsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n\t\t\t],\n\t\t)\n\t\treturn interpolantX.interpolate(anchorX)\n\t}\n\n\t// Force offsets if specified in the options.\n\tconst { offsetX, offsetY } = offsetPoint\n\tconst isManualOffsetX = offsetX === 0 || offsetX\n\tconst isManualOffsetY = offsetY === 0 || offsetY\n\treturn {\n\t\tx: isManualOffsetX ? offsetX : calculateXOffset(),\n\t\ty: isManualOffsetY ? offsetY : calculateYOffset(),\n\t}\n}\n","import type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport class OptionsReader {\n\tpublic ownerDocument: Document | null = null\n\tprivate globalContext: HTML5BackendContext\n\tprivate optionsArgs: HTML5BackendOptions | undefined\n\n\tpublic constructor(\n\t\tglobalContext: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.globalContext = globalContext\n\t\tthis.optionsArgs = options\n\t}\n\n\tpublic get window(): Window | undefined {\n\t\tif (this.globalContext) {\n\t\t\treturn this.globalContext\n\t\t} else if (typeof window !== 'undefined') {\n\t\t\treturn window\n\t\t}\n\t\treturn undefined\n\t}\n\n\tpublic get document(): Document | undefined {\n\t\tif (this.globalContext?.document) {\n\t\t\treturn this.globalContext.document\n\t\t} else if (this.window) {\n\t\t\treturn this.window.document\n\t\t} else {\n\t\t\treturn undefined\n\t\t}\n\t}\n\n\tpublic get rootElement(): Node | undefined {\n\t\treturn this.optionsArgs?.rootElement || this.window\n\t}\n}\n","import type {\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter.js'\nimport {\n\tcreateNativeDragSource,\n\tmatchNativeItemType,\n} from './NativeDragSources/index.js'\nimport type { NativeDragSource } from './NativeDragSources/NativeDragSource.js'\nimport * as NativeTypes from './NativeTypes.js'\nimport {\n\tgetDragPreviewOffset,\n\tgetEventClientOffset,\n\tgetNodeClientOffset,\n} from './OffsetUtils.js'\nimport { OptionsReader } from './OptionsReader.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\ntype RootNode = Node & { __isReactDndBackendSetUp: boolean | undefined }\n\nexport class HTML5BackendImpl implements Backend {\n\tprivate options: OptionsReader\n\n\t// React-Dnd Components\n\tprivate actions: DragDropActions\n\tprivate monitor: DragDropMonitor\n\tprivate registry: HandlerRegistry\n\n\t// Internal State\n\tprivate enterLeaveCounter: EnterLeaveCounter\n\n\tprivate sourcePreviewNodes: Map = new Map()\n\tprivate sourcePreviewNodeOptions: Map = new Map()\n\tprivate sourceNodes: Map = new Map()\n\tprivate sourceNodeOptions: Map = new Map()\n\n\tprivate dragStartSourceIds: string[] | null = null\n\tprivate dropTargetIds: string[] = []\n\tprivate dragEnterTargetIds: string[] = []\n\tprivate currentNativeSource: NativeDragSource | null = null\n\tprivate currentNativeHandle: Identifier | null = null\n\tprivate currentDragSourceNode: Element | null = null\n\tprivate altKeyPressed = false\n\tprivate mouseMoveTimeoutTimer: number | null = null\n\tprivate asyncEndDragFrameId: number | null = null\n\tprivate dragOverTargetIds: string[] | null = null\n\n\tprivate lastClientOffset: XYCoord | null = null\n\tprivate hoverRafId: number | null = null\n\n\tpublic constructor(\n\t\tmanager: DragDropManager,\n\t\tglobalContext?: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.options = new OptionsReader(globalContext, options)\n\t\tthis.actions = manager.getActions()\n\t\tthis.monitor = manager.getMonitor()\n\t\tthis.registry = manager.getRegistry()\n\t\tthis.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument)\n\t}\n\n\t/**\n\t * Generate profiling statistics for the HTML5Backend.\n\t */\n\tpublic profile(): Record {\n\t\treturn {\n\t\t\tsourcePreviewNodes: this.sourcePreviewNodes.size,\n\t\t\tsourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n\t\t\tsourceNodeOptions: this.sourceNodeOptions.size,\n\t\t\tsourceNodes: this.sourceNodes.size,\n\t\t\tdragStartSourceIds: this.dragStartSourceIds?.length || 0,\n\t\t\tdropTargetIds: this.dropTargetIds.length,\n\t\t\tdragEnterTargetIds: this.dragEnterTargetIds.length,\n\t\t\tdragOverTargetIds: this.dragOverTargetIds?.length || 0,\n\t\t}\n\t}\n\n\t// public for test\n\tpublic get window(): Window | undefined {\n\t\treturn this.options.window\n\t}\n\tpublic get document(): Document | undefined {\n\t\treturn this.options.document\n\t}\n\t/**\n\t * Get the root element to use for event subscriptions\n\t */\n\tprivate get rootElement(): Node | undefined {\n\t\treturn this.options.rootElement as Node\n\t}\n\n\tpublic setup(): void {\n\t\tconst root = this.rootElement as RootNode | undefined\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tif (root.__isReactDndBackendSetUp) {\n\t\t\tthrow new Error('Cannot have two HTML5 backends at the same time.')\n\t\t}\n\t\troot.__isReactDndBackendSetUp = true\n\t\tthis.addEventListeners(root)\n\t}\n\n\tpublic teardown(): void {\n\t\tconst root = this.rootElement as RootNode\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\troot.__isReactDndBackendSetUp = false\n\t\tthis.removeEventListeners(this.rootElement as Element)\n\t\tthis.clearCurrentDragSourceNode()\n\t\tif (this.asyncEndDragFrameId) {\n\t\t\tthis.window?.cancelAnimationFrame(this.asyncEndDragFrameId)\n\t\t}\n\t}\n\n\tpublic connectDragPreview(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourcePreviewNodeOptions.set(sourceId, options)\n\t\tthis.sourcePreviewNodes.set(sourceId, node)\n\n\t\treturn (): void => {\n\t\t\tthis.sourcePreviewNodes.delete(sourceId)\n\t\t\tthis.sourcePreviewNodeOptions.delete(sourceId)\n\t\t}\n\t}\n\n\tpublic connectDragSource(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourceNodes.set(sourceId, node)\n\t\tthis.sourceNodeOptions.set(sourceId, options)\n\n\t\tconst handleDragStart = (e: any) => this.handleDragStart(e, sourceId)\n\t\tconst handleSelectStart = (e: any) => this.handleSelectStart(e)\n\n\t\tnode.setAttribute('draggable', 'true')\n\t\tnode.addEventListener('dragstart', handleDragStart)\n\t\tnode.addEventListener('selectstart', handleSelectStart)\n\n\t\treturn (): void => {\n\t\t\tthis.sourceNodes.delete(sourceId)\n\t\t\tthis.sourceNodeOptions.delete(sourceId)\n\n\t\t\tnode.removeEventListener('dragstart', handleDragStart)\n\t\t\tnode.removeEventListener('selectstart', handleSelectStart)\n\t\t\tnode.setAttribute('draggable', 'false')\n\t\t}\n\t}\n\n\tpublic connectDropTarget(targetId: string, node: HTMLElement): Unsubscribe {\n\t\tconst handleDragEnter = (e: DragEvent) => this.handleDragEnter(e, targetId)\n\t\tconst handleDragOver = (e: DragEvent) => this.handleDragOver(e, targetId)\n\t\tconst handleDrop = (e: DragEvent) => this.handleDrop(e, targetId)\n\n\t\tnode.addEventListener('dragenter', handleDragEnter)\n\t\tnode.addEventListener('dragover', handleDragOver)\n\t\tnode.addEventListener('drop', handleDrop)\n\n\t\treturn (): void => {\n\t\t\tnode.removeEventListener('dragenter', handleDragEnter)\n\t\t\tnode.removeEventListener('dragover', handleDragOver)\n\t\t\tnode.removeEventListener('drop', handleDrop)\n\t\t}\n\t}\n\n\tprivate addEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.addEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.addEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStart as EventListener,\n\t\t)\n\t\ttarget.addEventListener('dragstart', this.handleTopDragStartCapture, true)\n\t\ttarget.addEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('dragover', this.handleTopDragOver as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate removeEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.removeEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.removeEventListener('dragstart', this.handleTopDragStart as any)\n\t\ttarget.removeEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStartCapture,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOver as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.removeEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate getCurrentSourceNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourceNodeOptions = this.sourceNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tdropEffect: this.altKeyPressed ? 'copy' : 'move',\n\t\t\t...(sourceNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getCurrentDropEffect() {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\t// It makes more sense to default to 'copy' for native resources\n\t\t\treturn 'copy'\n\t\t}\n\n\t\treturn this.getCurrentSourceNodeOptions().dropEffect\n\t}\n\n\tprivate getCurrentSourcePreviewNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tanchorX: 0.5,\n\t\t\tanchorY: 0.5,\n\t\t\tcaptureDraggingState: false,\n\t\t\t...(sourcePreviewNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getSourceClientOffset = (sourceId: string): XYCoord | null => {\n\t\tconst source = this.sourceNodes.get(sourceId)\n\t\treturn (source && getNodeClientOffset(source as HTMLElement)) || null\n\t}\n\n\tprivate isDraggingNativeItem() {\n\t\tconst itemType = this.monitor.getItemType()\n\t\treturn Object.keys(NativeTypes).some(\n\t\t\t(key: string) => (NativeTypes as any)[key] === itemType,\n\t\t)\n\t}\n\n\tprivate beginDragNativeItem(type: string, dataTransfer?: DataTransfer) {\n\t\tthis.clearCurrentDragSourceNode()\n\n\t\tthis.currentNativeSource = createNativeDragSource(type, dataTransfer)\n\t\tthis.currentNativeHandle = this.registry.addSource(\n\t\t\ttype,\n\t\t\tthis.currentNativeSource,\n\t\t)\n\t\tthis.actions.beginDrag([this.currentNativeHandle])\n\t}\n\n\tprivate endDragNativeItem = (): void => {\n\t\tif (!this.isDraggingNativeItem()) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.actions.endDrag()\n\t\tif (this.currentNativeHandle) {\n\t\t\tthis.registry.removeSource(this.currentNativeHandle)\n\t\t}\n\t\tthis.currentNativeHandle = null\n\t\tthis.currentNativeSource = null\n\t}\n\n\tprivate isNodeInDocument = (node: Node | null | undefined): boolean => {\n\t\t// Check the node either in the main document or in the current context\n\t\treturn Boolean(\n\t\t\tnode &&\n\t\t\t\tthis.document &&\n\t\t\t\tthis.document.body &&\n\t\t\t\tthis.document.body.contains(node),\n\t\t)\n\t}\n\n\tprivate endDragIfSourceWasRemovedFromDOM = (): void => {\n\t\tconst node = this.currentDragSourceNode\n\t\tif (node == null || this.isNodeInDocument(node)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tprivate setCurrentDragSourceNode(node: Element | null) {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.currentDragSourceNode = node\n\n\t\t// A timeout of > 0 is necessary to resolve Firefox issue referenced\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\tconst MOUSE_MOVE_TIMEOUT = 1000\n\n\t\t// Receiving a mouse event in the middle of a dragging operation\n\t\t// means it has ended and the drag source node disappeared from DOM,\n\t\t// so the browser didn't dispatch the dragend event.\n\t\t//\n\t\t// We need to wait before we start listening for mousemove events.\n\t\t// This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n\t\t// immediately in some browsers.\n\t\t//\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\t//\n\t\tthis.mouseMoveTimeoutTimer = setTimeout(() => {\n\t\t\treturn this.rootElement?.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\ttrue,\n\t\t\t)\n\t\t}, MOUSE_MOVE_TIMEOUT) as any as number\n\t}\n\n\tprivate clearCurrentDragSourceNode() {\n\t\tif (this.currentDragSourceNode) {\n\t\t\tthis.currentDragSourceNode = null\n\n\t\t\tif (this.rootElement) {\n\t\t\t\tthis.window?.clearTimeout(this.mouseMoveTimeoutTimer || undefined)\n\t\t\t\tthis.rootElement.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\t\ttrue,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.mouseMoveTimeoutTimer = null\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate scheduleHover = (dragOverTargetIds: string[] | null) => {\n\t\tif (\n\t\t\tthis.hoverRafId === null &&\n\t\t\ttypeof requestAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tthis.hoverRafId = requestAnimationFrame(() => {\n\t\t\t\tif (this.monitor.isDragging()) {\n\t\t\t\t\tthis.actions.hover(dragOverTargetIds || [], {\n\t\t\t\t\t\tclientOffset: this.lastClientOffset,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.hoverRafId = null\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate cancelHover = () => {\n\t\tif (\n\t\t\tthis.hoverRafId !== null &&\n\t\t\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tcancelAnimationFrame(this.hoverRafId)\n\t\t\tthis.hoverRafId = null\n\t\t}\n\t}\n\n\tpublic handleTopDragStartCapture = (): void => {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.dragStartSourceIds = []\n\t}\n\n\tpublic handleDragStart(e: DragEvent, sourceId: string): void {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.dragStartSourceIds) {\n\t\t\tthis.dragStartSourceIds = []\n\t\t}\n\t\tthis.dragStartSourceIds.unshift(sourceId)\n\t}\n\n\tpublic handleTopDragStart = (e: DragEvent): void => {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dragStartSourceIds } = this\n\t\tthis.dragStartSourceIds = null\n\n\t\tconst clientOffset = getEventClientOffset(e)\n\n\t\t// Avoid crashing if we missed a drop event or our previous drag died\n\t\tif (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t\tthis.cancelHover()\n\t\t}\n\n\t\t// Don't publish the source just yet (see why below)\n\t\tthis.actions.beginDrag(dragStartSourceIds || [], {\n\t\t\tpublishSource: false,\n\t\t\tgetSourceClientOffset: this.getSourceClientOffset,\n\t\t\tclientOffset,\n\t\t})\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (this.monitor.isDragging()) {\n\t\t\tif (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n\t\t\t\t// Use custom drag image if user specifies it.\n\t\t\t\t// If child drag source refuses drag but parent agrees,\n\t\t\t\t// use parent's node as drag image. Neither works in IE though.\n\t\t\t\tconst sourceId: string = this.monitor.getSourceId() as string\n\t\t\t\tconst sourceNode = this.sourceNodes.get(sourceId)\n\t\t\t\tconst dragPreview = this.sourcePreviewNodes.get(sourceId) || sourceNode\n\n\t\t\t\tif (dragPreview) {\n\t\t\t\t\tconst { anchorX, anchorY, offsetX, offsetY } =\n\t\t\t\t\t\tthis.getCurrentSourcePreviewNodeOptions()\n\t\t\t\t\tconst anchorPoint = { anchorX, anchorY }\n\t\t\t\t\tconst offsetPoint = { offsetX, offsetY }\n\t\t\t\t\tconst dragPreviewOffset = getDragPreviewOffset(\n\t\t\t\t\t\tsourceNode as HTMLElement,\n\t\t\t\t\t\tdragPreview as HTMLElement,\n\t\t\t\t\t\tclientOffset,\n\t\t\t\t\t\tanchorPoint,\n\t\t\t\t\t\toffsetPoint,\n\t\t\t\t\t)\n\n\t\t\t\t\tdataTransfer.setDragImage(\n\t\t\t\t\t\tdragPreview,\n\t\t\t\t\t\tdragPreviewOffset.x,\n\t\t\t\t\t\tdragPreviewOffset.y,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Firefox won't drag without setting data\n\t\t\t\tdataTransfer?.setData('application/json', {} as any)\n\t\t\t} catch (err) {\n\t\t\t\t// IE doesn't support MIME types in setData\n\t\t\t}\n\n\t\t\t// Store drag source node so we can check whether\n\t\t\t// it is removed from DOM and trigger endDrag manually.\n\t\t\tthis.setCurrentDragSourceNode(e.target as Element)\n\n\t\t\t// Now we are ready to publish the drag source.. or are we not?\n\t\t\tconst { captureDraggingState } = this.getCurrentSourcePreviewNodeOptions()\n\t\t\tif (!captureDraggingState) {\n\t\t\t\t// Usually we want to publish it in the next tick so that browser\n\t\t\t\t// is able to screenshot the current (not yet dragging) state.\n\t\t\t\t//\n\t\t\t\t// It also neatly avoids a situation where render() returns null\n\t\t\t\t// in the same tick for the source element, and browser freaks out.\n\t\t\t\tsetTimeout(() => this.actions.publishDragSource(), 0)\n\t\t\t} else {\n\t\t\t\t// In some cases the user may want to override this behavior, e.g.\n\t\t\t\t// to work around IE not supporting custom drag previews.\n\t\t\t\t//\n\t\t\t\t// When using a custom drag layer, the only way to prevent\n\t\t\t\t// the default drag preview from drawing in IE is to screenshot\n\t\t\t\t// the dragging state in which the node itself has zero opacity\n\t\t\t\t// and height. In this case, though, returning null from render()\n\t\t\t\t// will abruptly end the dragging, which is not obvious.\n\t\t\t\t//\n\t\t\t\t// This is the reason such behavior is strictly opt-in.\n\t\t\t\tthis.actions.publishDragSource()\n\t\t\t}\n\t\t} else if (nativeType) {\n\t\t\t// A native item (such as URL) dragged from inside the document\n\t\t\tthis.beginDragNativeItem(nativeType)\n\t\t} else if (\n\t\t\tdataTransfer &&\n\t\t\t!dataTransfer.types &&\n\t\t\t((e.target && !(e.target as Element).hasAttribute) ||\n\t\t\t\t!(e.target as Element).hasAttribute('draggable'))\n\t\t) {\n\t\t\t// Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n\t\t\t// Just let it drag. It's a native type (URL or text) and will be picked up in\n\t\t\t// dragenter handler.\n\t\t\treturn\n\t\t} else {\n\t\t\t// If by this time no drag source reacted, tell browser not to drag.\n\t\t\te.preventDefault()\n\t\t}\n\t}\n\n\tpublic handleTopDragEndCapture = (): void => {\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\t// Firefox can dispatch this event in an infinite loop\n\t\t\t// if dragend handler does something like showing an alert.\n\t\t\t// Only proceed if we have not handled it already.\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDragEnterCapture = (e: DragEvent): void => {\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\n\t\tconst isFirstEnter = this.enterLeaveCounter.enter(e.target)\n\t\tif (!isFirstEnter || this.monitor.isDragging()) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (nativeType) {\n\t\t\t// A native item (such as file or URL) dragged from outside the document\n\t\t\tthis.beginDragNativeItem(nativeType, dataTransfer as DataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragEnter(_e: DragEvent, targetId: string): void {\n\t\tthis.dragEnterTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragEnter = (e: DragEvent): void => {\n\t\tconst { dragEnterTargetIds } = this\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\n\t\t// If the target changes position as the result of `dragenter`, `dragover` might still\n\t\t// get dispatched despite target being no longer there. The easy solution is to check\n\t\t// whether there actually is a target before firing `hover`.\n\t\tif (dragEnterTargetIds.length > 0) {\n\t\t\tthis.actions.hover(dragEnterTargetIds, {\n\t\t\t\tclientOffset: getEventClientOffset(e),\n\t\t\t})\n\t\t}\n\n\t\tconst canDrop = dragEnterTargetIds.some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// IE requires this to fire dragover events\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragOverCapture = (e: DragEvent): void => {\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragOver(_e: DragEvent, targetId: string): void {\n\t\tif (this.dragOverTargetIds === null) {\n\t\t\tthis.dragOverTargetIds = []\n\t\t}\n\t\tthis.dragOverTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragOver = (e: DragEvent): void => {\n\t\tconst { dragOverTargetIds } = this\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\t// Prevent default \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\t\tthis.lastClientOffset = getEventClientOffset(e)\n\n\t\tthis.scheduleHover(dragOverTargetIds)\n\n\t\tconst canDrop = (dragOverTargetIds || []).some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// Show user-specified drop effect.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t} else if (this.isDraggingNativeItem()) {\n\t\t\t// Don't show a nice cursor but still prevent default\n\t\t\t// \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t} else {\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragLeaveCapture = (e: DragEvent): void => {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tconst isLastLeave = this.enterLeaveCounter.leave(e.target)\n\t\tif (!isLastLeave) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tsetTimeout(() => this.endDragNativeItem(), 0)\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDropCapture = (e: DragEvent): void => {\n\t\tthis.dropTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t} else if (matchNativeItemType(e.dataTransfer)) {\n\t\t\t// Dragging some elements, like and may still behave like a native drag event,\n\t\t\t// even if the current drag event matches a user-defined type.\n\t\t\t// Stop the default behavior when we're not expecting a native item to be dropped.\n\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tthis.enterLeaveCounter.reset()\n\t}\n\n\tpublic handleDrop(_e: DragEvent, targetId: string): void {\n\t\tthis.dropTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDrop = (e: DragEvent): void => {\n\t\tconst { dropTargetIds } = this\n\t\tthis.dropTargetIds = []\n\n\t\tthis.actions.hover(dropTargetIds, {\n\t\t\tclientOffset: getEventClientOffset(e),\n\t\t})\n\t\tthis.actions.drop({ dropEffect: this.getCurrentDropEffect() })\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.endDragNativeItem()\n\t\t} else if (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleSelectStart = (e: DragEvent): void => {\n\t\tconst target = e.target as HTMLElement & { dragDrop: () => void }\n\n\t\t// Only IE requires us to explicitly say\n\t\t// we want drag drop operation to start\n\t\tif (typeof target.dragDrop !== 'function') {\n\t\t\treturn\n\t\t}\n\n\t\t// Inputs and textareas should be selectable\n\t\tif (\n\t\t\ttarget.tagName === 'INPUT' ||\n\t\t\ttarget.tagName === 'SELECT' ||\n\t\t\ttarget.tagName === 'TEXTAREA' ||\n\t\t\ttarget.isContentEditable\n\t\t) {\n\t\t\treturn\n\t\t}\n\n\t\t// For other targets, ask IE\n\t\t// to enable drag and drop\n\t\te.preventDefault()\n\t\ttarget.dragDrop()\n\t}\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\n\nimport { HTML5BackendImpl } from './HTML5BackendImpl.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\nexport { getEmptyImage } from './getEmptyImage.js'\nexport * as NativeTypes from './NativeTypes.js'\nexport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport const HTML5Backend: BackendFactory = function createBackend(\n\tmanager: DragDropManager,\n\tcontext?: HTML5BackendContext,\n\toptions?: HTML5BackendOptions,\n): HTML5BackendImpl {\n\treturn new HTML5BackendImpl(manager, context, options)\n}\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport function invariant(condition: any, format: string, ...args: any[]) {\n\tif (isProduction()) {\n\t\tif (format === undefined) {\n\t\t\tthrow new Error('invariant requires an error message argument')\n\t\t}\n\t}\n\n\tif (!condition) {\n\t\tlet error\n\t\tif (format === undefined) {\n\t\t\terror = new Error(\n\t\t\t\t'Minified exception occurred; use the non-minified dev environment ' +\n\t\t\t\t\t'for the full error message and additional helpful warnings.',\n\t\t\t)\n\t\t} else {\n\t\t\tlet argIndex = 0\n\t\t\terror = new Error(\n\t\t\t\tformat.replace(/%s/g, function () {\n\t\t\t\t\treturn args[argIndex++]\n\t\t\t\t}),\n\t\t\t)\n\t\t\terror.name = 'Invariant Violation'\n\t\t}\n\n\t\t;(error as any).framesToPop = 1 // we don't care about invariant's own frame\n\t\tthrow error\n\t}\n}\n\nfunction isProduction() {\n\treturn (\n\t\ttypeof process !== 'undefined' && process.env['NODE_ENV'] === 'production'\n\t)\n}\n","// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get(obj: any, path: string, defaultValue: T): T {\n\treturn path\n\t\t.split('.')\n\t\t.reduce((a, c) => (a && a[c] ? a[c] : defaultValue || null), obj) as T\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without(items: T[], item: T): T[] {\n\treturn items.filter((i) => i !== item)\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isString(input: any): boolean {\n\treturn typeof input === 'string'\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isObject(input: any): boolean {\n\treturn typeof input === 'object'\n}\n\n/**\n * replacement for _.xor\n * @param itemsA\n * @param itemsB\n */\nexport function xor(itemsA: T[], itemsB: T[]): T[] {\n\tconst map = new Map()\n\tconst insertItem = (item: T) => {\n\t\tmap.set(item, map.has(item) ? (map.get(item) as number) + 1 : 1)\n\t}\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tmap.forEach((count, key) => {\n\t\tif (count === 1) {\n\t\t\tresult.push(key)\n\t\t}\n\t})\n\treturn result\n}\n\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\nexport function intersection(itemsA: T[], itemsB: T[]): T[] {\n\treturn itemsA.filter((t) => itemsB.indexOf(t) > -1)\n}\n","export const INIT_COORDS = 'dnd-core/INIT_COORDS'\nexport const BEGIN_DRAG = 'dnd-core/BEGIN_DRAG'\nexport const PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE'\nexport const HOVER = 'dnd-core/HOVER'\nexport const DROP = 'dnd-core/DROP'\nexport const END_DRAG = 'dnd-core/END_DRAG'\n","import type { AnyAction } from 'redux'\n\nimport type { XYCoord } from '../../../interfaces.js'\nimport { INIT_COORDS } from '../types.js'\n\nexport function setClientOffset(\n\tclientOffset: XYCoord | null | undefined,\n\tsourceClientOffset?: XYCoord | null | undefined,\n): AnyAction {\n\treturn {\n\t\ttype: INIT_COORDS,\n\t\tpayload: {\n\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\tclientOffset: clientOffset || null,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tBeginDragOptions,\n\tBeginDragPayload,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tXYCoord,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { setClientOffset } from './local/setClientOffset.js'\nimport { BEGIN_DRAG, INIT_COORDS } from './types.js'\n\nconst ResetCoordinatesAction = {\n\ttype: INIT_COORDS,\n\tpayload: {\n\t\tclientOffset: null,\n\t\tsourceClientOffset: null,\n\t},\n}\n\nexport function createBeginDrag(manager: DragDropManager) {\n\treturn function beginDrag(\n\t\tsourceIds: Identifier[] = [],\n\t\toptions: BeginDragOptions = {\n\t\t\tpublishSource: true,\n\t\t},\n\t): Action | undefined {\n\t\tconst {\n\t\t\tpublishSource = true,\n\t\t\tclientOffset,\n\t\t\tgetSourceClientOffset,\n\t\t}: BeginDragOptions = options\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\n\t\t// Initialize the coordinates using the client offset\n\t\tmanager.dispatch(setClientOffset(clientOffset))\n\n\t\tverifyInvariants(sourceIds, monitor, registry)\n\n\t\t// Get the draggable source\n\t\tconst sourceId = getDraggableSource(sourceIds, monitor)\n\t\tif (sourceId == null) {\n\t\t\tmanager.dispatch(ResetCoordinatesAction)\n\t\t\treturn\n\t\t}\n\n\t\t// Get the source client offset\n\t\tlet sourceClientOffset: XYCoord | null = null\n\t\tif (clientOffset) {\n\t\t\tif (!getSourceClientOffset) {\n\t\t\t\tthrow new Error('getSourceClientOffset must be defined')\n\t\t\t}\n\t\t\tverifyGetSourceClientOffsetIsFunction(getSourceClientOffset)\n\t\t\tsourceClientOffset = getSourceClientOffset(sourceId)\n\t\t}\n\n\t\t// Initialize the full coordinates\n\t\tmanager.dispatch(setClientOffset(clientOffset, sourceClientOffset))\n\n\t\tconst source = registry.getSource(sourceId)\n\t\tconst item = source.beginDrag(monitor, sourceId)\n\t\t// If source.beginDrag returns null, this is an indicator to cancel the drag\n\t\tif (item == null) {\n\t\t\treturn undefined\n\t\t}\n\t\tverifyItemIsObject(item)\n\t\tregistry.pinSource(sourceId)\n\n\t\tconst itemType = registry.getSourceType(sourceId)\n\t\treturn {\n\t\t\ttype: BEGIN_DRAG,\n\t\t\tpayload: {\n\t\t\t\titemType,\n\t\t\t\titem,\n\t\t\t\tsourceId,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\t\tisSourcePublic: !!publishSource,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyInvariants(\n\tsourceIds: Identifier[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.')\n\tsourceIds.forEach(function (sourceId) {\n\t\tinvariant(\n\t\t\tregistry.getSource(sourceId),\n\t\t\t'Expected sourceIds to be registered.',\n\t\t)\n\t})\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset: any) {\n\tinvariant(\n\t\ttypeof getSourceClientOffset === 'function',\n\t\t'When clientOffset is provided, getSourceClientOffset must be a function.',\n\t)\n}\n\nfunction verifyItemIsObject(item: any) {\n\tinvariant(isObject(item), 'Item must be an object.')\n}\n\nfunction getDraggableSource(sourceIds: Identifier[], monitor: DragDropMonitor) {\n\tlet sourceId = null\n\tfor (let i = sourceIds.length - 1; i >= 0; i--) {\n\t\tif (monitor.canDragSource(sourceIds[i])) {\n\t\t\tsourceId = sourceIds[i]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn sourceId\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tDropPayload,\n\tHandlerRegistry,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { DROP } from './types.js'\n\nexport function createDrop(manager: DragDropManager) {\n\treturn function drop(options = {}): void {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyInvariants(monitor)\n\t\tconst targetIds = getDroppableTargets(monitor)\n\n\t\t// Multiple actions are dispatched here, which is why this doesn't return an action\n\t\ttargetIds.forEach((targetId, index) => {\n\t\t\tconst dropResult = determineDropResult(targetId, index, registry, monitor)\n\t\t\tconst action: Action = {\n\t\t\t\ttype: DROP,\n\t\t\t\tpayload: {\n\t\t\t\t\tdropResult: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\t...dropResult,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t\tmanager.dispatch(action)\n\t\t})\n\t}\n}\n\nfunction verifyInvariants(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call drop while not dragging.')\n\tinvariant(\n\t\t!monitor.didDrop(),\n\t\t'Cannot call drop twice during one drag operation.',\n\t)\n}\n\nfunction determineDropResult(\n\ttargetId: Identifier,\n\tindex: number,\n\tregistry: HandlerRegistry,\n\tmonitor: DragDropMonitor,\n) {\n\tconst target = registry.getTarget(targetId)\n\tlet dropResult = target ? target.drop(monitor, targetId) : undefined\n\tverifyDropResultType(dropResult)\n\tif (typeof dropResult === 'undefined') {\n\t\tdropResult = index === 0 ? {} : monitor.getDropResult()\n\t}\n\treturn dropResult\n}\n\nfunction verifyDropResultType(dropResult: any) {\n\tinvariant(\n\t\ttypeof dropResult === 'undefined' || isObject(dropResult),\n\t\t'Drop result must either be an object or undefined.',\n\t)\n}\n\nfunction getDroppableTargets(monitor: DragDropMonitor) {\n\tconst targetIds = monitor\n\t\t.getTargetIds()\n\t\t.filter(monitor.canDropOnTarget, monitor)\n\ttargetIds.reverse()\n\treturn targetIds\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tSentinelAction,\n} from '../../interfaces.js'\nimport { END_DRAG } from './types.js'\n\nexport function createEndDrag(manager: DragDropManager) {\n\treturn function endDrag(): SentinelAction {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyIsDragging(monitor)\n\n\t\tconst sourceId = monitor.getSourceId()\n\t\tif (sourceId != null) {\n\t\t\tconst source = registry.getSource(sourceId, true)\n\t\t\tsource.endDrag(monitor, sourceId)\n\t\t\tregistry.unpinSource()\n\t\t}\n\t\treturn { type: END_DRAG }\n\t}\n}\n\nfunction verifyIsDragging(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.')\n}\n","import type { Identifier } from '../interfaces.js'\n\nexport function matchesType(\n\ttargetType: Identifier | Identifier[] | null,\n\tdraggedItemType: Identifier | null,\n): boolean {\n\tif (draggedItemType === null) {\n\t\treturn targetType === null\n\t}\n\treturn Array.isArray(targetType)\n\t\t? (targetType as Identifier[]).some((t) => t === draggedItemType)\n\t\t: targetType === draggedItemType\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tHoverOptions,\n\tHoverPayload,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { matchesType } from '../../utils/matchesType.js'\nimport { HOVER } from './types.js'\n\nexport function createHover(manager: DragDropManager) {\n\treturn function hover(\n\t\ttargetIdsArg: string[],\n\t\t{ clientOffset }: HoverOptions = {},\n\t): Action {\n\t\tverifyTargetIdsIsArray(targetIdsArg)\n\t\tconst targetIds = targetIdsArg.slice(0)\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tconst draggedItemType = monitor.getItemType()\n\t\tremoveNonMatchingTargetIds(targetIds, registry, draggedItemType)\n\t\tcheckInvariants(targetIds, monitor, registry)\n\t\thoverAllTargets(targetIds, monitor, registry)\n\n\t\treturn {\n\t\t\ttype: HOVER,\n\t\t\tpayload: {\n\t\t\t\ttargetIds,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg: string[]) {\n\tinvariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.')\n}\n\nfunction checkInvariants(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(monitor.isDragging(), 'Cannot call hover while not dragging.')\n\tinvariant(!monitor.didDrop(), 'Cannot call hover after drop.')\n\tfor (let i = 0; i < targetIds.length; i++) {\n\t\tconst targetId = targetIds[i] as string\n\t\tinvariant(\n\t\t\ttargetIds.lastIndexOf(targetId) === i,\n\t\t\t'Expected targetIds to be unique in the passed array.',\n\t\t)\n\n\t\tconst target = registry.getTarget(targetId)\n\t\tinvariant(target, 'Expected targetIds to be registered.')\n\t}\n}\n\nfunction removeNonMatchingTargetIds(\n\ttargetIds: string[],\n\tregistry: HandlerRegistry,\n\tdraggedItemType: Identifier | null,\n) {\n\t// Remove those targetIds that don't match the targetType. This\n\t// fixes shallow isOver which would only be non-shallow because of\n\t// non-matching targets.\n\tfor (let i = targetIds.length - 1; i >= 0; i--) {\n\t\tconst targetId = targetIds[i] as string\n\t\tconst targetType = registry.getTargetType(targetId)\n\t\tif (!matchesType(targetType, draggedItemType)) {\n\t\t\ttargetIds.splice(i, 1)\n\t\t}\n\t}\n}\n\nfunction hoverAllTargets(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\t// Finally call hover on all matching targets.\n\ttargetIds.forEach(function (targetId) {\n\t\tconst target = registry.getTarget(targetId)\n\t\ttarget.hover(monitor, targetId)\n\t})\n}\n","import type { DragDropManager, SentinelAction } from '../../interfaces.js'\nimport { PUBLISH_DRAG_SOURCE } from './types.js'\n\nexport function createPublishDragSource(manager: DragDropManager) {\n\treturn function publishDragSource(): SentinelAction | undefined {\n\t\tconst monitor = manager.getMonitor()\n\t\tif (monitor.isDragging()) {\n\t\t\treturn { type: PUBLISH_DRAG_SOURCE }\n\t\t}\n\t\treturn\n\t}\n}\n","import type { Action, Store } from 'redux'\n\nimport { createDragDropActions } from '../actions/dragDrop/index.js'\nimport type {\n\tActionCreator,\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport type { DragDropMonitorImpl } from './DragDropMonitorImpl.js'\n\nexport class DragDropManagerImpl implements DragDropManager {\n\tprivate store: Store\n\tprivate monitor: DragDropMonitor\n\tprivate backend: Backend | undefined\n\tprivate isSetUp = false\n\n\tpublic constructor(store: Store, monitor: DragDropMonitor) {\n\t\tthis.store = store\n\t\tthis.monitor = monitor\n\t\tstore.subscribe(this.handleRefCountChange)\n\t}\n\n\tpublic receiveBackend(backend: Backend): void {\n\t\tthis.backend = backend\n\t}\n\n\tpublic getMonitor(): DragDropMonitor {\n\t\treturn this.monitor\n\t}\n\n\tpublic getBackend(): Backend {\n\t\treturn this.backend as Backend\n\t}\n\n\tpublic getRegistry(): HandlerRegistry {\n\t\treturn (this.monitor as DragDropMonitorImpl).registry\n\t}\n\n\tpublic getActions(): DragDropActions {\n\t\t/* eslint-disable-next-line @typescript-eslint/no-this-alias */\n\t\tconst manager = this\n\t\tconst { dispatch } = this.store\n\n\t\tfunction bindActionCreator(actionCreator: ActionCreator) {\n\t\t\treturn (...args: any[]) => {\n\t\t\t\tconst action = actionCreator.apply(manager, args as any)\n\t\t\t\tif (typeof action !== 'undefined') {\n\t\t\t\t\tdispatch(action)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst actions = createDragDropActions(this)\n\n\t\treturn Object.keys(actions).reduce(\n\t\t\t(boundActions: DragDropActions, key: string) => {\n\t\t\t\tconst action: ActionCreator = (actions as any)[\n\t\t\t\t\tkey\n\t\t\t\t] as ActionCreator\n\t\t\t\t;(boundActions as any)[key] = bindActionCreator(action)\n\t\t\t\treturn boundActions\n\t\t\t},\n\t\t\t{} as DragDropActions,\n\t\t)\n\t}\n\n\tpublic dispatch(action: Action): void {\n\t\tthis.store.dispatch(action)\n\t}\n\n\tprivate handleRefCountChange = (): void => {\n\t\tconst shouldSetUp = this.store.getState().refCount > 0\n\t\tif (this.backend) {\n\t\t\tif (shouldSetUp && !this.isSetUp) {\n\t\t\t\tthis.backend.setup()\n\t\t\t\tthis.isSetUp = true\n\t\t\t} else if (!shouldSetUp && this.isSetUp) {\n\t\t\t\tthis.backend.teardown()\n\t\t\t\tthis.isSetUp = false\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { DragDropActions, DragDropManager } from '../../interfaces.js'\nimport { createBeginDrag } from './beginDrag.js'\nimport { createDrop } from './drop.js'\nimport { createEndDrag } from './endDrag.js'\nimport { createHover } from './hover.js'\nimport { createPublishDragSource } from './publishDragSource.js'\n\nexport * from './types.js'\n\nexport function createDragDropActions(\n\tmanager: DragDropManager,\n): DragDropActions {\n\treturn {\n\t\tbeginDrag: createBeginDrag(manager),\n\t\tpublishDragSource: createPublishDragSource(manager),\n\t\thover: createHover(manager),\n\t\tdrop: createDrop(manager),\n\t\tendDrag: createEndDrag(manager),\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\nimport type { State } from '../reducers/dragOffset.js'\n\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x + b.x,\n\t\ty: a.y + b.y,\n\t}\n}\n\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function subtract(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x - b.x,\n\t\ty: a.y - b.y,\n\t}\n}\n\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nexport function getSourceClientOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset, initialSourceClientOffset } = state\n\tif (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(\n\t\tadd(clientOffset, initialSourceClientOffset),\n\t\tinitialClientOffset,\n\t)\n}\n\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nexport function getDifferenceFromInitialOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset } = state\n\tif (!clientOffset || !initialClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(clientOffset, initialClientOffset)\n}\n","import { intersection } from './js_utils.js'\n\nexport const NONE: string[] = []\nexport const ALL: string[] = []\n// Add these flags for debug\n;(NONE as any).__IS_NONE__ = true\n;(ALL as any).__IS_ALL__ = true\n\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nexport function areDirty(\n\tdirtyIds: string[],\n\thandlerIds: string[] | undefined,\n): boolean {\n\tif (dirtyIds === NONE) {\n\t\treturn false\n\t}\n\n\tif (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n\t\treturn true\n\t}\n\n\tconst commonIds = intersection(handlerIds, dirtyIds)\n\treturn commonIds.length > 0\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport type {\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport {\n\tgetDifferenceFromInitialOffset,\n\tgetSourceClientOffset,\n} from '../utils/coords.js'\nimport { areDirty } from '../utils/dirtiness.js'\nimport { matchesType } from '../utils/matchesType.js'\n\nexport class DragDropMonitorImpl implements DragDropMonitor {\n\tprivate store: Store\n\tpublic readonly registry: HandlerRegistry\n\n\tpublic constructor(store: Store, registry: HandlerRegistry) {\n\t\tthis.store = store\n\t\tthis.registry = registry\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions: { handlerIds?: string[] } = {},\n\t): Unsubscribe {\n\t\tconst { handlerIds } = options\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\t\tinvariant(\n\t\t\ttypeof handlerIds === 'undefined' || Array.isArray(handlerIds),\n\t\t\t'handlerIds, when specified, must be an array of strings.',\n\t\t)\n\n\t\tlet prevStateId = this.store.getState().stateId\n\t\tconst handleChange = () => {\n\t\t\tconst state = this.store.getState()\n\t\t\tconst currentStateId = state.stateId\n\t\t\ttry {\n\t\t\t\tconst canSkipListener =\n\t\t\t\t\tcurrentStateId === prevStateId ||\n\t\t\t\t\t(currentStateId === prevStateId + 1 &&\n\t\t\t\t\t\t!areDirty(state.dirtyHandlerIds, handlerIds))\n\n\t\t\t\tif (!canSkipListener) {\n\t\t\t\t\tlistener()\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tprevStateId = currentStateId\n\t\t\t}\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\n\t\tlet previousState = this.store.getState().dragOffset\n\t\tconst handleChange = () => {\n\t\t\tconst nextState = this.store.getState().dragOffset\n\t\t\tif (nextState === previousState) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tpreviousState = nextState\n\t\t\tlistener()\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic canDragSource(sourceId: string | undefined): boolean {\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.canDrag(this, sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\t\tconst target = this.registry.getTarget(targetId)\n\t\tinvariant(target, `Expected to find a valid target. targetId=${targetId}`)\n\n\t\tif (!this.isDragging() || this.didDrop()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\treturn (\n\t\t\tmatchesType(targetType, draggedItemType) && target.canDrop(this, targetId)\n\t\t)\n\t}\n\n\tpublic isDragging(): boolean {\n\t\treturn Boolean(this.getItemType())\n\t}\n\n\tpublic isDraggingSource(sourceId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId, true)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (!this.isDragging() || !this.isSourcePublic()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst sourceType = this.registry.getSourceType(sourceId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (sourceType !== draggedItemType) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.isDragging(this, sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: string | undefined,\n\t\toptions = { shallow: false },\n\t): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst { shallow } = options\n\t\tif (!this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (draggedItemType && !matchesType(targetType, draggedItemType)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetIds = this.getTargetIds()\n\t\tif (!targetIds.length) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst index = targetIds.indexOf(targetId)\n\t\tif (shallow) {\n\t\t\treturn index === targetIds.length - 1\n\t\t} else {\n\t\t\treturn index > -1\n\t\t}\n\t}\n\n\tpublic getItemType(): Identifier {\n\t\treturn this.store.getState().dragOperation.itemType as Identifier\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.store.getState().dragOperation.item\n\t}\n\n\tpublic getSourceId(): string | null {\n\t\treturn this.store.getState().dragOperation.sourceId\n\t}\n\n\tpublic getTargetIds(): string[] {\n\t\treturn this.store.getState().dragOperation.targetIds\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.store.getState().dragOperation.dropResult\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.store.getState().dragOperation.didDrop\n\t}\n\n\tpublic isSourcePublic(): boolean {\n\t\treturn Boolean(this.store.getState().dragOperation.isSourcePublic)\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialClientOffset\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialSourceClientOffset\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.clientOffset\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn getSourceClientOffset(this.store.getState().dragOffset)\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn getDifferenceFromInitialOffset(this.store.getState().dragOffset)\n\t}\n}\n","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t // reliably everywhere they are implemented.\n\t\t // They are implemented in all modern browsers.\n\t\t //\n\t\t // - Android 4-4.3\n\t\t // - Chrome 26-34\n\t\t // - Firefox 14-29\n\t\t // - Internet Explorer 11\n\t\t // - iPad Safari 6-7.1\n\t\t // - iPhone Safari 7-7.1\n\t\t // - Safari 6-7\n\t\t makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t // 11-12, and in web workers in many engines.\n\t\t // Although message channels yield to any queued rendering and IO tasks, they\n\t\t // would be better than imposing the 4ms delay of timers.\n\t\t // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t // not have MutationObservers.\n\t\t // Although setImmediate yields to the browser's renderer, it would be\n\t\t // preferrable to falling back to setTimeout since it does not have\n\t\t // the minimum 4ms penalty.\n\t\t // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t // Desktop to a lesser extent) that renders both setImmediate and\n\t\t // MessageChannel useless for the purposes of ASAP.\n\t\t // https://github.com/kriskowal/q/issues/396\n\n\t\t // Timers are implemented universally.\n\t\t // We fall back to timers in workers in most engines, and in foreground\n\t\t // contexts in the following browsers.\n\t\t // However, note that even this simple case requires nuances to operate in a\n\t\t // broad spectrum of browsers.\n\t\t //\n\t\t // - Firefox 3-13\n\t\t // - Internet Explorer 6-9\n\t\t // - iPad Safari 4.3\n\t\t // - Lynx 2.8.7\n\t\t makeRequestCallFromTimer\n","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\nimport type { Task } from './types.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","// We wrap tasks with recyclable task objects. A task object implements\n\nimport type { Task, TaskFn } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","import { RawTask } from './RawTask.js'\nimport type { Task } from './types.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","import type { Action, SourceIdPayload, TargetIdPayload } from '../interfaces.js'\n\nexport const ADD_SOURCE = 'dnd-core/ADD_SOURCE'\nexport const ADD_TARGET = 'dnd-core/ADD_TARGET'\nexport const REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE'\nexport const REMOVE_TARGET = 'dnd-core/REMOVE_TARGET'\n\nexport function addSource(sourceId: string): Action {\n\treturn {\n\t\ttype: ADD_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function addTarget(targetId: string): Action {\n\treturn {\n\t\ttype: ADD_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n\nexport function removeSource(sourceId: string): Action {\n\treturn {\n\t\ttype: REMOVE_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function removeTarget(targetId: string): Action {\n\treturn {\n\t\ttype: REMOVE_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n","export type Identifier = string | symbol\nexport type SourceType = Identifier\nexport type TargetType = Identifier | Identifier[]\nexport type Unsubscribe = () => void\nexport type Listener = () => void\n\nexport interface XYCoord {\n\tx: number\n\ty: number\n}\n\nexport enum HandlerRole {\n\tSOURCE = 'SOURCE',\n\tTARGET = 'TARGET',\n}\n\nexport interface Backend {\n\tsetup(): void\n\tteardown(): void\n\tconnectDragSource(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDragPreview(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDropTarget(targetId: any, node?: any, options?: any): Unsubscribe\n\tprofile(): Record\n}\n\nexport interface DragDropMonitor {\n\tsubscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: {\n\t\t\thandlerIds?: Identifier[]\n\t\t},\n\t): Unsubscribe\n\tsubscribeToOffsetChange(listener: Listener): Unsubscribe\n\tcanDragSource(sourceId: Identifier | undefined): boolean\n\tcanDropOnTarget(targetId: Identifier | undefined): boolean\n\n\t/**\n\t * Returns true if a drag operation is in progress, and either the owner initiated the drag, or its isDragging()\n\t * is defined and returns true.\n\t */\n\tisDragging(): boolean\n\tisDraggingSource(sourceId: Identifier | undefined): boolean\n\tisOverTarget(\n\t\ttargetId: Identifier | undefined,\n\t\toptions?: {\n\t\t\tshallow?: boolean\n\t\t},\n\t): boolean\n\n\t/**\n\t * Returns a string or a symbol identifying the type of the current dragged item. Returns null if no item is being dragged.\n\t */\n\tgetItemType(): Identifier | null\n\n\t/**\n\t * Returns a plain object representing the currently dragged item. Every drag source must specify it by returning an object\n\t * from its beginDrag() method. Returns null if no item is being dragged.\n\t */\n\tgetItem(): any\n\tgetSourceId(): Identifier | null\n\tgetTargetIds(): Identifier[]\n\t/**\n\t * Returns a plain object representing the last recorded drop result. The drop targets may optionally specify it by returning an\n\t * object from their drop() methods. When a chain of drop() is dispatched for the nested targets, bottom up, any parent that\n\t * explicitly returns its own result from drop() overrides the child drop result previously set by the child. Returns null if\n\t * called outside endDrag().\n\t */\n\tgetDropResult(): any\n\t/**\n\t * Returns true if some drop target has handled the drop event, false otherwise. Even if a target did not return a drop result,\n\t * didDrop() returns true. Use it inside endDrag() to test whether any drop target has handled the drop. Returns false if called\n\t * outside endDrag().\n\t */\n\tdidDrop(): boolean\n\tisSourcePublic(): boolean | null\n\t/**\n\t * Returns the { x, y } client offset of the pointer at the time when the current drag operation has started.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetInitialClientOffset(): XYCoord | null\n\t/**\n\t * Returns the { x, y } client offset of the drag source component's root DOM node at the time when the current drag\n\t * operation has started. Returns null if no item is being dragged.\n\t */\n\tgetInitialSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the last recorded { x, y } client offset of the pointer while a drag operation is in progress.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the projected { x, y } client offset of the drag source component's root DOM node, based on its position at the time\n\t * when the current drag operation has started, and the movement difference. Returns null if no item is being dragged.\n\t */\n\tgetSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the { x, y } difference between the last recorded client offset of the pointer and the client offset when the current\n\t * drag operation has started. Returns null if no item is being dragged.\n\t */\n\tgetDifferenceFromInitialOffset(): XYCoord | null\n}\n\nexport interface HandlerRegistry {\n\taddSource(type: SourceType, source: DragSource): Identifier\n\taddTarget(type: TargetType, target: DropTarget): Identifier\n\tcontainsHandler(handler: DragSource | DropTarget): boolean\n\tgetSource(sourceId: Identifier, includePinned?: boolean): DragSource\n\tgetSourceType(sourceId: Identifier): SourceType\n\tgetTargetType(targetId: Identifier): TargetType\n\tgetTarget(targetId: Identifier): DropTarget\n\tisSourceId(handlerId: Identifier): boolean\n\tisTargetId(handlerId: Identifier): boolean\n\tremoveSource(sourceId: Identifier): void\n\tremoveTarget(targetId: Identifier): void\n\tpinSource(sourceId: Identifier): void\n\tunpinSource(): void\n}\n\nexport interface Action {\n\ttype: Identifier\n\tpayload: Payload\n}\nexport interface SentinelAction {\n\ttype: Identifier\n}\n\nexport type ActionCreator = (args: any[]) => Action\n\nexport interface BeginDragOptions {\n\tpublishSource?: boolean\n\tclientOffset?: XYCoord\n\tgetSourceClientOffset?: (sourceId: Identifier | undefined) => XYCoord\n}\n\nexport interface InitCoordsPayload {\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n}\n\nexport interface BeginDragPayload {\n\titemType: Identifier\n\titem: any\n\tsourceId: Identifier\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n\tisSourcePublic: boolean\n}\n\nexport interface HoverPayload {\n\ttargetIds: Identifier[]\n\tclientOffset: XYCoord | null\n}\n\nexport interface HoverOptions {\n\tclientOffset?: XYCoord\n}\n\nexport interface DropPayload {\n\tdropResult: any\n}\n\nexport interface TargetIdPayload {\n\ttargetId: Identifier\n}\n\nexport interface SourceIdPayload {\n\tsourceId: Identifier\n}\n\nexport interface DragDropActions {\n\tbeginDrag(\n\t\tsourceIds?: Identifier[],\n\t\toptions?: any,\n\t): Action | undefined\n\tpublishDragSource(): SentinelAction | undefined\n\thover(targetIds: Identifier[], options?: any): Action\n\tdrop(options?: any): void\n\tendDrag(): SentinelAction\n}\n\nexport interface DragDropManager {\n\tgetMonitor(): DragDropMonitor\n\tgetBackend(): Backend\n\tgetRegistry(): HandlerRegistry\n\tgetActions(): DragDropActions\n\tdispatch(action: any): void\n}\n\nexport type BackendFactory = (\n\tmanager: DragDropManager,\n\tglobalContext?: any,\n\tconfiguration?: any,\n) => Backend\n\nexport interface DragSource {\n\tbeginDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tendDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tcanDrag(monitor: DragDropMonitor, targetId: Identifier): boolean\n\tisDragging(monitor: DragDropMonitor, targetId: Identifier): boolean\n}\n\nexport interface DropTarget {\n\tcanDrop(monitor: DragDropMonitor, targetId: Identifier): boolean\n\thover(monitor: DragDropMonitor, targetId: Identifier): void\n\tdrop(monitor: DragDropMonitor, targetId: Identifier): any\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type { DragSource, DropTarget, Identifier } from './interfaces.js'\n\nexport function validateSourceContract(source: DragSource): void {\n\tinvariant(\n\t\ttypeof source.canDrag === 'function',\n\t\t'Expected canDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.beginDrag === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.endDrag === 'function',\n\t\t'Expected endDrag to be a function.',\n\t)\n}\n\nexport function validateTargetContract(target: DropTarget): void {\n\tinvariant(\n\t\ttypeof target.canDrop === 'function',\n\t\t'Expected canDrop to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.hover === 'function',\n\t\t'Expected hover to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.drop === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n}\n\nexport function validateType(\n\ttype: Identifier | Identifier[],\n\tallowArray?: boolean,\n): void {\n\tif (allowArray && Array.isArray(type)) {\n\t\ttype.forEach((t) => validateType(t, false))\n\t\treturn\n\t}\n\n\tinvariant(\n\t\ttypeof type === 'string' || typeof type === 'symbol',\n\t\tallowArray\n\t\t\t? 'Type can only be a string, a symbol, or an array of either.'\n\t\t\t: 'Type can only be a string or a symbol.',\n\t)\n}\n","let nextUniqueId = 0\n\nexport function getNextUniqueId(): number {\n\treturn nextUniqueId++\n}\n","import { asap } from '@react-dnd/asap'\nimport { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport {\n\taddSource,\n\taddTarget,\n\tremoveSource,\n\tremoveTarget,\n} from '../actions/registry.js'\nimport {\n\tvalidateSourceContract,\n\tvalidateTargetContract,\n\tvalidateType,\n} from '../contracts.js'\nimport type {\n\tDragSource,\n\tDropTarget,\n\tHandlerRegistry,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n} from '../interfaces.js'\nimport { HandlerRole } from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport { getNextUniqueId } from '../utils/getNextUniqueId.js'\n\nfunction getNextHandlerId(role: HandlerRole): string {\n\tconst id = getNextUniqueId().toString()\n\tswitch (role) {\n\t\tcase HandlerRole.SOURCE:\n\t\t\treturn `S${id}`\n\t\tcase HandlerRole.TARGET:\n\t\t\treturn `T${id}`\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown Handler Role: ${role}`)\n\t}\n}\n\nfunction parseRoleFromHandlerId(handlerId: string) {\n\tswitch (handlerId[0]) {\n\t\tcase 'S':\n\t\t\treturn HandlerRole.SOURCE\n\t\tcase 'T':\n\t\t\treturn HandlerRole.TARGET\n\t\tdefault:\n\t\t\tthrow new Error(`Cannot parse handler ID: ${handlerId}`)\n\t}\n}\n\nfunction mapContainsValue(map: Map, searchValue: T) {\n\tconst entries = map.entries()\n\tlet isDone = false\n\tdo {\n\t\tconst {\n\t\t\tdone,\n\t\t\tvalue: [, value],\n\t\t} = entries.next()\n\t\tif (value === searchValue) {\n\t\t\treturn true\n\t\t}\n\t\tisDone = !!done\n\t} while (!isDone)\n\treturn false\n}\n\nexport class HandlerRegistryImpl implements HandlerRegistry {\n\tprivate types: Map = new Map()\n\tprivate dragSources: Map = new Map()\n\tprivate dropTargets: Map = new Map()\n\tprivate pinnedSourceId: string | null = null\n\tprivate pinnedSource: any = null\n\tprivate store: Store\n\n\tpublic constructor(store: Store) {\n\t\tthis.store = store\n\t}\n\n\tpublic addSource(type: SourceType, source: DragSource): string {\n\t\tvalidateType(type)\n\t\tvalidateSourceContract(source)\n\n\t\tconst sourceId = this.addHandler(HandlerRole.SOURCE, type, source)\n\t\tthis.store.dispatch(addSource(sourceId))\n\t\treturn sourceId\n\t}\n\n\tpublic addTarget(type: TargetType, target: DropTarget): string {\n\t\tvalidateType(type, true)\n\t\tvalidateTargetContract(target)\n\n\t\tconst targetId = this.addHandler(HandlerRole.TARGET, type, target)\n\t\tthis.store.dispatch(addTarget(targetId))\n\t\treturn targetId\n\t}\n\n\tpublic containsHandler(handler: DragSource | DropTarget): boolean {\n\t\treturn (\n\t\t\tmapContainsValue(this.dragSources, handler) ||\n\t\t\tmapContainsValue(this.dropTargets, handler)\n\t\t)\n\t}\n\n\tpublic getSource(sourceId: string, includePinned = false): DragSource {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\tconst isPinned = includePinned && sourceId === this.pinnedSourceId\n\t\tconst source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId)\n\t\treturn source\n\t}\n\n\tpublic getTarget(targetId: string): DropTarget {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.dropTargets.get(targetId) as DropTarget\n\t}\n\n\tpublic getSourceType(sourceId: string): Identifier {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\treturn this.types.get(sourceId) as Identifier\n\t}\n\n\tpublic getTargetType(targetId: string): Identifier | Identifier[] {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.types.get(targetId) as Identifier | Identifier[]\n\t}\n\n\tpublic isSourceId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.SOURCE\n\t}\n\n\tpublic isTargetId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.TARGET\n\t}\n\n\tpublic removeSource(sourceId: string): void {\n\t\tinvariant(this.getSource(sourceId), 'Expected an existing source.')\n\t\tthis.store.dispatch(removeSource(sourceId))\n\t\tasap(() => {\n\t\t\tthis.dragSources.delete(sourceId)\n\t\t\tthis.types.delete(sourceId)\n\t\t})\n\t}\n\n\tpublic removeTarget(targetId: string): void {\n\t\tinvariant(this.getTarget(targetId), 'Expected an existing target.')\n\t\tthis.store.dispatch(removeTarget(targetId))\n\t\tthis.dropTargets.delete(targetId)\n\t\tthis.types.delete(targetId)\n\t}\n\n\tpublic pinSource(sourceId: string): void {\n\t\tconst source = this.getSource(sourceId)\n\t\tinvariant(source, 'Expected an existing source.')\n\n\t\tthis.pinnedSourceId = sourceId\n\t\tthis.pinnedSource = source\n\t}\n\n\tpublic unpinSource(): void {\n\t\tinvariant(this.pinnedSource, 'No source is pinned at the time.')\n\n\t\tthis.pinnedSourceId = null\n\t\tthis.pinnedSource = null\n\t}\n\n\tprivate addHandler(\n\t\trole: HandlerRole,\n\t\ttype: SourceType | TargetType,\n\t\thandler: DragSource | DropTarget,\n\t): string {\n\t\tconst id = getNextHandlerId(role)\n\t\tthis.types.set(id, type)\n\t\tif (role === HandlerRole.SOURCE) {\n\t\t\tthis.dragSources.set(id, handler as DragSource)\n\t\t} else if (role === HandlerRole.TARGET) {\n\t\t\tthis.dropTargets.set(id, handler as DropTarget)\n\t\t}\n\t\treturn id\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\n\nexport type EqualityCheck = (a: T, b: T) => boolean\nexport const strictEquality = (a: T, b: T): boolean => a === b\n\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nexport function areCoordsEqual(\n\toffsetA: XYCoord | null | undefined,\n\toffsetB: XYCoord | null | undefined,\n): boolean {\n\tif (!offsetA && !offsetB) {\n\t\treturn true\n\t} else if (!offsetA || !offsetB) {\n\t\treturn false\n\t} else {\n\t\treturn offsetA.x === offsetB.x && offsetA.y === offsetB.y\n\t}\n}\n\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nexport function areArraysEqual(\n\ta: T[],\n\tb: T[],\n\tisEqual: EqualityCheck = strictEquality,\n): boolean {\n\tif (a.length !== b.length) {\n\t\treturn false\n\t}\n\tfor (let i = 0; i < a.length; ++i) {\n\t\tif (!isEqual(a[i] as T, b[i] as T)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\nimport { ALL, NONE } from '../utils/dirtiness.js'\nimport { areArraysEqual } from '../utils/equality.js'\nimport { xor } from '../utils/js_utils.js'\n\nexport type State = string[]\n\nexport interface DirtyHandlerIdPayload {\n\ttargetIds: string[]\n\tprevTargetIds: string[]\n}\n\nexport function reduce(\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t_state: State = NONE,\n\taction: Action,\n): State {\n\tswitch (action.type) {\n\t\tcase HOVER:\n\t\t\tbreak\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\tcase REMOVE_TARGET:\n\t\tcase REMOVE_SOURCE:\n\t\t\treturn NONE\n\t\tcase BEGIN_DRAG:\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\tdefault:\n\t\t\treturn ALL\n\t}\n\n\tconst { targetIds = [], prevTargetIds = [] } = action.payload\n\tconst result = xor(targetIds, prevTargetIds)\n\tconst didChange =\n\t\tresult.length > 0 || !areArraysEqual(targetIds, prevTargetIds)\n\n\tif (!didChange) {\n\t\treturn NONE\n\t}\n\n\t// Check the target ids at the innermost position. If they are valid, add them\n\t// to the result\n\tconst prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1]\n\tconst innermostTargetId = targetIds[targetIds.length - 1]\n\tif (prevInnermostTargetId !== innermostTargetId) {\n\t\tif (prevInnermostTargetId) {\n\t\t\tresult.push(prevInnermostTargetId)\n\t\t}\n\t\tif (innermostTargetId) {\n\t\t\tresult.push(innermostTargetId)\n\t\t}\n\t}\n\n\treturn result\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tINIT_COORDS,\n} from '../actions/dragDrop/index.js'\nimport type { Action, XYCoord } from '../interfaces.js'\nimport { areCoordsEqual } from '../utils/equality.js'\n\nexport interface State {\n\tinitialSourceClientOffset: XYCoord | null\n\tinitialClientOffset: XYCoord | null\n\tclientOffset: XYCoord | null\n}\n\nconst initialState: State = {\n\tinitialSourceClientOffset: null,\n\tinitialClientOffset: null,\n\tclientOffset: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\tsourceClientOffset: XYCoord\n\t\tclientOffset: XYCoord\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase INIT_COORDS:\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\tinitialSourceClientOffset: payload.sourceClientOffset,\n\t\t\t\tinitialClientOffset: payload.clientOffset,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\tif (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\t\treturn initialState\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport { REMOVE_TARGET } from '../actions/registry.js'\nimport type { Action, Identifier } from '../interfaces.js'\nimport { without } from '../utils/js_utils.js'\n\nexport interface State {\n\titemType: Identifier | Identifier[] | null\n\titem: any\n\tsourceId: string | null\n\ttargetIds: string[]\n\tdropResult: any\n\tdidDrop: boolean\n\tisSourcePublic: boolean | null\n}\n\nconst initialState: State = {\n\titemType: null,\n\titem: null,\n\tsourceId: null,\n\ttargetIds: [],\n\tdropResult: null,\n\tdidDrop: false,\n\tisSourcePublic: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\titemType: Identifier | Identifier[]\n\t\titem: any\n\t\tsourceId: string\n\t\ttargetId: string\n\t\ttargetIds: string[]\n\t\tisSourcePublic: boolean\n\t\tdropResult: any\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: payload.itemType,\n\t\t\t\titem: payload.item,\n\t\t\t\tsourceId: payload.sourceId,\n\t\t\t\tisSourcePublic: payload.isSourcePublic,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t}\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisSourcePublic: true,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: payload.targetIds,\n\t\t\t}\n\t\tcase REMOVE_TARGET:\n\t\t\tif (state.targetIds.indexOf(payload.targetId) === -1) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: without(state.targetIds, payload.targetId),\n\t\t\t}\n\t\tcase DROP:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdropResult: payload.dropResult,\n\t\t\t\tdidDrop: true,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tcase END_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: null,\n\t\t\t\titem: null,\n\t\t\t\tsourceId: null,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t\tisSourcePublic: null,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\n\nexport type State = number\n\nexport function reduce(state: State = 0, action: Action): State {\n\tswitch (action.type) {\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\t\treturn state + 1\n\t\tcase REMOVE_SOURCE:\n\t\tcase REMOVE_TARGET:\n\t\t\treturn state - 1\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","export type State = number\n\nexport function reduce(state: State = 0): State {\n\treturn state + 1\n}\n","import type { Action } from '../interfaces.js'\nimport { get } from '../utils/js_utils.js'\nimport type { State as DirtyHandlerIdsState } from './dirtyHandlerIds.js'\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds.js'\nimport type { State as DragOffsetState } from './dragOffset.js'\nimport { reduce as dragOffset } from './dragOffset.js'\nimport type { State as DragOperationState } from './dragOperation.js'\nimport { reduce as dragOperation } from './dragOperation.js'\nimport type { State as RefCountState } from './refCount.js'\nimport { reduce as refCount } from './refCount.js'\nimport type { State as StateIdState } from './stateId.js'\nimport { reduce as stateId } from './stateId.js'\n\nexport interface State {\n\tdirtyHandlerIds: DirtyHandlerIdsState\n\tdragOffset: DragOffsetState\n\trefCount: RefCountState\n\tdragOperation: DragOperationState\n\tstateId: StateIdState\n}\n\nexport function reduce(state: State = {} as State, action: Action): State {\n\treturn {\n\t\tdirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n\t\t\ttype: action.type,\n\t\t\tpayload: {\n\t\t\t\t...action.payload,\n\t\t\t\tprevTargetIds: get(state, 'dragOperation.targetIds', []),\n\t\t\t},\n\t\t}),\n\t\tdragOffset: dragOffset(state.dragOffset, action),\n\t\trefCount: refCount(state.refCount, action),\n\t\tdragOperation: dragOperation(state.dragOperation, action),\n\t\tstateId: stateId(state.stateId),\n\t}\n}\n","import type { Store } from 'redux'\nimport { createStore } from 'redux'\n\nimport { DragDropManagerImpl } from './classes/DragDropManagerImpl.js'\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl.js'\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl.js'\nimport type { BackendFactory, DragDropManager } from './interfaces.js'\nimport type { State } from './reducers/index.js'\nimport { reduce } from './reducers/index.js'\n\nexport function createDragDropManager(\n\tbackendFactory: BackendFactory,\n\tglobalContext: unknown = undefined,\n\tbackendOptions: unknown = {},\n\tdebugMode = false,\n): DragDropManager {\n\tconst store = makeStoreInstance(debugMode)\n\tconst monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store))\n\tconst manager = new DragDropManagerImpl(store, monitor)\n\tconst backend = backendFactory(manager, globalContext, backendOptions)\n\tmanager.receiveBackend(backend)\n\treturn manager\n}\n\nfunction makeStoreInstance(debugMode: boolean): Store {\n\t// TODO: if we ever make a react-native version of this,\n\t// we'll need to consider how to pull off dev-tooling\n\tconst reduxDevTools =\n\t\ttypeof window !== 'undefined' &&\n\t\t(window as any).__REDUX_DEVTOOLS_EXTENSION__\n\treturn createStore(\n\t\treduce,\n\t\tdebugMode &&\n\t\t\treduxDevTools &&\n\t\t\treduxDevTools({\n\t\t\t\tname: 'dnd-core',\n\t\t\t\tinstanceId: 'dnd-core',\n\t\t\t}),\n\t)\n}\n","import type { DragDropManager } from 'dnd-core'\nimport { createContext } from 'react'\n\n/**\n * The React context type\n */\nexport interface DndContextType {\n\tdragDropManager: DragDropManager | undefined\n}\n\n/**\n * Create the React Context\n */\nexport const DndContext = createContext({\n\tdragDropManager: undefined,\n})\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\nimport { createDragDropManager } from 'dnd-core'\nimport type { FC, ReactNode } from 'react'\nimport { memo, useEffect } from 'react'\n\nimport { DndContext } from './DndContext.js'\n\nexport type DndProviderProps =\n\t| {\n\t\t\tchildren?: ReactNode\n\t\t\tmanager: DragDropManager\n\t }\n\t| {\n\t\t\tbackend: BackendFactory\n\t\t\tchildren?: ReactNode\n\t\t\tcontext?: BackendContext\n\t\t\toptions?: BackendOptions\n\t\t\tdebugMode?: boolean\n\t }\n\nlet refCount = 0\nconst INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__')\n\n/**\n * A React component that provides the React-DnD context\n */\nexport const DndProvider: FC> = memo(\n\tfunction DndProvider({ children, ...props }) {\n\t\tconst [manager, isGlobalInstance] = getDndContextValue(props) // memoized from props\n\t\t/**\n\t\t * If the global context was used to store the DND context\n\t\t * then where theres no more references to it we should\n\t\t * clean it up to avoid memory leaks\n\t\t */\n\t\tuseEffect(() => {\n\t\t\tif (isGlobalInstance) {\n\t\t\t\tconst context = getGlobalContext()\n\t\t\t\t++refCount\n\n\t\t\t\treturn () => {\n\t\t\t\t\tif (--refCount === 0) {\n\t\t\t\t\t\tcontext[INSTANCE_SYM] = null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn\n\t\t}, [])\n\n\t\treturn {children}\n\t},\n)\n\nfunction getDndContextValue(props: DndProviderProps) {\n\tif ('manager' in props) {\n\t\tconst manager = { dragDropManager: props.manager }\n\t\treturn [manager, false]\n\t}\n\n\tconst manager = createSingletonDndContext(\n\t\tprops.backend,\n\t\tprops.context,\n\t\tprops.options,\n\t\tprops.debugMode,\n\t)\n\tconst isGlobalInstance = !props.context\n\n\treturn [manager, isGlobalInstance]\n}\n\nfunction createSingletonDndContext(\n\tbackend: BackendFactory,\n\tcontext: BackendContext = getGlobalContext(),\n\toptions: BackendOptions,\n\tdebugMode?: boolean,\n) {\n\tconst ctx = context as any\n\tif (!ctx[INSTANCE_SYM]) {\n\t\tctx[INSTANCE_SYM] = {\n\t\t\tdragDropManager: createDragDropManager(\n\t\t\t\tbackend,\n\t\t\t\tcontext,\n\t\t\t\toptions,\n\t\t\t\tdebugMode,\n\t\t\t),\n\t\t}\n\t}\n\treturn ctx[INSTANCE_SYM]\n}\n\ndeclare const global: any\nfunction getGlobalContext() {\n\treturn typeof global !== 'undefined' ? global : (window as any)\n}\n","import { useEffect, useLayoutEffect } from 'react'\n\n// suppress the useLayoutEffect warning on server side.\nexport const useIsomorphicLayoutEffect =\n\ttypeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useCollector } from './useCollector.js'\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\nexport function useMonitorOutput(\n\tmonitor: Monitor & MonitorEventEmitter,\n\tcollect: (monitor: Monitor) => Collected,\n\tonCollect?: () => void,\n): Collected {\n\tconst [collected, updateCollected] = useCollector(monitor, collect, onCollect)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction subscribeToMonitorStateChange() {\n\t\t\tconst handlerId = monitor.getHandlerId()\n\t\t\tif (handlerId == null) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn monitor.subscribeToStateChange(updateCollected, {\n\t\t\t\thandlerIds: [handlerId],\n\t\t\t})\n\t\t},\n\t\t[monitor, updateCollected],\n\t)\n\n\treturn collected\n}\n","import equal from 'fast-deep-equal'\nimport { useCallback, useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\nexport function useCollector(\n\tmonitor: T,\n\tcollect: (monitor: T) => S,\n\tonUpdate?: () => void,\n): [S, () => void] {\n\tconst [collected, setCollected] = useState(() => collect(monitor))\n\n\tconst updateCollected = useCallback(() => {\n\t\tconst nextValue = collect(monitor)\n\t\t// This needs to be a deep-equality check because some monitor-collected values\n\t\t// include XYCoord objects that may be equivalent, but do not have instance equality.\n\t\tif (!equal(collected, nextValue)) {\n\t\t\tsetCollected(nextValue)\n\t\t\tif (onUpdate) {\n\t\t\t\tonUpdate()\n\t\t\t}\n\t\t}\n\t}, [collected, monitor, onUpdate])\n\n\t// update the collected properties after react renders.\n\t// Note that the \"Dustbin Stress Test\" fails if this is not\n\t// done when the component updates\n\tuseIsomorphicLayoutEffect(updateCollected)\n\n\treturn [collected, updateCollected]\n}\n","import type { Connector } from '../internals/index.js'\nimport type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useMonitorOutput } from './useMonitorOutput.js'\n\nexport function useCollectedProps(\n\tcollector: ((monitor: Monitor) => Collected) | undefined,\n\tmonitor: Monitor & MonitorEventEmitter,\n\tconnector: Connector,\n) {\n\treturn useMonitorOutput(monitor, collector || (() => ({} as Collected)), () =>\n\t\tconnector.reconnect(),\n\t)\n}\n","import { useMemo } from 'react'\n\nimport type { FactoryOrInstance } from './types.js'\n\nexport function useOptionalFactory(\n\targ: FactoryOrInstance,\n\tdeps?: unknown[],\n): T {\n\tconst memoDeps = [...(deps || [])]\n\tif (deps == null && typeof arg !== 'function') {\n\t\tmemoDeps.push(arg)\n\t}\n\treturn useMemo(() => {\n\t\treturn typeof arg === 'function' ? (arg as () => T)() : (arg as T)\n\t}, memoDeps)\n}\n","import { useMemo } from 'react'\n\nimport type { TargetConnector } from '../../internals/index.js'\n\nexport function useConnectDropTarget(connector: TargetConnector) {\n\treturn useMemo(() => connector.hooks.dropTarget(), [connector])\n}\n","export function shallowEqual(\n\tobjA: T,\n\tobjB: T,\n\tcompare?: (a: T, b: T, key?: string) => boolean | void,\n\tcompareContext?: any,\n) {\n\tlet compareResult = compare\n\t\t? compare.call(compareContext, objA, objB)\n\t\t: void 0\n\tif (compareResult !== void 0) {\n\t\treturn !!compareResult\n\t}\n\n\tif (objA === objB) {\n\t\treturn true\n\t}\n\n\tif (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n\t\treturn false\n\t}\n\n\tconst keysA = Object.keys(objA)\n\tconst keysB = Object.keys(objB)\n\n\tif (keysA.length !== keysB.length) {\n\t\treturn false\n\t}\n\n\tconst bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB)\n\n\t// Test for A's keys different from B.\n\tfor (let idx = 0; idx < keysA.length; idx++) {\n\t\tconst key = keysA[idx] as string\n\n\t\tif (!bHasOwnProperty(key)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst valueA = (objA as any)[key]\n\t\tconst valueB = (objB as any)[key]\n\n\t\tcompareResult = compare\n\t\t\t? compare.call(compareContext, valueA, valueB, key)\n\t\t\t: void 0\n\n\t\tif (\n\t\t\tcompareResult === false ||\n\t\t\t(compareResult === void 0 && valueA !== valueB)\n\t\t) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n","export interface Ref {\n\tcurrent: T\n}\n\nexport function isRef(obj: unknown): boolean {\n\treturn (\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tobj !== null &&\n\t\ttypeof obj === 'object' &&\n\t\tObject.prototype.hasOwnProperty.call(obj, 'current')\n\t)\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { ReactElement } from 'react'\nimport { cloneElement, isValidElement } from 'react'\n\nfunction throwIfCompositeComponentElement(element: ReactElement) {\n\t// Custom components can no longer be wrapped directly in React DnD 2.0\n\t// so that we don't need to depend on findDOMNode() from react-dom.\n\tif (typeof element.type === 'string') {\n\t\treturn\n\t}\n\n\tconst displayName =\n\t\t(element.type as any).displayName || element.type.name || 'the component'\n\n\tthrow new Error(\n\t\t'Only native element nodes can now be passed to React DnD connectors.' +\n\t\t\t`You can either wrap ${displayName} into a
    , or turn it into a ` +\n\t\t\t'drag source or a drop target itself.',\n\t)\n}\n\nfunction wrapHookToRecognizeElement(hook: (node: any, options: any) => void) {\n\treturn (elementOrNode = null, options = null) => {\n\t\t// When passed a node, call the hook straight away.\n\t\tif (!isValidElement(elementOrNode)) {\n\t\t\tconst node = elementOrNode\n\t\t\thook(node, options)\n\t\t\t// return the node so it can be chained (e.g. when within callback refs\n\t\t\t//
    connectDragSource(connectDropTarget(node))}/>\n\t\t\treturn node\n\t\t}\n\n\t\t// If passed a ReactElement, clone it and attach this function as a ref.\n\t\t// This helps us achieve a neat API where user doesn't even know that refs\n\t\t// are being used under the hood.\n\t\tconst element: ReactElement | null = elementOrNode\n\t\tthrowIfCompositeComponentElement(element as any)\n\n\t\t// When no options are passed, use the hook directly\n\t\tconst ref = options ? (node: Element) => hook(node, options) : hook\n\t\treturn cloneWithRef(element, ref)\n\t}\n}\n\nexport function wrapConnectorHooks(hooks: any) {\n\tconst wrappedHooks: any = {}\n\n\tObject.keys(hooks).forEach((key) => {\n\t\tconst hook = hooks[key]\n\n\t\t// ref objects should be passed straight through without wrapping\n\t\tif (key.endsWith('Ref')) {\n\t\t\twrappedHooks[key] = hooks[key]\n\t\t} else {\n\t\t\tconst wrappedHook = wrapHookToRecognizeElement(hook)\n\t\t\twrappedHooks[key] = () => wrappedHook\n\t\t}\n\t})\n\n\treturn wrappedHooks\n}\n\nfunction setRef(ref: any, node: any) {\n\tif (typeof ref === 'function') {\n\t\tref(node)\n\t} else {\n\t\tref.current = node\n\t}\n}\n\nfunction cloneWithRef(element: any, newRef: any): ReactElement {\n\tconst previousRef = element.ref\n\tinvariant(\n\t\ttypeof previousRef !== 'string',\n\t\t'Cannot connect React DnD to an element with an existing string ref. ' +\n\t\t\t'Please convert it to use a callback ref instead, or wrap it into a or
    . ' +\n\t\t\t'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs',\n\t)\n\n\tif (!previousRef) {\n\t\t// When there is no ref on the element, use the new ref directly\n\t\treturn cloneElement(element, {\n\t\t\tref: newRef,\n\t\t})\n\t} else {\n\t\treturn cloneElement(element, {\n\t\t\tref: (node: any) => {\n\t\t\t\tsetRef(previousRef, node)\n\t\t\t\tsetRef(newRef, node)\n\t\t\t},\n\t\t})\n\t}\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { RefObject } from 'react'\n\nimport type { DropTargetOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport type { Connector } from './SourceConnector.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport class TargetConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdropTarget: (node: any, options: DropTargetOptions) => {\n\t\t\tthis.clearDropTarget()\n\t\t\tthis.dropTargetOptions = options\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dropTargetRef = node\n\t\t\t} else {\n\t\t\t\tthis.dropTargetNode = node\n\t\t\t}\n\t\t\tthis.reconnect()\n\t\t},\n\t})\n\n\tprivate handlerId: Identifier | null = null\n\t// The drop target may either be attached via ref or connect function\n\tprivate dropTargetRef: RefObject | null = null\n\tprivate dropTargetNode: any\n\tprivate dropTargetOptionsInternal: DropTargetOptions | null = null\n\tprivate unsubscribeDropTarget: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDropTarget: any = null\n\tprivate lastConnectedDropTargetOptions: DropTargetOptions | null = null\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dropTarget\n\t}\n\n\tpublic reconnect(): void {\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didDropTargetChange() ||\n\t\t\tthis.didOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDropTarget()\n\t\t}\n\n\t\tconst dropTarget = this.dropTarget\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dropTarget) {\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\tthis.lastConnectedDropTargetOptions = this.dropTargetOptions\n\n\t\t\tthis.unsubscribeDropTarget = this.backend.connectDropTarget(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdropTarget,\n\t\t\t\tthis.dropTargetOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (newHandlerId === this.handlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get dropTargetOptions(): DropTargetOptions {\n\t\treturn this.dropTargetOptionsInternal\n\t}\n\tpublic set dropTargetOptions(options: DropTargetOptions) {\n\t\tthis.dropTargetOptionsInternal = options\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didDropTargetChange(): boolean {\n\t\treturn this.lastConnectedDropTarget !== this.dropTarget\n\t}\n\n\tprivate didOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDropTargetOptions,\n\t\t\tthis.dropTargetOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDropTarget() {\n\t\tif (this.unsubscribeDropTarget) {\n\t\t\tthis.unsubscribeDropTarget()\n\t\t\tthis.unsubscribeDropTarget = undefined\n\t\t}\n\t}\n\n\tprivate get dropTarget() {\n\t\treturn (\n\t\t\tthis.dropTargetNode || (this.dropTargetRef && this.dropTargetRef.current)\n\t\t)\n\t}\n\n\tprivate clearDropTarget() {\n\t\tthis.dropTargetRef = null\n\t\tthis.dropTargetNode = null\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { DragDropManager } from 'dnd-core'\nimport { useContext } from 'react'\n\nimport { DndContext } from '../core/index.js'\n\n/**\n * A hook to retrieve the DragDropManager from Context\n */\nexport function useDragDropManager(): DragDropManager {\n\tconst { dragDropManager } = useContext(DndContext)\n\tinvariant(dragDropManager != null, 'Expected drag drop context')\n\treturn dragDropManager as DragDropManager\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../types/index.js'\n\nlet isCallingCanDrop = false\n\nexport class DropTargetMonitorImpl implements DropTargetMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate targetId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(targetId: Identifier | null): void {\n\t\tthis.targetId = targetId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.targetId\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic canDrop(): boolean {\n\t\t// Cut out early if the target id has not been set. This should prevent errors\n\t\t// where the user has an older version of dnd-core like in\n\t\t// https://github.com/react-dnd/react-dnd/issues/1310\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingCanDrop,\n\t\t\t'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrop = true\n\t\t\treturn this.internalMonitor.canDropOnTarget(this.targetId)\n\t\t} finally {\n\t\t\tisCallingCanDrop = false\n\t\t}\n\t}\n\n\tpublic isOver(options?: { shallow?: boolean }): boolean {\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\treturn this.internalMonitor.isOverTarget(this.targetId, options)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import type { DropTarget } from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\n\nexport class DropTargetImpl implements DropTarget {\n\tpublic constructor(\n\t\tpublic spec: DropTargetHookSpec,\n\t\tprivate monitor: DropTargetMonitor,\n\t) {}\n\n\tpublic canDrop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\treturn spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true\n\t}\n\n\tpublic hover() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.hover) {\n\t\t\tspec.hover(monitor.getItem(), monitor)\n\t\t}\n\t}\n\n\tpublic drop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.drop) {\n\t\t\treturn spec.drop(monitor.getItem(), monitor)\n\t\t}\n\t\treturn\n\t}\n}\n","import type { TargetConnector } from '../../internals/index.js'\nimport { registerTarget } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useAccept } from './useAccept.js'\nimport { useDropTarget } from './useDropTarget.js'\n\nexport function useRegisteredDropTarget(\n\tspec: DropTargetHookSpec,\n\tmonitor: DropTargetMonitor,\n\tconnector: TargetConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst dropTarget = useDropTarget(spec, monitor)\n\tconst accept = useAccept(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDropTarget() {\n\t\t\tconst [handlerId, unregister] = registerTarget(\n\t\t\t\taccept,\n\t\t\t\tdropTarget,\n\t\t\t\tmanager,\n\t\t\t)\n\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\treturn unregister\n\t\t},\n\t\t[\n\t\t\tmanager,\n\t\t\tmonitor,\n\t\t\tdropTarget,\n\t\t\tconnector,\n\t\t\taccept.map((a) => a.toString()).join('|'),\n\t\t],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { DropTargetImpl } from './DropTargetImpl.js'\n\nexport function useDropTarget(\n\tspec: DropTargetHookSpec,\n\tmonitor: DropTargetMonitor,\n) {\n\tconst dropTarget = useMemo(() => new DropTargetImpl(spec, monitor), [monitor])\n\tuseEffect(() => {\n\t\tdropTarget.spec = spec\n\t}, [spec])\n\treturn dropTarget\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DropTargetHookSpec } from '../types.js'\n\n/**\n * Internal utility hook to get an array-version of spec.accept.\n * The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.\n * @param spec\n */\nexport function useAccept(\n\tspec: DropTargetHookSpec,\n): Identifier[] {\n\tconst { accept } = spec\n\treturn useMemo(() => {\n\t\tinvariant(spec.accept != null, 'accept must be defined')\n\t\treturn Array.isArray(accept) ? accept : [accept]\n\t}, [accept])\n}\n","import type {\n\tDragDropManager,\n\tDragSource,\n\tDropTarget,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n\tUnsubscribe,\n} from 'dnd-core'\n\nexport function registerTarget(\n\ttype: TargetType,\n\ttarget: DropTarget,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst targetId = registry.addTarget(type, target)\n\n\treturn [targetId, () => registry.removeTarget(targetId)]\n}\n\nexport function registerSource(\n\ttype: SourceType,\n\tsource: DragSource,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst sourceId = registry.addSource(type, source)\n\n\treturn [sourceId, () => registry.removeSource(sourceId)]\n}\n","import type { ConnectDropTarget } from '../../types/index.js'\nimport type { DropTargetHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDropTarget } from './connectors.js'\nimport { useDropTargetConnector } from './useDropTargetConnector.js'\nimport { useDropTargetMonitor } from './useDropTargetMonitor.js'\nimport { useRegisteredDropTarget } from './useRegisteredDropTarget.js'\n\n/**\n * useDropTarget Hook\n * @param spec The drop target specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrop<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDropTargetHookSpec\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDropTarget] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tconst monitor = useDropTargetMonitor()\n\tconst connector = useDropTargetConnector(spec.options)\n\tuseRegisteredDropTarget(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDropTarget(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DropTargetMonitorImpl } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDropTargetMonitor(): DropTargetMonitor {\n\tconst manager = useDragDropManager()\n\treturn useMemo(() => new DropTargetMonitorImpl(manager), [manager])\n}\n","import { useMemo } from 'react'\n\nimport { TargetConnector } from '../../internals/index.js'\nimport type { DropTargetOptions } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDropTargetConnector(\n\toptions: DropTargetOptions,\n): TargetConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new TargetConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dropTargetOptions = options || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDropTarget()\n\t}, [options])\n\treturn connector\n}\n","import { useMemo } from 'react'\n\nimport type { SourceConnector } from '../../internals/index.js'\n\nexport function useConnectDragSource(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragSource(), [connector])\n}\n\nexport function useConnectDragPreview(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragPreview(), [connector])\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { ReactElement, Ref, RefObject } from 'react'\n\nimport type { DragPreviewOptions, DragSourceOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport interface Connector {\n\thooks: any\n\tconnectTarget: any\n\treceiveHandlerId(handlerId: Identifier | null): void\n\treconnect(): void\n}\n\nexport class SourceConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdragSource: (\n\t\t\tnode: Element | ReactElement | Ref,\n\t\t\toptions?: DragSourceOptions,\n\t\t) => {\n\t\t\tthis.clearDragSource()\n\t\t\tthis.dragSourceOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragSourceRef = node as RefObject\n\t\t\t} else {\n\t\t\t\tthis.dragSourceNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragSource()\n\t\t},\n\t\tdragPreview: (node: any, options?: DragPreviewOptions) => {\n\t\t\tthis.clearDragPreview()\n\t\t\tthis.dragPreviewOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragPreviewRef = node\n\t\t\t} else {\n\t\t\t\tthis.dragPreviewNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragPreview()\n\t\t},\n\t})\n\tprivate handlerId: Identifier | null = null\n\n\t// The drop target may either be attached via ref or connect function\n\tprivate dragSourceRef: RefObject | null = null\n\tprivate dragSourceNode: any\n\tprivate dragSourceOptionsInternal: DragSourceOptions | null = null\n\tprivate dragSourceUnsubscribe: Unsubscribe | undefined\n\n\t// The drag preview may either be attached via ref or connect function\n\tprivate dragPreviewRef: RefObject | null = null\n\tprivate dragPreviewNode: any\n\tprivate dragPreviewOptionsInternal: DragPreviewOptions | null = null\n\tprivate dragPreviewUnsubscribe: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDragSource: any = null\n\tprivate lastConnectedDragSourceOptions: any = null\n\tprivate lastConnectedDragPreview: any = null\n\tprivate lastConnectedDragPreviewOptions: any = null\n\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (this.handlerId === newHandlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dragSource\n\t}\n\n\tpublic get dragSourceOptions(): DragSourceOptions | null {\n\t\treturn this.dragSourceOptionsInternal\n\t}\n\tpublic set dragSourceOptions(options: DragSourceOptions | null) {\n\t\tthis.dragSourceOptionsInternal = options\n\t}\n\n\tpublic get dragPreviewOptions(): DragPreviewOptions | null {\n\t\treturn this.dragPreviewOptionsInternal\n\t}\n\n\tpublic set dragPreviewOptions(options: DragPreviewOptions | null) {\n\t\tthis.dragPreviewOptionsInternal = options\n\t}\n\n\tpublic reconnect(): void {\n\t\tconst didChange = this.reconnectDragSource()\n\t\tthis.reconnectDragPreview(didChange)\n\t}\n\n\tprivate reconnectDragSource(): boolean {\n\t\tconst dragSource = this.dragSource\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragSourceChange() ||\n\t\t\tthis.didDragSourceOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragSource()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn didChange\n\t\t}\n\t\tif (!dragSource) {\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\treturn didChange\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\tthis.lastConnectedDragSourceOptions = this.dragSourceOptions\n\t\t\tthis.dragSourceUnsubscribe = this.backend.connectDragSource(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragSource,\n\t\t\t\tthis.dragSourceOptions,\n\t\t\t)\n\t\t}\n\t\treturn didChange\n\t}\n\n\tprivate reconnectDragPreview(forceDidChange = false): void {\n\t\tconst dragPreview = this.dragPreview\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tforceDidChange ||\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragPreviewChange() ||\n\t\t\tthis.didDragPreviewOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragPreview()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dragPreview) {\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\tthis.lastConnectedDragPreviewOptions = this.dragPreviewOptions\n\t\t\tthis.dragPreviewUnsubscribe = this.backend.connectDragPreview(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragPreview,\n\t\t\t\tthis.dragPreviewOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didConnectedDragSourceChange(): boolean {\n\t\treturn this.lastConnectedDragSource !== this.dragSource\n\t}\n\n\tprivate didConnectedDragPreviewChange(): boolean {\n\t\treturn this.lastConnectedDragPreview !== this.dragPreview\n\t}\n\n\tprivate didDragSourceOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragSourceOptions,\n\t\t\tthis.dragSourceOptions,\n\t\t)\n\t}\n\n\tprivate didDragPreviewOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragPreviewOptions,\n\t\t\tthis.dragPreviewOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDragSource() {\n\t\tif (this.dragSourceUnsubscribe) {\n\t\t\tthis.dragSourceUnsubscribe()\n\t\t\tthis.dragSourceUnsubscribe = undefined\n\t\t}\n\t}\n\n\tpublic disconnectDragPreview() {\n\t\tif (this.dragPreviewUnsubscribe) {\n\t\t\tthis.dragPreviewUnsubscribe()\n\t\t\tthis.dragPreviewUnsubscribe = undefined\n\t\t\tthis.dragPreviewNode = null\n\t\t\tthis.dragPreviewRef = null\n\t\t}\n\t}\n\n\tprivate get dragSource() {\n\t\treturn (\n\t\t\tthis.dragSourceNode || (this.dragSourceRef && this.dragSourceRef.current)\n\t\t)\n\t}\n\n\tprivate get dragPreview() {\n\t\treturn (\n\t\t\tthis.dragPreviewNode ||\n\t\t\t(this.dragPreviewRef && this.dragPreviewRef.current)\n\t\t)\n\t}\n\n\tprivate clearDragSource() {\n\t\tthis.dragSourceNode = null\n\t\tthis.dragSourceRef = null\n\t}\n\n\tprivate clearDragPreview() {\n\t\tthis.dragPreviewNode = null\n\t\tthis.dragPreviewRef = null\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DragSourceMonitor } from '../types/index.js'\n\nlet isCallingCanDrag = false\nlet isCallingIsDragging = false\n\nexport class DragSourceMonitorImpl implements DragSourceMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate sourceId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(sourceId: Identifier | null): void {\n\t\tthis.sourceId = sourceId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.sourceId\n\t}\n\n\tpublic canDrag(): boolean {\n\t\tinvariant(\n\t\t\t!isCallingCanDrag,\n\t\t\t'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrag = true\n\t\t\treturn this.internalMonitor.canDragSource(this.sourceId as Identifier)\n\t\t} finally {\n\t\t\tisCallingCanDrag = false\n\t\t}\n\t}\n\n\tpublic isDragging(): boolean {\n\t\tif (!this.sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingIsDragging,\n\t\t\t'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingIsDragging = true\n\t\t\treturn this.internalMonitor.isDraggingSource(this.sourceId)\n\t\t} finally {\n\t\t\tisCallingIsDragging = false\n\t\t}\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic isDraggingSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.isDraggingSource(sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: Identifier,\n\t\toptions?: { shallow: boolean },\n\t): boolean {\n\t\treturn this.internalMonitor.isOverTarget(targetId, options)\n\t}\n\n\tpublic getTargetIds(): Identifier[] {\n\t\treturn this.internalMonitor.getTargetIds()\n\t}\n\n\tpublic isSourcePublic(): boolean | null {\n\t\treturn this.internalMonitor.isSourcePublic()\n\t}\n\n\tpublic getSourceId(): Identifier | null {\n\t\treturn this.internalMonitor.getSourceId()\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToOffsetChange(listener)\n\t}\n\n\tpublic canDragSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDragSource(sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDropOnTarget(targetId)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import type { DragDropMonitor, DragSource, Identifier } from 'dnd-core'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragObjectFactory, DragSourceHookSpec } from '../types.js'\n\nexport class DragSourceImpl implements DragSource {\n\tpublic constructor(\n\t\tpublic spec: DragSourceHookSpec,\n\t\tprivate monitor: DragSourceMonitor,\n\t\tprivate connector: Connector,\n\t) {}\n\n\tpublic beginDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\n\t\tlet result: O | null = null\n\t\tif (typeof spec.item === 'object') {\n\t\t\tresult = spec.item as O\n\t\t} else if (typeof spec.item === 'function') {\n\t\t\tresult = (spec.item as DragObjectFactory)(monitor)\n\t\t} else {\n\t\t\tresult = {} as O\n\t\t}\n\t\treturn result ?? null\n\t}\n\n\tpublic canDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (typeof spec.canDrag === 'boolean') {\n\t\t\treturn spec.canDrag\n\t\t} else if (typeof spec.canDrag === 'function') {\n\t\t\treturn spec.canDrag(monitor)\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tpublic isDragging(globalMonitor: DragDropMonitor, target: Identifier) {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst { isDragging } = spec\n\t\treturn isDragging\n\t\t\t? isDragging(monitor)\n\t\t\t: target === globalMonitor.getSourceId()\n\t}\n\n\tpublic endDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst connector = this.connector\n\t\tconst { end } = spec\n\t\tif (end) {\n\t\t\tend(monitor.getItem(), monitor)\n\t\t}\n\t\tconnector.reconnect()\n\t}\n}\n","import type { SourceConnector } from '../../internals/index.js'\nimport { registerSource } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useDragSource } from './useDragSource.js'\nimport { useDragType } from './useDragType.js'\n\nexport function useRegisteredDragSource(\n\tspec: DragSourceHookSpec,\n\tmonitor: DragSourceMonitor,\n\tconnector: SourceConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst handler = useDragSource(spec, monitor, connector)\n\tconst itemType = useDragType(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDragSource() {\n\t\t\tif (itemType != null) {\n\t\t\t\tconst [handlerId, unregister] = registerSource(\n\t\t\t\t\titemType,\n\t\t\t\t\thandler,\n\t\t\t\t\tmanager,\n\t\t\t\t)\n\t\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\t\treturn unregister\n\t\t\t}\n\t\t\treturn\n\t\t},\n\t\t[manager, monitor, connector, handler, itemType],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { DragSourceImpl } from './DragSourceImpl.js'\n\nexport function useDragSource(\n\tspec: DragSourceHookSpec,\n\tmonitor: DragSourceMonitor,\n\tconnector: Connector,\n) {\n\tconst handler = useMemo(\n\t\t() => new DragSourceImpl(spec, monitor, connector),\n\t\t[monitor, connector],\n\t)\n\tuseEffect(() => {\n\t\thandler.spec = spec\n\t}, [spec])\n\treturn handler\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DragSourceHookSpec } from '../types.js'\n\nexport function useDragType(\n\tspec: DragSourceHookSpec,\n): Identifier {\n\treturn useMemo(() => {\n\t\tconst result: Identifier = spec.type\n\t\tinvariant(result != null, 'spec.type must be defined')\n\t\treturn result\n\t}, [spec])\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tConnectDragPreview,\n\tConnectDragSource,\n} from '../../types/index.js'\nimport type { DragSourceHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDragPreview, useConnectDragSource } from './connectors.js'\nimport { useDragSourceConnector } from './useDragSourceConnector.js'\nimport { useDragSourceMonitor } from './useDragSourceMonitor.js'\nimport { useRegisteredDragSource } from './useRegisteredDragSource.js'\n\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrag<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDragSourceHookSpec\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDragSource, ConnectDragPreview] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tinvariant(\n\t\t!(spec as any).begin,\n\t\t`useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)`,\n\t)\n\n\tconst monitor = useDragSourceMonitor()\n\tconst connector = useDragSourceConnector(spec.options, spec.previewOptions)\n\tuseRegisteredDragSource(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDragSource(connector),\n\t\tuseConnectDragPreview(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DragSourceMonitorImpl } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDragSourceMonitor(): DragSourceMonitor {\n\tconst manager = useDragDropManager()\n\treturn useMemo>(\n\t\t() => new DragSourceMonitorImpl(manager),\n\t\t[manager],\n\t)\n}\n","import { useMemo } from 'react'\n\nimport { SourceConnector } from '../../internals/index.js'\nimport type {\n\tDragPreviewOptions,\n\tDragSourceOptions,\n} from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDragSourceConnector(\n\tdragSourceOptions: DragSourceOptions | undefined,\n\tdragPreviewOptions: DragPreviewOptions | undefined,\n): SourceConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new SourceConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragSourceOptions = dragSourceOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragSource()\n\t}, [connector, dragSourceOptions])\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragPreviewOptions = dragPreviewOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragPreview()\n\t}, [connector, dragPreviewOptions])\n\treturn connector\n}\n","/**\n * @hidden\n */\nexport var ifElse = function (predicate, right, left) { return function (value) { return predicate(value) ? right(value) : left(value); }; };\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport var compose = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (data) { return args.reduceRight(function (acc, curr) { return curr(acc); }, data); };\n};\n/**\n * @hidden\n */\nexport var constant = function (x) { return function () { return x; }; };\n/**\n * @hidden\n */\nexport var identity = function (x) { return x; };\n","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isBlank = function (value) { return value === null || value === undefined; };\n/**\n * @hidden\n */\nexport var isArray = function (value) { return Array.isArray(value); };\n/**\n * @hidden\n */\nexport var isFunction = function (value) { return typeof value === 'function'; };\n/**\n * @hidden\n */\nexport var isString = function (value) { return typeof value === 'string'; };\n/**\n * @hidden\n */\nexport var isTruthy = function (value) { return !!value; };\n/**\n * @hidden\n */\nexport var isNullOrEmptyString = function (value) { return isBlank(value) || value.trim().length === 0; };\n/**\n * @hidden\n */\nexport var isNotNullOrEmptyString = function (value) { return !isNullOrEmptyString(value); };\n/**\n * @hidden\n */\nexport var isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n/**\n * @hidden\n */\nexport var isDate = function (value) { return value && value.getTime; };\n","import * as tslib_1 from \"tslib\";\nimport { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nvar serializeSort = function (orderby) {\n var str = orderby\n .filter(function (sort) { return isPresent(sort.dir); })\n .map(function (sort) {\n var order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? \"$orderby=\" + str : str;\n};\nvar emptyString = constant('');\nvar concat = function (a) { return function (b) { return a + b; }; };\nvar serializeKey = function (strings, val) { return ifElse(isPresent, concat(strings[0]), emptyString)(val); };\nvar rules = function (settings, state) { return function (key) { return ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"$skip=\", \"\"], [\"$skip=\", \"\"])), state.skip),\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"$top=\", \"\"], [\"$top=\", \"\"])), state.take)\n}[key]); }; };\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport var toODataString = function (state, settings) {\n if (settings === void 0) { settings = {}; }\n return (Object.keys(state)\n .map(rules(settings, state))\n .filter(isNotNullOrEmptyString)\n .join('&'));\n};\nvar templateObject_1, templateObject_2;\n","import { isPresent } from './utils';\nvar getterCache = {};\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport var getter = function (field, safe) {\n var key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n var fields = [];\n field.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","import * as tslib_1 from \"tslib\";\nimport { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nvar toQueryString = function (values) { return values.reduce(function (acc, _a) {\n var key = _a[0], value = _a[1];\n return acc.concat([key + \"=\" + value]);\n}, []); };\nvar toObject = function (values) { return values.reduce(function (acc, _a) {\n var key = _a[0], value = _a[1];\n var _b;\n return (tslib_1.__assign({}, acc, (_b = {}, _b[key] = value, _b)));\n}, {}); };\nvar pairwise = function (key) { return function (value) { return [key, value]; }; };\nvar empty = function () { return null; };\nvar isNotEmptyArray = function (value) { return isPresent(value) && isArray(value) && value.length > 0; };\nvar has = function (accessor) { return function (value) { return isPresent(accessor(value)); }; };\nvar isNotEmpty = function (accessor) { return function (value) { return isNotEmptyArray(accessor(value)); }; };\nvar runOrEmpty = function (predicate, fn) { return ifElse(predicate, fn, empty); };\nvar calcPage = function (_a) {\n var skip = _a.skip, take = _a.take;\n return Math.floor((skip || 0) / take) + 1;\n};\nvar formatDescriptors = function (accessor, formatter) { return function (state) { return (accessor(state).map(formatter).join(\"~\")); }; };\nvar removeAfter = function (what) { return function (str) { return str.slice(0, str.indexOf(what)); }; };\nvar replace = function (patterns) {\n return compose.apply(void 0, patterns.map(function (_a) {\n var left = _a[0], right = _a[1];\n return function (s) { return s.replace(new RegExp(left, \"g\"), right); };\n }));\n};\nvar sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nvar removeAfterDot = removeAfter(\".\");\nvar directionFormatter = function (_a) {\n var field = _a.field, _b = _a.dir, dir = _b === void 0 ? \"asc\" : _b;\n return field + \"-\" + dir;\n};\nvar aggregateFormatter = function (_a) {\n var field = _a.field, aggregate = _a.aggregate;\n return field + \"-\" + aggregate;\n};\nvar take = getter(\"take\");\nvar aggregates = getter(\"aggregates\");\nvar skip = getter(\"skip\");\nvar group = getter(\"group\");\nvar sort = getter(\"sort\", true);\nvar formatSort = formatDescriptors(sort, directionFormatter);\nvar formatGroup = formatDescriptors(group, directionFormatter);\nvar formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nvar prefixDateValue = function (value) { return \"datetime'\" + value + \"'\"; };\nvar formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nvar formatDate = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: formatDateValue(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\nvar normalizeSort = function (state) { return Object.assign({}, state, {\n sort: (sort(state) || []).filter(function (_a) {\n var dir = _a.dir;\n return isNotNullOrEmptyString(dir);\n })\n}); };\nvar transformSkip = compose(pairwise('page'), calcPage);\nvar transformTake = compose(pairwise('pageSize'), take);\nvar transformGroup = compose(pairwise('group'), formatGroup);\nvar transformSort = compose(pairwise('sort'), formatSort);\nvar transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nvar serializePage = runOrEmpty(has(skip), transformSkip);\nvar serializePageSize = runOrEmpty(has(take), transformTake);\nvar serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nvar serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nvar serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nvar hasField = function (_a) {\n var field = _a.field;\n return isNotNullOrEmptyString(field);\n};\nvar filterFormatter = function (_a) {\n var field = _a.field, operator = _a.operator, value = _a.value;\n return field + \"~\" + operator + \"~\" + value;\n};\nvar dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nvar typedFormatter = function (encode) { return runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter)); };\nvar join = function (_a) {\n var logic = _a.logic;\n return \"~\" + logic + \"~\";\n};\nvar serialize = function (encode) { return serializeFilters(function (filter) { return ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter); }, join); };\nvar serializeFilter = function (_a, encode) {\n var filter = _a.filter;\n if (filter && filter.filters) {\n var filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nvar rules = function (state, encode) {\n if (encode === void 0) { encode = true; }\n return function (key) { return ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n }[key]); };\n};\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport var toDataSourceRequestString = function (state) { return (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&')); };\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport var toDataSourceRequest = function (state) { return (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent))); };\n","/**\n * Represents the list of supported [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) operators.\n * Allows restricting `FilterDescriptor.operator` definition to available values only.\n */\nexport var FilterOperator;\n(function (FilterOperator) {\n /**\n * The `contains` operator.\n */\n FilterOperator[\"Contains\"] = \"contains\";\n /**\n * The `doesnotcontain` operator.\n */\n FilterOperator[\"DoesNotContain\"] = \"doesnotcontain\";\n /**\n * The `doesnotendwith` operator.\n */\n FilterOperator[\"DoesNotEndWith\"] = \"doesnotendwith\";\n /**\n * The `doesnotstartwith` operator.\n */\n FilterOperator[\"DoesNotStartWith\"] = \"doesnotstartwith\";\n /**\n * The `endswith` operator.\n */\n FilterOperator[\"EndsWith\"] = \"endswith\";\n /**\n * The `eq` operator.\n */\n FilterOperator[\"EqualTo\"] = \"eq\";\n /**\n * The `gt` operator.\n */\n FilterOperator[\"GreaterThan\"] = \"gt\";\n /**\n * The `gte` operator.\n */\n FilterOperator[\"GreaterThanOrEqual\"] = \"gte\";\n /**\n * The `isempty` operator.\n */\n FilterOperator[\"IsEmpty\"] = \"isempty\";\n /**\n * The `isnotempty` operator.\n */\n FilterOperator[\"IsNotEmpty\"] = \"isnotempty\";\n /**\n * The `isnotnull` operator.\n */\n FilterOperator[\"IsNotNull\"] = \"isnotnull\";\n /**\n * The `isnull` operator.\n */\n FilterOperator[\"IsNull\"] = \"isnull\";\n /**\n * The `lt` operator.\n */\n FilterOperator[\"LessThan\"] = \"lt\";\n /**\n * The `lte` operator.\n */\n FilterOperator[\"LessThanOrEqual\"] = \"lte\";\n /**\n * The `neq` operator.\n */\n FilterOperator[\"NotEqualTo\"] = \"neq\";\n /**\n * The `startswith` operator.\n */\n FilterOperator[\"StartsWith\"] = \"startswith\";\n})(FilterOperator || (FilterOperator = {}));\n","import * as tslib_1 from \"tslib\";\nimport { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport var wrapIf = function (predicate) { return function (str) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return predicate() ? \"\" + str[0] + args[0] + str[1] : args[0];\n}; };\n/**\n * @hidden\n */\nexport var toUTC = function (date) {\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n};\n/**\n * @hidden\n */\nexport var quote = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"'\" + value.replace(/'/g, \"''\") + \"'\",\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var encodeValue = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"\" + encodeURIComponent(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var toLower = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n field: wrapIf(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"tolower(\", \")\"], [\"tolower(\", \")\"])), field),\n value: value,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var normalizeField = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var isStringValue = function (x) { return isString(x.value); };\n/**\n * @hidden\n */\nexport var isDateValue = function (x) { return isDate(x.value); };\n/**\n * @hidden\n */\nexport var serializeFilters = function (map, join) { return function (filter) {\n var brackets = wrapIf(function () { return filter.filters.length > 1; });\n return brackets(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"(\", \")\"], [\"(\",\n \")\"])), filter.filters\n .map(map)\n .join(join(filter)));\n}; };\nvar templateObject_1, templateObject_2;\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nvar set = function (field, target, value) {\n target[field] = value;\n return target;\n};\nvar toCamelCase = function (str) { return str.replace(/(^[A-Z])/g, function (_, g1) { return g1.toLowerCase(); }); };\nvar prop = function (fieldName) { return function (obj) {\n var value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n}; };\nvar member = prop(\"Member\");\nvar aggregateMethodName = prop(\"AggregateMethodName\");\nvar value = prop(\"Value\");\nvar convert = function (mapper) { return function (values) { return Object.keys(values).reduce(mapper.bind(null, values), {}); }; };\nvar translateAggregate = convert(function (source, acc, field) { return set(field.toLowerCase(), acc, source[field]); });\nvar translateAggregates = convert(function (source, acc, field) { return set(field, acc, translateAggregate(source[field])); });\nvar valueOrDefault = function (value, defaultValue) { return isPresent(value) ? value : defaultValue; };\nvar normalizeGroup = function (group) { return ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n}); };\nvar translateGroup = compose(function (_a) {\n var field = _a.field, hasSubgroups = _a.hasSubgroups, value = _a.value, aggregates = _a.aggregates, items = _a.items;\n return ({\n aggregates: translateAggregates(aggregates),\n field: field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value: value\n });\n}, normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport var translateDataSourceResultGroups = function (data) { return data.map(translateGroup); };\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport var translateAggregateResults = function (data) { return ((data || []).reduce(function (acc, x) { return set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))); }, {})); };\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nvar compare = function (a, b) {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n};\nvar compareDesc = function (a, b) { return compare(b, a); };\nvar descriptorAsFunc = function (descriptor) {\n var prop = getter(descriptor.field, true);\n return function (a, b) { return (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b)); };\n};\nvar initial = function (_a, _b) { return 0; };\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport var composeSortDescriptors = function (descriptors) { return (descriptors\n .filter(function (x) { return isPresent(x.dir); })\n .map(function (descriptor) { return descriptorAsFunc(descriptor); })\n .reduce(function (acc, curr) { return function (a, b) { return acc(a, b) || curr(a, b); }; }, initial)); };\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nvar valueToString = function (value) {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport var groupCombinator = function (field) {\n var prop = getter(field, true);\n var position = 0;\n return function (agg, value) {\n agg[field] = agg[field] || {};\n var groupValue = prop(value);\n var key = valueToString(groupValue);\n var values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport var expandAggregates = function (result) {\n if (result === void 0) { result = {}; }\n Object.keys(result).forEach(function (field) {\n var aggregates = result[field];\n Object.keys(aggregates).forEach(function (aggregate) {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nvar aggregatesFuncs = function (name) { return ({\n average: function () {\n var value = 0;\n var count = 0;\n return {\n calc: function (curr) {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: function () { return isNumeric(value) ? value / count : value; }\n };\n },\n count: function () {\n var state = 0;\n return {\n calc: function () { return state++; },\n result: function () { return state; }\n };\n },\n max: function () {\n var state = Number.NEGATIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n min: function () {\n var state = Number.POSITIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n sum: function () {\n var state = 0;\n return {\n calc: function (value) {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: function () { return state; }\n };\n }\n}[name]()); };\n/**\n * @hidden\n */\nexport var aggregatesCombinator = function (descriptors) {\n var functions = descriptors.map(function (descriptor) {\n var fieldAccessor = getter(descriptor.field, true);\n var aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n var aggregateAccessor = getter(aggregateName, true);\n return function (state, value) {\n var fieldAggregates = state[descriptor.field] || {};\n var aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return function (state, value) { return functions.reduce(function (agg, calc) { return calc(agg, value); }, state); };\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport var concat = function (arr, value) {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport var map = function (transform) { return (function (reduce) { return (function (acc, curr, index) { return reduce(acc, transform(curr, index)); }); }); };\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport var filter = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n */\nexport var isTransformerResult = function (source) {\n return isPresent(source.__value);\n};\nvar reduced = function (x) {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var take = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- > 0 ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var takeWhile = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport var skip = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- <= 0 ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport var exec = function (transform, initialValue, data) {\n var result = initialValue;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport var isCompositeFilterDescriptor = function (source) {\n return isPresent(source.filters);\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nvar identity = map(function (x) { return x; });\n// tslint:disable:max-line-length\n/**\n * Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult]({% slug api_kendo-data-query_aggregateresult %}) configuration.\n */\n// tslint:enable:max-line-length\nexport var aggregateBy = function (data, descriptors, transformers) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n var initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n var result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nvar operatorMap = function (key) { return ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key); };\nvar normalizeOperator = function (descriptor) {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(function (filter) {\n var result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nvar normalizeDescriptor = function (descriptor) {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport var normalizeFilters = function (descriptor) {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nvar logic = {\n \"or\": {\n concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n identity: function () { return false; }\n },\n \"and\": {\n concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n identity: function () { return true; }\n }\n};\nvar operatorsMap = {\n contains: function (a, b) { return (a || \"\").indexOf(b) >= 0; },\n doesnotcontain: function (a, b) { return (a || \"\").indexOf(b) === -1; },\n doesnotendwith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n doesnotstartwith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === -1; },\n endswith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n eq: function (a, b) { return a === b; },\n gt: function (a, b) { return a > b; },\n gte: function (a, b) { return a >= b; },\n isempty: function (a) { return a === ''; },\n isnotempty: function (a) { return a !== ''; },\n isnotnull: function (a) { return isPresent(a); },\n isnull: function (a) { return isBlank(a); },\n lt: function (a, b) { return a < b; },\n lte: function (a, b) { return a <= b; },\n neq: function (a, b) { return a != b; },\n startswith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === 0; }\n};\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar convertValue = function (value, ignoreCase) {\n if (value != null && isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nvar typedGetter = function (prop, value, ignoreCase) {\n if (!isPresent(value)) {\n return prop;\n }\n var acc = prop;\n if (isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = function (a) {\n var x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n }\n else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return function (a) {\n var x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nvar transformFilter = function (_a) {\n var field = _a.field, ignoreCase = _a.ignoreCase, value = _a.value, operator = _a.operator;\n field = !isPresent(field) ? function (a) { return a; } : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n var itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n var op = isFunction(operator) ? operator : operatorsMap[operator];\n return function (a) { return op(itemProp(a), value, ignoreCase); };\n};\n/**\n * @hidden\n */\nexport var transformCompositeFilter = function (filter) {\n var combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(function (x) { return isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x); })\n .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport var compileFilter = function (descriptor) {\n if (!descriptor || descriptor.filters.length === 0) {\n return function () { return true; };\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport var filterBy = function (data, descriptor) {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","var merge = function (data, left, middle, right, compare) {\n var leftLength = middle - left;\n var rightLength = right - middle;\n var temp = [];\n for (var idx = 0; idx < leftLength; idx++) {\n temp.push(data[left + idx]);\n }\n var cursor1 = 0;\n var cursor2 = middle;\n var dest = left;\n do {\n if (compare(data[cursor2], temp[cursor1]) < 0) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n else {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n } while (rightLength > 0 && leftLength > 0);\n while (leftLength) {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n while (rightLength) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n};\n/**\n * @hidden\n */\nexport var sort = function (data, start, end, compare) {\n if (end - start < 2) {\n return;\n }\n var mid = (start + end) >>> 1; // tslint:disable-line:no-bitwise\n sort(data, start, mid, compare);\n sort(data, mid, end, compare);\n merge(data, start, mid, end, compare);\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport var normalizeGroups = function (descriptors) {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(function (x) { return Object.assign({ dir: \"asc\" }, x); });\n};\nvar identity = map(function (x) { return x; });\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport var groupBy = function (data, descriptors, transformers, originalData) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n if (originalData === void 0) { originalData = data; }\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n var descriptor = descriptors[0];\n var initialValue = {};\n var view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n var result = [];\n Object.keys(view).forEach(function (field) {\n Object.keys(view[field]).forEach(function (value) {\n var group = view[field][value];\n var aggregateResult = {};\n var filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","import { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\nimport { sort } from './sorting/sort';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = orderBy(data, [{ field: \"name\", dir: \"asc\" }]);\n * ```\n */\nexport var orderBy = function (data, descriptors) {\n if (descriptors.some(function (x) { return isPresent(x.dir); })) {\n data = data.slice(0);\n var comparer = composeSortDescriptors(descriptors);\n sort(data, 0, data.length, comparer);\n }\n return data;\n};\nvar defaultComparer = function (a, b) { return a === b; };\nvar normalizeComparer = function (comparer) {\n if (isString(comparer)) {\n var accessor_1 = getter(comparer);\n comparer = function (a, b) { return accessor_1(a) === accessor_1(b); };\n }\n return comparer;\n};\nvar _distinct = function (data, comparer) {\n return data.filter(function (x, idx, xs) { return xs.findIndex(comparer.bind(null, x)) === idx; });\n};\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport var distinct = function (data, comparer) {\n if (comparer === void 0) { comparer = defaultComparer; }\n return _distinct(data, normalizeComparer(comparer));\n};\n/**\n * @hidden\n */\nexport var count = function (data, predicate) {\n var counter = 0;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport var limit = function (data, predicate) {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport var process = function (data, state) {\n var skipCount = state.skip, takeCount = state.take, filterDescriptor = state.filter, sort = state.sort, group = state.group;\n var sortDescriptors = normalizeGroups(group || []).concat(sort || []);\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n var hasFilters = isPresent(filterDescriptor) && filter.length;\n var hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n var total;\n var transformers = [];\n var predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n }\n else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n var transform = compose.apply(void 0, transformers);\n var result = hasGroups ?\n groupBy(data, group, transform, limit(data, predicate)) :\n exec(transform(concat), [], data);\n return { data: result, total: total };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};\n","import React, { useState } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\"\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst BulkPicklistStringDialog = ({ onClose, onSave }) => {\r\n\r\n const { t } = useTranslation([\r\n \"attribute/picklist_field\",\r\n ]);\r\n\r\n const separators = [\r\n { name: t(\"space\"), value: \" \" },\r\n { name: t(\"comma\"), value: \",\" },\r\n { name: t(\"period\"), value: \".\" },\r\n { name: t(\"colon\"), value: \":\" },\r\n { name: t(\"semicolon\"), value: \";\" },\r\n { name: t(\"dash\"), value: \"-\" },\r\n { name: t(\"underscore\"), value: \"_\" },\r\n { name: t(\"forward_slash\"), value: \"/\" },\r\n { name: t(\"backslash\"), value: \"\\\\\" },\r\n { name: t(\"pipe\"), value: \"|\" },\r\n { name: t(\"tab\"), value: \"\\t\" },\r\n { name: t(\"newline\"), value: \"\\n\" },\r\n { name: t(\"carriage_return\"), value: \"\\r\" },\r\n { name: t(\"ampersand\"), value: \"&\" },\r\n { name: t(\"equals\"), value: \"=\" }\r\n ]\r\n\r\n const [picklistSeparator, setPicklistSeparator] = useState(separators[0]);\r\n const [picklistValues, setPicklistValues] = useState(\"\");\r\n const [isDisabled, setIsDisabled] = useState(false);\r\n\r\n const savePicklistValues = async(e) => {\r\n e.preventDefault();\r\n setIsDisabled(true);\r\n const dropDownValues = processValues();\r\n await onSave(dropDownValues);\r\n onClose();\r\n }\r\n\r\n const processValues = () => {\r\n const dropDownValues = picklistValues.split(picklistSeparator.value);\r\n for (let i = 0; i < dropDownValues.length; i++) {\r\n dropDownValues[i] = dropDownValues[i].trim();\r\n }\r\n const uniqueValues = [...new Set(dropDownValues)];\r\n const nonEmptyValues = uniqueValues.filter(value => value !== \"\");\r\n return nonEmptyValues;\r\n }\r\n\r\n const itemRender = (li, itemProps) => {\r\n const itemChildren = (\r\n \r\n {itemProps.dataItem.name} - \" {itemProps.dataItem.value} \"\r\n \r\n );\r\n return React.cloneElement(li, li.props, itemChildren);\r\n };\r\n\r\n const valueRender = (li, itemProps) => {\r\n const itemChildren = (\r\n \r\n {itemProps.name} - \" {itemProps.value} \"\r\n \r\n );\r\n return React.cloneElement(li, li.props, itemChildren);\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n setPicklistSeparator(e.target.value)}\r\n />\r\n
    \r\n
    \r\n \r\n setPicklistValues(e.target.value)}\r\n rows={8}\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 BulkPicklistStringDialog;","import React, { useState, useRef, useCallback, useEffect } from \"react\";\r\nimport { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\r\nimport { DndProvider } from \"react-dnd\";\r\nimport { useDrag, useDrop } from \"react-dnd\";\r\nimport update from \"immutability-helper\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport BulkPicklistStringDialog from \"./BulkPicklistStringDialog\";\r\n\r\nexport const PicklistDefaultValueField = ({ value, picklist, disabled, onChange }) => {\r\n\r\n\tconst [data, setData] = useState(getOptions || []);\t\r\n\r\n\tuseEffect(() => {\r\n\t\tsetData(getOptions());\r\n\t}, [picklist]);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetData(getOptions());\r\n\t}, [picklist]);\r\n\r\n\tfunction getOptions() {\r\n\t\tif (!picklist) return [];\r\n\t\tconst options = picklist.split(\"ɖ\");\r\n\t\treturn options;\r\n\t}\r\n\r\n\tconst filterData = (filter) => {\r\n\t\tconst dataToFilter = getOptions();\r\n\t\tif (!filter || filter === \"\") return dataToFilter;\r\n\t\tif (dataToFilter.length > 0) {\r\n\t\t\treturn filterBy(dataToFilter, filter);\r\n\t\t}\r\n\t\treturn [];\r\n\t};\r\n\r\n\tconst filterChange = (event) => {\r\n\t\tconst filteredData = filterData(event.filter);\r\n\t\tsetData(filteredData);\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport const DraggableCard = ({ id, text, index, onItemDragged, onItemEdited, onItemRemoved, onEnterKeyIsPressed, isFocused, duplicate }) => {\r\n\tconst ref = useRef(null);\r\n\r\n\tconst [{ handlerId }, drop] = useDrop({\r\n\t\taccept: \"DraggableCard\",\r\n\t\tcollect(monitor) {\r\n\t\t\treturn {\r\n\t\t\t\thandlerId: monitor.getHandlerId(),\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\thover(item, monitor) {\r\n\t\t\tif (!ref.current) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst dragIndex = item.index;\r\n\t\t\tconst hoverIndex = index;\r\n\t\t\t// Don't replace items with themselves\r\n\t\t\tif (dragIndex === hoverIndex) { return; }\r\n\t\t\t// Determine rectangle on screen\r\n\t\t\tconst hoverBoundingRect = ref.current?.getBoundingClientRect();\r\n\t\t\t// Get vertical middle\r\n\t\t\tconst hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\r\n\t\t\t// Determine mouse position\r\n\t\t\tconst clientOffset = monitor.getClientOffset();\r\n\t\t\t// Get pixels to the top\r\n\t\t\tconst hoverClientY = clientOffset.y - hoverBoundingRect.top;\r\n\t\t\t// Only perform the move when the mouse has crossed half of the items height\r\n\t\t\t// When dragging downwards, only move when the cursor is below 50%\r\n\t\t\t// When dragging upwards, only move when the cursor is above 50%\r\n\t\t\t// Dragging downwards\r\n\t\t\tif (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) { return; }\r\n\t\t\t// Dragging upwards\r\n\t\t\tif (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) { return; }\r\n\t\t\t// Time to actually perform the action\r\n\t\t\tonItemDragged(dragIndex, hoverIndex);\r\n\t\t\t// Note: we're mutating the monitor item here!\r\n\t\t\t// Generally it's better to avoid mutations,\r\n\t\t\t// but it's good here for the sake of performance\r\n\t\t\t// to avoid expensive index searches.\r\n\t\t\titem.index = hoverIndex;\r\n\t\t},\r\n\t});\r\n\r\n\tconst [{ isDragging }, drag] = useDrag({\r\n\t\ttype: \"DraggableCard\",\r\n\t\titem: () => { return { id, index }; },\r\n\t\tcollect: (monitor) => ({ isDragging: monitor.isDragging() }),\r\n\t});\r\n\r\n\tdrag(drop(ref));\r\n\r\n\tconst checkEnterKeyPressed = (e) => {\r\n\t\tif (e.key === 'Enter')\r\n\t\t\tonEnterKeyIsPressed();\r\n\t}\r\n\t//\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t checkEnterKeyPressed(e)}\r\n\t\t\t\tonChange={(e) => onItemEdited(e.target.value, index)} />\r\n\t\t\t onItemRemoved(index)}>\r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport const PicklistOptionsField = (props) => {\r\n\tconst splitChar = \"ɖ\";\r\n\tconst { disabled, autoFocus, value, addDropdownButtonText = \"Dropdown Values\", onBlur, onChange, onErr } = props;\r\n\tconst [collection, setCollection] = useState([]);\r\n\tconst [focus, setFocus] = useState(autoFocus);\r\n\tconst [showBulkPiclistStringDialog, setShowBulkPiclistStringDialog] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (collection.length === 0)\r\n\t\t\tif (value === \"\")\r\n\t\t\t\taddToCollection()\r\n\r\n\t\tsetFocus(autoFocus);\r\n\t\tsetCollection(value.split(splitChar));\r\n\t}, [props]);\r\n\r\n\tconst [val, setVal] = useState(\"\");\r\n\tconst ref = useRef(null);\r\n\r\n\tfunction handleChange(value) {\r\n\t\tonChange({\r\n\t\t\ttarget: {\r\n\t\t\t\tname: \"picklist\",\r\n\t\t\t\tvalue: value.join(splitChar),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction addToCollection() {\r\n\t\tonErr(\"\");\r\n\t\tsetCollection([...collection, \"\"]);\r\n\t\tsetVal(\"\");\r\n\t\thandleChange([...collection, \"\"]);\r\n\t\tsetFocus(true);\r\n\t}\r\n\r\n\tfunction handleEnterKey(e) {\r\n\t\tif (e.keyCode === 13) {\r\n\t\t\te.preventDefault();\r\n\t\t\taddToCollection();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction itemDeleted(index) {\r\n\t\tonErr(\"\");\r\n\t\tsetCollection(collection.filter((o, ix) => index !== ix));\r\n\t\thandleChange(collection.filter((o, ix) => index !== ix));\r\n\t}\r\n\r\n\tfunction itemValueChanged(val, index) {\r\n\t\tonErr(\"\");\r\n\t\tlet newValue = [...collection.slice(0, index), val, ...collection.slice(index + 1)];\r\n\t\tsetCollection(newValue);\r\n\t\thandleChange(newValue);\r\n\t}\r\n\r\n\tconst cardDragged = useCallback(\r\n\t\t(dragIndex, hoverIndex) => {\r\n\t\t\tconst dragCard = collection[dragIndex];\r\n\t\t\tconst v = update(collection, {\r\n\t\t\t\t$splice: [\r\n\t\t\t\t\t[dragIndex, 1],\r\n\t\t\t\t\t[hoverIndex, 0, dragCard],\r\n\t\t\t\t],\r\n\t\t\t});\r\n\t\t\tsetCollection(v);\r\n\t\t\thandleChange(v);\r\n\t\t},\r\n\t\t[collection]\r\n\t);\r\n\r\n\tfunction hasDuplicate(text, textIndex) {\r\n\t\treturn collection.some((item, itemIndex) => (\r\n\t\t\titem.trim().toLowerCase() === text.trim().toLowerCase() &&\r\n\t\t\titemIndex !== textIndex\r\n\t\t))\r\n\t}\r\n\r\n\tfunction addBulkPicklistValues(values) {\r\n\t\tconst filteredCollection = collection.filter((o) => o.trim() !== \"\");\r\n\t\tconst filteredValues = values.filter((o) => o.trim() !== \"\");\r\n\t\tconst newCollection = [...filteredCollection, ...filteredValues];\r\n\t\tsetCollection(newCollection);\r\n\t\thandleChange(newCollection);\r\n\t}\r\n\r\n\r\n\tif (props.showScrollable) {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{collection && collection.map((o, i) => (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t{collection && collection.map((o, i) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t setShowBulkPiclistStringDialog(true)}\r\n\t\t\t\tclassName=\"btn hover-bg-7 hover-border-0 float-end form-label d-inline-block t-primary pointer font-size-2\">\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{showBulkPiclistStringDialog &&\r\n\t\t\t\t setShowBulkPiclistStringDialog(false)}\r\n\t\t\t\t\tonSave={addBulkPicklistValues}\r\n\t\t\t\t/>\r\n\t\t\t}\r\n\t\t
    \r\n\t);\r\n};\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { PicklistOptionsField } from \"../../../Attributes/Fields/PicklistStringFields\";\r\nimport { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\n// TODO: Add translation object for the following EditPicklistDialog component\r\nfunction EditPicklistDialog({ attribute, onClose, onSubmit, onCancel, title = \"Edit Dropdown Values\", addOptionText = \"Dropdown Value\" }) {\r\n\r\n const { t } = useTranslation();\r\n\r\n const SEPARATOR = 'ɖ';\r\n\r\n const defaultPicklist = attribute.picklist;\r\n\r\n const picklistInDesignerFormat = defaultPicklist.join(SEPARATOR);\r\n const [picklist, setPicklist] = useState(picklistInDesignerFormat);\r\n const [isPicklistValid, setIsPicklistValid] = useState(false);\r\n\r\n function handleClose() {\r\n onClose();\r\n }\r\n\r\n function handleSubmit() {\r\n onSubmit(picklist.split(SEPARATOR));\r\n }\r\n\r\n function handleCancel() {\r\n onCancel();\r\n }\r\n\r\n function handlePicklistChange(event) {\r\n setPicklist(event.target.value);\r\n const isValid = validatePicklist(event.target.value);\r\n setIsPicklistValid(isValid);\r\n }\r\n\r\n function validatePicklist(picklistValue) {\r\n const picklist = picklistValue.split(SEPARATOR);\r\n const duplicate = picklist.some((item, itemIndex) => (\r\n picklist.some((other, otherIndex) => (\r\n item.trim().toLowerCase() === other.trim().toLowerCase() && itemIndex !== otherIndex\r\n ))\r\n ));\r\n const hasEmpty = picklist.some(item => item !== undefined && item.trim() === '');\r\n const hasPicklistSame = picklistInDesignerFormat === picklistValue;\r\n return picklist.length > 0 && !duplicate && !hasEmpty && !hasPicklistSame;\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\nexport default EditPicklistDialog;","export function convertTypeToDesignerType(type) {\r\n switch (type) {\r\n case \"string\":\r\n return \"String\";\r\n case \"number\":\r\n return \"Number_Integer\";\r\n case \"boolean\":\r\n return \"Boolean\";\r\n case \"date\":\r\n return \"DateTime_Date\";\r\n case \"reference\":\r\n return \"String\";\r\n case \"longtext\":\r\n return \"Multiline Text\";\r\n case \"email\":\r\n return \"Email\";\r\n case \"picklist\":\r\n return \"Picklist String\";\r\n case \"user\":\r\n return \"User Identity\";\r\n case \"state\":\r\n return \"State Field\";\r\n default:\r\n return \"String\";\r\n }\r\n}","import React from \"react\";\r\nimport i18n from \"../../../i18n\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport function bindI18nEvents() {\r\n\ti18n.on(\"loaded\", () => {\r\n\t\ti18n.loadNamespaces(\"common/attribute_type_field\");\r\n\t\tupdateTranslations();\r\n\t})\r\n\ti18n.on(\"languageChanged\", () => {\r\n\t\ti18n.loadNamespaces(\"common/attribute_type_field\");\r\n\t\tupdateTranslations();\r\n\t})\r\n}\r\n\r\nfunction updateTranslations() {\r\n\tObject.keys(typeText).forEach((key) => {\r\n\t\tif (i18n.hasLoadedNamespace(\"common/attribute_type_field\")) {\r\n\t\t\ttypeText[key] = i18n.t(key, { ns: \"common/attribute_type_field\" });\r\n\t\t}\r\n\t})\r\n}\r\n\r\nexport const typeText = {\r\n\tString: \"Text\",\r\n\t\"Picklist String\": \"Dropdown\",\r\n\tNumber: \"Number\",\r\n\tDateTime: \"Date Time\",\r\n\t\"User Identity\": \"User Identity\",\r\n\tEmail: \"Email\",\r\n\tURL: \"Link\",\r\n\tHtml: \"Rich Content\",\r\n\tBoolean: \"True/False\",\r\n\t\"Multiline Text\": \"Long Text\",\r\n\tTags: \"Tags\",\r\n\t\"Entity Lookup\": \"Referenced Property\",\r\n\t\"State Field\": \"State\",\r\n\t\"Shared Lookup\": \"Shared Property\",\r\n\t\"Tree Dropdown\": \"Tree Dropdown\",\r\n};\r\n\r\nconst AttributeTypeField = ({ attributeType }) => {\r\n\tconst { t } = useTranslation(\"common/attribute_type_field\");\r\n\tconst getTypeValue = (type) => {\r\n\t\tconst translatedType = t(typeText[type] || type);\r\n\t\treturn translatedType;\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n\r\n};\r\n\r\nAttributeTypeField.displayName = \"AttributeTypeField\";\r\n\r\nexport default AttributeTypeField;\r\n","import { useTranslation } from \"react-i18next\";\r\nimport { getDatalakeImageUrl } from \"../../../Helpers/DateLakeStorage\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\n// TODO: Support translation for this component\r\nfunction FailedToLoadError({ error }) {\r\n\r\n const { t } = useTranslation(\"common/failed_to_load_error\", { useSuspense: false });\r\n const [message, setMessage] = useState(t(\"failed_to_load_error\"));\r\n\r\n useEffect(() => {\r\n if (error) {\r\n if (typeof error === 'string') {\r\n setMessage(error)\r\n } else {\r\n setMessage(error.message);\r\n }\r\n }\r\n }, [])\r\n\r\n return (\r\n
    \r\n \r\n

    \r\n { message }\r\n

    \r\n
    \r\n )\r\n}\r\n\r\nexport default FailedToLoadError;","import { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport i18n from \"../../../i18n\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport function bindI18nEvents() {\r\n i18n.on(\"loaded\", () => {\r\n i18n.loadNamespaces(\"common/attribute_type_dropdown\");\r\n updateTranslations();\r\n })\r\n i18n.on(\"languageChanged\", () => {\r\n i18n.loadNamespaces(\"common/attribute_type_dropdown\");\r\n updateTranslations();\r\n })\r\n}\r\n\r\nfunction updateTranslations() {\r\n const fdfd = recommendationAttributeType;\r\n recommendationAttributeType.forEach((item) => {\r\n item.text = i18n.t(item.value, { ns: \"common/attribute_type_dropdown\"});\r\n })\r\n}\r\n\r\nexport const recommendationAttributeType = [\r\n {\r\n \"text\": \"Text\",\r\n \"value\": \"String\"\r\n },\r\n {\r\n \"text\": \"Number - Integer\",\r\n \"value\": \"Number_Integer\"\r\n },\r\n {\r\n \"text\": \"Number - Decimal\",\r\n \"value\": \"Number_Decimal\"\r\n },\r\n {\r\n \"text\": \"Dropdown\",\r\n \"value\": \"Picklist String\"\r\n },\r\n {\r\n \"text\": \"Date Time - Date\",\r\n \"value\": \"DateTime_Date\"\r\n },\r\n {\r\n \"text\": \"Date Time - DateTime\",\r\n \"value\": \"DateTime\"\r\n },\r\n {\r\n \"text\": \"Date Time - Time\",\r\n \"value\": \"DateTime_Time\"\r\n },\r\n {\r\n \"text\": \"User Identity\",\r\n \"value\": \"User Identity\"\r\n },\r\n {\r\n \"text\": \"Email\",\r\n \"value\": \"Email\"\r\n },\r\n {\r\n \"text\": \"Link\",\r\n \"value\": \"URL\"\r\n },\r\n {\r\n \"text\": \"Rich Content\",\r\n \"value\": \"Html\"\r\n },\r\n {\r\n \"text\": \"True/False\",\r\n \"value\": \"Boolean\"\r\n },\r\n {\r\n \"text\": \"Long Text\",\r\n \"value\": \"Multiline Text\"\r\n },\r\n {\r\n \"text\": \"Tags\",\r\n \"value\": \"Tags\"\r\n },\r\n {\r\n \"text\": \"State\",\r\n \"value\": \"State Field\"\r\n }\r\n];\r\n\r\nfunction AttributeTypeDropdown({ value, onChange }) {\r\n\r\n const { t } = useTranslation(\"common/attribute_type_dropdown\", {\r\n useSuspense: false\r\n });\r\n\r\n const [data, setData] = useState([]);\r\n\r\n useEffect(() => {\r\n const data = recommendationAttributeType.map((item) => {\r\n return {\r\n text: t(item.value),\r\n value: item.value\r\n }\r\n });\r\n setData(data);\r\n }, [])\r\n\r\n const valueObject = data.find((item) => item.value === value);\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default AttributeTypeDropdown;","import { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { getAliceRecommendedAttributes } from \"../../../../API/AliceGPT/AliceGPT\";\r\nimport { ATTRIBUTE_DESELECTED, ATTRIBUTE_PICKLIST_UPDATED, ATTRIBUTE_SELECTED, ATTRIBUTE_TYPE_CHANGED, TOGGLE_SELECT_ALL_ATTRIBUTES } from \"../../../../Context/AliceGPT/AliceGPTContextEvents\";\r\nimport useAliceGPT from \"../../../../Hooks/AliceGPT/useAliceGPT\";\r\nimport EditPicklistDialog from \"./EditPicklistDialog\";\r\nimport Loader from \"../../../Shared/Loader/loader\";\r\nimport InnerLoader from \"../../../Shared/Loader/InnerLoader\";\r\nimport { getDatalakeImageUrl } from \"../../../Helpers/DateLakeStorage\";\r\nimport { convertTypeToDesignerType } from \"../../../Helpers/Recommendation/AliceGPT\";\r\nimport { bindI18nEvents as bindAttributeTypeFieldi18n, typeText } from \"../../../Attributes/Fields/AttributeTypeField\";\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\nimport FailedToLoadError from \"../../../Shared/Recommendation/Error/FailedToLoadError\";\r\nimport AttributeTypeDropdown, { bindI18nEvents as bindAttributeTypeDropdowni18n, recommendationAttributeType } from \"../../../Shared/Recommendation/AttributeTypeDropdown\";\r\nimport { ENTITY_LABEL } from \"../../../Helpers/Labels/EntityLabel\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport Scrollable from \"../../../Shared/Edit/Scrollable\";\r\n\r\nfunction AliceRecommendedAttributesList({ isFromExtension }) {\r\n\r\n const inputRef = useRef(null);\r\n const { t } = useTranslation(\"create_project/alice_recommended_attributes_list\", { useSuspense: false });\r\n\r\n const [state, dispatch] = useAliceGPT();\r\n\r\n const [loading, setLoading] = useState({});\r\n const [fetchingMore, setFetchingMore] = useState({});\r\n const [picklistAttributeToEdit, setPicklistAttributeToEdit] = useState(null);\r\n const [editAttributeTypeIndex, setEditAttributeTypeIndex] = useState(-1);\r\n\r\n let numSelectedAttributes = state.selectedEntity.attributes.filter(attribute => attribute.selected).length;\r\n\r\n useEffect(() => {\r\n bindAttributeTypeFieldi18n()\r\n bindAttributeTypeDropdowni18n();\r\n }, []);\r\n\r\n useEffect(() => {\r\n setEditAttributeTypeIndex(-1);\r\n }, [state?.selectedEntity?.name]);\r\n\r\n // useEffect(() => {\r\n // if (\r\n // !loading[state.selectedEntity.name] &&\r\n // state.selectedEntity &&\r\n // state.selectedEntity.name &&\r\n // (\r\n // !state.selectedEntity.attributes ||\r\n // state.selectedEntity.attributes.length === 0\r\n // )\r\n // ) {\r\n // setLoading(prevValue => ({ ...prevValue, [state.selectedEntity.name]: true }));\r\n // getAliceRecommendedAttributes(state.selectedEntity.name, state.form.model, \"\", state.form.domain, state.form.description)\r\n // .then(response => {\r\n // const attributes = response.map(attributesToStateArrayElement);\r\n // dispatch({\r\n // type: \"ATTRIBUTES_LOADED\",\r\n // payload: {\r\n // attributes,\r\n // entityName: state.selectedEntity.name\r\n // }\r\n // });\r\n // })\r\n // .catch(error => {\r\n // console.log(error);\r\n // })\r\n // .finally(() => {\r\n // setLoading(prevValue => ({ ...prevValue, [state.selectedEntity.name]: false }));\r\n // });\r\n // }\r\n // }, [state.selectedEntity.name]);\r\n\r\n async function getAttributes() {\r\n let counter = 0;\r\n dispatch({ type: \"ENTITY_ATTRIBUTE_LOADING_STARTED\", payload: { entityName: state.selectedEntity.name } });\r\n try {\r\n const attributes = await getAliceRecommendedAttributes(\r\n state.selectedEntity.name, state.form.model, \"\", state.form.domain, state.form.description, isFromExtension\r\n );\r\n const attributesWithPicklist = attributes.map(attributesToStateArrayElement);\r\n dispatch({\r\n type: \"ATTRIBUTES_LOADED\",\r\n payload: {\r\n attributes: attributesWithPicklist,\r\n entityName: state.selectedEntity.name\r\n }\r\n });\r\n } catch (error) {\r\n dispatch({ type: \"ENTITY_ATTRIBUTE_LOADING_FAILED\", payload: { entityName: state.selectedEntity.name } });\r\n } finally {\r\n counter++;\r\n }\r\n }\r\n\r\n function attributesToStateArrayElement(attribute) {\r\n return {\r\n name: attribute[0],\r\n type: convertTypeToDesignerType(attribute[1]),\r\n picklist: attribute[2] || \"\",\r\n required: attribute[3],\r\n unique: attribute[4],\r\n checked: false,\r\n selected: false,\r\n disabled: attribute.disabled\r\n }\r\n }\r\n\r\n function toggleAttributeCheckbox(attribute, index) {\r\n if (attribute.selected) {\r\n deselectAttribute(attribute, index);\r\n } else {\r\n selectAttribute(attribute, index);\r\n }\r\n }\r\n\r\n function selectAttribute(attribute, index) {\r\n dispatch({\r\n type: ATTRIBUTE_SELECTED,\r\n payload: {\r\n entityName: state.selectedEntity.name,\r\n attributeName: attribute.name,\r\n attributeIndex: index\r\n }\r\n });\r\n }\r\n\r\n function deselectAttribute(attribute, index) {\r\n dispatch({\r\n type: ATTRIBUTE_DESELECTED,\r\n payload: {\r\n entityName: state.selectedEntity.name,\r\n attributeName: attribute.name,\r\n attributeIndex: index\r\n }\r\n });\r\n }\r\n\r\n function handleShowMore() {\r\n setFetchingMore(prevValue => ({ ...prevValue, [state.selectedEntity.name]: true }));\r\n const attributesToSkip = areSomeAttributesSelected()\r\n ? getSelectedAttributesString()\r\n : getAllAttributesString();\r\n getAliceRecommendedAttributes(state.selectedEntity.name, state.form.model, attributesToSkip, state.form.domain, state.form.description, state.form.language?.code, isFromExtension)\r\n .then(response => {\r\n const attributes = response.map(attributesToStateArrayElement);\r\n dispatch({\r\n type: \"ATTRIBUTES_ADDED\",\r\n payload: {\r\n attributes,\r\n entityName: state.selectedEntity.name\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n })\r\n .finally(() => {\r\n setFetchingMore(prevValue => ({ ...prevValue, [state.selectedEntity.name]: false }));\r\n });\r\n }\r\n\r\n function areSomeAttributesSelected() {\r\n return state.selectedEntity.attributes.some(attribute => attribute.selected);\r\n }\r\n\r\n function getSelectedAttributesString() {\r\n return state.selectedEntity.attributes\r\n .filter(attribute => attribute.selected)\r\n .map(attribute => attribute.name)\r\n .join(\",\");\r\n }\r\n\r\n function getAllAttributesString() {\r\n return state.selectedEntity.attributes\r\n .map(attribute => attribute.name)\r\n .join(\",\");\r\n }\r\n\r\n function handleEditPicklistClick(attribute) {\r\n setPicklistAttributeToEdit(attribute);\r\n }\r\n\r\n function handlePicklistUpdate(picklist) {\r\n dispatch({\r\n type: ATTRIBUTE_PICKLIST_UPDATED,\r\n payload: {\r\n entityName: state.selectedEntity.name,\r\n attributeName: picklistAttributeToEdit.name,\r\n picklist\r\n }\r\n });\r\n handleEditPicklistClick(null);\r\n }\r\n\r\n function handleAttributeTypeClick(event, index) {\r\n setEditAttributeTypeIndex(index);\r\n }\r\n\r\n function handleAttributeTypeChange(event, index) {\r\n dispatch({\r\n type: ATTRIBUTE_TYPE_CHANGED,\r\n payload: {\r\n entityName: state.selectedEntity.name,\r\n index,\r\n type: event.target.value.value\r\n }\r\n })\r\n clearEditAttributeIndex()\r\n }\r\n\r\n function clearEditAttributeIndex() {\r\n setEditAttributeTypeIndex(-1);\r\n }\r\n\r\n function getAttributeType(attributeType) {\r\n const type = recommendationAttributeType.find((item) => item.value === attributeType);\r\n return type ? type.text : \"\";\r\n }\r\n\r\n function toggleEditAttribute(index) {\r\n return () => {\r\n dispatch({\r\n type: \"TOGGLE_EDIT_ATTRIBUTE\",\r\n payload: {\r\n entityName: state.selectedEntity.name,\r\n attributeIndex: index\r\n }\r\n })\r\n }\r\n }\r\n\r\n function handleAttributeNameChange(index) {\r\n return (event) => {\r\n dispatch({\r\n type: \"ATTRIBUTE_NAME_CHANGED\",\r\n payload: {\r\n entityName: state.selectedEntity.name,\r\n attributeIndex: index,\r\n newAttributeName: inputRef.current.value\r\n }\r\n })\r\n dispatch({\r\n type: \"TOGGLE_EDIT_ATTRIBUTE\",\r\n payload: {\r\n entityName: state.selectedEntity.name,\r\n attributeIndex: index\r\n }\r\n })\r\n }\r\n }\r\n\r\n function hasDuplicateAttributeNames() {\r\n return state.selectedEntity.attributes.some((attribute, index) => attribute.selected && isNameReused(attribute.name, index));\r\n }\r\n\r\n function hasEmptyAttributeNames() {\r\n return state.selectedEntity.attributes.some(attribute => attribute.selected && attribute.name.trim().length === 0);\r\n }\r\n\r\n function hasAttributeNameStartingWithNumber() {\r\n return state.selectedEntity.attributes.some(attribute => attribute.selected && /^\\d/g.test(attribute.name));\r\n }\r\n\r\n function hasMultipleStateFields() {\r\n return state.selectedEntity.attributes.filter(attribute => attribute.selected && attribute.type === \"State Field\").length > 1;\r\n }\r\n\r\n function hasAttributeNameWithMoreThan30Characters() {\r\n return state.selectedEntity.attributes.some(attribute => attribute.selected && attribute.name.length > 30);\r\n }\r\n\r\n function isNameReused(name, index) {\r\n const isSelected = state.selectedEntity.attributes[index].selected;\r\n if (isSelected) {\r\n return state.selectedEntity\r\n .attributes\r\n .some((attribute, aI) => (\r\n attribute.selected &&\r\n attribute.name.trim().toLowerCase() === name.trim().toLowerCase() &&\r\n aI !== index\r\n ));\r\n }\r\n return false;\r\n }\r\n\r\n function isMultipleStateAttirbutesType(type, index) {\r\n if (type === \"State Field\") {\r\n const isCurrentSelected = state.selectedEntity.attributes[index].selected;\r\n if (isCurrentSelected) {\r\n return state.selectedEntity.attributes.some((attribute, aI) => (\r\n attribute.selected && attribute.type === type && aI !== index\r\n ));\r\n }\r\n return false; \r\n }\r\n }\r\n\r\n if (state.selectedEntity && state.selectedEntity.name && state.selectedEntity.attributesLoading) {\r\n return (\r\n
    \r\n \"\"\r\n

    \r\n {t(\"loading_message\")}\r\n

    \r\n
    \r\n )\r\n }\r\n\r\n if (state.selectedEntity && state.selectedEntity.name && state.selectedEntity.hasAttributeLoadingError) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {\r\n picklistAttributeToEdit &&\r\n handleEditPicklistClick(null)}\r\n onClose={() => handleEditPicklistClick(null)}\r\n onSubmit={handlePicklistUpdate} />\r\n }\r\n
      \r\n
    • \r\n
      \r\n attribute.selected)}\r\n value={state.selectedEntity.attributes.every(attribute => attribute.selected)}\r\n onChange={() => {\r\n dispatch({\r\n type: TOGGLE_SELECT_ALL_ATTRIBUTES,\r\n payload: { entityName: state.selectedEntity.name }\r\n })\r\n }} />\r\n  \r\n \r\n \r\n {t(\"drawer.select_all.label\")}  \r\n \r\n \r\n \r\n
      \r\n {\r\n numSelectedAttributes > state.subscription.maxAttributesPerApp &&\r\n
      \r\n {t(\"drawer.max_attributes_exceeded\", { maxAttributes: state.subscription.maxAttributesPerApp })}\r\n
      \r\n }\r\n {\r\n hasDuplicateAttributeNames() &&\r\n
      \r\n {t(\"drawer.duplicate_attribute_names\")}\r\n
      \r\n }\r\n {\r\n hasEmptyAttributeNames() &&\r\n
      \r\n {t(\"drawer.blank_attribute_names\")}\r\n
      \r\n }\r\n {\r\n hasAttributeNameStartingWithNumber() &&\r\n
      \r\n {t(\"drawer.attribute_names_starting_with_number\")}\r\n
      \r\n }\r\n {\r\n hasMultipleStateFields() &&\r\n
      \r\n {t(\"drawer.multiple_state_attributes\")}\r\n
      \r\n }\r\n {\r\n hasAttributeNameWithMoreThan30Characters() &&\r\n
      \r\n {t(\"drawer.attribute_names_more_than_30_characters\")}\r\n
      \r\n }\r\n
    • \r\n {\r\n state.selectedEntity.attributes &&\r\n state.selectedEntity.attributes.map((attribute, index) => (\r\n
    • \r\n {\r\n attribute.inEdit ?\r\n
      \r\n {\r\n if (e.key === \"Enter\") {\r\n handleAttributeNameChange(index)(e);\r\n }\r\n }}\r\n />\r\n    \r\n \r\n
      \r\n :\r\n <>\r\n toggleAttributeCheckbox(attribute, index)}\r\n label={attribute.name}\r\n />\r\n  \r\n {\r\n (\r\n isNameReused(attribute.name, index) ||\r\n attribute.name.trim().length === 0 ||\r\n /^\\d/g.test(attribute.name) ||\r\n isMultipleStateAttirbutesType(attribute.type, index) ||\r\n attribute.name.trim().length > 30\r\n ) &&\r\n \r\n \r\n \r\n }\r\n -\r\n  \r\n {\r\n editAttributeTypeIndex === index ?\r\n
      \r\n
      \r\n handleAttributeTypeChange(event, index)} />\r\n
      \r\n   \r\n \r\n
      \r\n :\r\n {\r\n if (!attribute.isAzureAttribute) {\r\n handleAttributeTypeClick(e, index)\r\n }\r\n }}\r\n >\r\n {getAttributeType(attribute.type)}\r\n \r\n }\r\n {\r\n (attribute.type === \"Picklist String\" || attribute.type === \"State Field\") &&\r\n attribute.picklist.length > 0 &&\r\n ` - ${attribute.picklist.join(\", \")}`\r\n }\r\n {\r\n (attribute.type === \"Picklist String\" || attribute.type === \"State Field\") &&\r\n handleEditPicklistClick(attribute)}>\r\n {t(\"drawer.edit\")} {attribute.type === \"Picklist String\" ? t(\"drawer.dropdown\") : t(\"drawer.state\")} {t(\"drawer.values\")}\r\n \r\n }\r\n {\r\n !attribute.isAzureAttribute &&\r\n \r\n }\r\n \r\n }\r\n {\r\n (attribute.type === \"Picklist String\" || attribute.type === \"State Field\") &&\r\n attribute.picklist.length === 0 &&\r\n \r\n {\r\n attribute.type === \"Picklist String\" ?\r\n t(\"drawer.no_dropdown_values\") :\r\n t(\"drawer.no_state_values\")\r\n }\r\n \r\n }\r\n
    • \r\n ))}\r\n {\r\n !loading[state.selectedEntity.name] &&\r\n !state.selectedEntity.hadNoMoreAttributes &&\r\n
    • \r\n \r\n {t(\"drawer.show_more\")} {fetchingMore[state.selectedEntity.name] && }\r\n \r\n
    • \r\n }\r\n {\r\n state.selectedEntity.hadNoMoreAttributes &&\r\n \r\n {t(\"drawer.no_more_recommendations\")}\r\n \r\n }\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default AliceRecommendedAttributesList;","export const USER_PROFILE_ENTITY = {\r\n name: \"User Profile\",\r\n icon: \"fa-regular fa-user\",\r\n checked: true,\r\n disabled: true,\r\n isStatic: true,\r\n isUserEntity: true,\r\n attributesLoading: false,\r\n attributes: [\r\n {\r\n language_key: \"first_name\",\r\n name: \"First Name\",\r\n sysName: \"firstname\",\r\n type: \"String\",\r\n picklist: null,\r\n required: true,\r\n unique: false,\r\n checked: false,\r\n selected: true,\r\n disabled: true,\r\n isAzureAttribute: true\r\n },\r\n {\r\n language_key: \"last_name\",\r\n name: \"Last Name\",\r\n sysName: \"lastname\",\r\n type: \"String\",\r\n picklist: null,\r\n required: true,\r\n unique: false,\r\n checked: false,\r\n selected: true,\r\n disabled: true,\r\n isAzureAttribute: true\r\n },\r\n {\r\n language_key: \"display_name\",\r\n name: \"Display Name\",\r\n sysName: \"displayname\",\r\n type: \"String\",\r\n picklist: null,\r\n required: true,\r\n unique: false,\r\n checked: false,\r\n selected: true,\r\n disabled: true,\r\n isAzureAttribute: true\r\n },\r\n {\r\n language_key: \"email\",\r\n name: \"Email\",\r\n sysName: \"email\",\r\n type: \"String\",\r\n picklist: null,\r\n required: false,\r\n unique: false,\r\n checked: false,\r\n selected: true,\r\n disabled: true,\r\n isAzureAttribute: true\r\n },\r\n {\r\n language_key: \"phone\",\r\n name: \"Phone\",\r\n sysName: \"phone\",\r\n type: \"String\",\r\n picklist: null,\r\n required: false,\r\n unique: false,\r\n checked: false,\r\n selected: true,\r\n disabled: true,\r\n isAzureAttribute: true\r\n },\r\n {\r\n language_key: \"country\",\r\n name: \"Country\",\r\n sysName: \"country\",\r\n type: \"String\",\r\n picklist: null,\r\n required: false,\r\n unique: false,\r\n checked: false,\r\n selected: true,\r\n disabled: true,\r\n isAzureAttribute: true\r\n },\r\n ],\r\n pageConfiguration: {\r\n shouldCreateTable: true,\r\n shouldCreateSplitView: true,\r\n shouldCreateKanban: false,\r\n shouldCreateCards: false,\r\n shouldCreateCalendar: false,\r\n shouldCreateGanttChart: false,\r\n shouldCreateDetailsView: true,\r\n shouldCreateEditRecord: true,\r\n shouldCreateNewRecord: false,\r\n isKanbanDisabled: true,\r\n isCalendarDisabled: true,\r\n isGanttChartDisabled: true\r\n }\r\n}\r\n\r\nexport const USER_TO_USER_RELATION = {\r\n from: USER_PROFILE_ENTITY.name,\r\n to: USER_PROFILE_ENTITY.name,\r\n cardinality: \"1-*\",\r\n showReferenceAttribute: true,\r\n referenceAttribute: \"Display Name\",\r\n checked: false,\r\n selected: true,\r\n isStatic: true,\r\n isRequired: true,\r\n isUserProfileRelation: true\r\n};\r\n\r\nexport const DEFAULT_PAGE_CONFIGURATION = {\r\n shouldCreateTable: true,\r\n shouldCreateSplitView: true,\r\n shouldCreateKanban: false,\r\n shouldCreateCards: false,\r\n shouldCreateCalendar: false,\r\n shouldCreateGanttChart: false,\r\n shouldCreateDetailsView: true,\r\n shouldCreateEditRecord: true,\r\n shouldCreateNewRecord: true,\r\n isKanbanDisabled: false,\r\n isCalendarDisabled: false,\r\n isGanttChartDisabled: false\r\n}\r\n\r\nexport function getUserProfileEntityWithTranslation(t) {\r\n return {\r\n ...USER_PROFILE_ENTITY,\r\n name: t(\"user_profile.entity_name\"),\r\n attributes: USER_PROFILE_ENTITY.attributes.map(attribute => {\r\n return {\r\n ...attribute,\r\n name: t(`user_profile.attribute_labels.${attribute.language_key}`)\r\n }\r\n })\r\n }\r\n}","import { createContext } from 'react';\r\n\r\nconst initialState = {\r\n local: {\r\n isUserProfileEntityFeatureEnabled: true\r\n },\r\n dev: {\r\n isUserProfileEntityFeatureEnabled: true\r\n },\r\n test: {\r\n isUserProfileEntityFeatureEnabled: true\r\n },\r\n production: {\r\n isUserProfileEntityFeatureEnabled: true\r\n }\r\n}\r\n\r\nconst FeatureFlagContext = createContext(initialState);\r\n\r\nexport const FeatureFlagProvider = ({ children }) => {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport default FeatureFlagContext;","import { useContext } from \"react\";\r\nimport FeatureFlagContext from \"../../Context/FeatureFlag/FeatureFlagContext\";\r\n\r\nfunction useFeatureFlags() {\r\n const featureFlags = useContext(FeatureFlagContext);\r\n\r\n const environment = process.env.REACT_APP_INSTANCE;\r\n\r\n return featureFlags[environment];\r\n}\r\n\r\nexport default useFeatureFlags;","import { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { Drawer, DrawerContent, DrawerItem } from '@progress/kendo-react-layout';\r\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { getAliceRecommendedAttributes, getAliceRecommendedEntities } from '../../../../API/AliceGPT/AliceGPT';\r\nimport * as AliceGPTEvents from '../../../../Context/AliceGPT/AliceGPTContextEvents';\r\nimport useAliceGPT from '../../../../Hooks/AliceGPT/useAliceGPT';\r\nimport Scrollable from '../../../Shared/Edit/Scrollable';\r\nimport AliceRecommendedAttributesList from './AliceRecommendedAttributesList';\r\nimport Loader from '../../../Shared/Loader/loader';\r\nimport InnerLoader from '../../../Shared/Loader/InnerLoader';\r\nimport { getUserProfileEntityWithTranslation, USER_PROFILE_ENTITY } from './variables';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\nimport { getDatalakeImageUrl } from '../../../Helpers/DateLakeStorage';\r\nimport useFeatureFlags from '../../../../Hooks/FeatureFlag/useFeatureFlags';\r\nimport FailedToLoadError from '../../../Shared/Recommendation/Error/FailedToLoadError';\r\nimport { convertTypeToDesignerType } from \"../../../Helpers/Recommendation/AliceGPT\";\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nfunction AliceRecommendedEntities({ isFromExtension }) {\r\n\r\n const currentInput = useRef(null);\r\n const currentInputs = {};\r\n const currentEditButton = useRef(null);\r\n\r\n const [state, dispatch] = useAliceGPT();\r\n const featureFlags = useFeatureFlags();\r\n\r\n const { i18n } = useTranslation();\r\n const { t } = useTranslation(\"create_project/alice_recommended_entities\", {\r\n useSuspense: false\r\n })\r\n const { t: userProfileTranslator } = useTranslation(\"create_project/alice_recommended_entities\", {\r\n useSuspense: false,\r\n lng: state.form.language?.code || i18n.language\r\n })\r\n\r\n const [loading, setLoading] = useState(state.formUpdated);\r\n const [fetchingMore, setFetchingMore] = useState(false);\r\n\r\n let numSelectedEntities = state.entities.filter(entity => entity.checked).length;\r\n\r\n useEffect(() => {\r\n if (state.formUpdated) {\r\n debugger;\r\n const { projectName, domain, description, model, language } = state.form;\r\n getAliceRecommendedEntities(\r\n domain || projectName, description, model, \"\", language?.code, isFromExtension\r\n )\r\n .then(response => {\r\n const entities = response.map(entityToStateArrayElement)\r\n entities.forEach((entity, index) => loadAttributesOfEntity(entity, true, index));\r\n if (featureFlags.isUserProfileEntityFeatureEnabled) {\r\n entities.unshift(\r\n getUserProfileEntityWithTranslation(userProfileTranslator)\r\n );\r\n }\r\n dispatch({ type: AliceGPTEvents.ENTITIES_LOADED, payload: entities });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n dispatch({\r\n type: AliceGPTEvents.FACED_ERROR,\r\n payload: {\r\n error: error.message\r\n }\r\n })\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n }\r\n }, []);\r\n\r\n function entityToStateArrayElement(entity, index) {\r\n return {\r\n name: entity[0],\r\n icon: entity[1],\r\n checked: (state.entities.length === 0 || state.formUpdated) && index < 5,\r\n attributesLoading: true,\r\n attributes: [],\r\n entityIndex: index\r\n }\r\n }\r\n\r\n async function loadAttributesOfEntity(entity, checked, index) {\r\n try {\r\n const attributes = await getAliceRecommendedAttributes(\r\n entity.name, state.form.model, \"\", state.form.domain || state.form.projectName, state.form.description, state.form.language?.code, isFromExtension\r\n );\r\n const attributesWithPicklist = attributes.map(\r\n (attribute, aIndex) => attributesToStateArrayElement(attribute, checked && aIndex < 10)\r\n );\r\n dispatch({\r\n type: AliceGPTEvents.ATTRIBUTES_LOADED,\r\n payload: {\r\n attributes: attributesWithPicklist,\r\n entityName: entity.name,\r\n shouldCheckEntity: checked\r\n }\r\n });\r\n } catch (error) {\r\n dispatch({\r\n type: AliceGPTEvents.ENTITY_ATTRIBUTES_LOAD_FAILED,\r\n payload: {\r\n entityName: entity.name\r\n }\r\n })\r\n }\r\n }\r\n\r\n function attributesToStateArrayElement(attribute, checked) {\r\n return {\r\n name: attribute[0],\r\n type: convertTypeToDesignerType(attribute[1]),\r\n picklist: attribute[2] || \"\",\r\n unique: attribute[3],\r\n checked: checked,\r\n selected: checked,\r\n disabled: attribute.disabled\r\n }\r\n }\r\n\r\n function toDrawerItem(entity) {\r\n const isMoreThanTwoStateAttributesSelected = entity.attributes.filter(attribute => (\r\n attribute.type === \"State Field\" && attribute.selected\r\n )).length > 1;\r\n const hasAttributeLimitExceededError = entity.attributes.filter(attribute => (\r\n attribute.selected\r\n )).length > state.subscription.maxAttributesPerApp;\r\n const hasStateOrDropdownWithNoValues = entity.attributes.some(attribute => (\r\n (attribute.type === \"State Field\" || attribute.type === \"Picklist String\") &&\r\n (!attribute.picklist || attribute.picklist.length === 0) &&\r\n attribute.selected\r\n ));\r\n const hasSameNameAsAnotherEntity = state.entities.filter(e => e.checked && e.name.trim() === entity.name.trim()).length > 1;\r\n const hasEmplyOrNumberEntityName = entity.name.trim().length === 0 || /^\\d/g.test(entity.name.trim());\r\n const hasMoreThan30CharsInName = entity.name.trim().length > 30;\r\n const entityHasAttributesWithSameName = entity.attributes.some((attribute) => {\r\n if (attribute.selected) {\r\n return entity.attributes.filter((a) =>\r\n a.selected &&\r\n a.name.trim() === attribute.name.trim()\r\n ).length > 1\r\n }\r\n return false;\r\n })\r\n const entityHasEmptyOrStartWithNumberAttributesName = entity.attributes.some(attribute => (\r\n attribute.selected &&\r\n (attribute.name.trim().length === 0 || /^\\d/g.test(attribute.name.trim()))\r\n ));\r\n const entityHasAttributeWithNameMoreThan30Chars = entity.attributes.some(attribute => (\r\n attribute.selected &&\r\n attribute.name.trim().length > 30\r\n ));\r\n\r\n const hasErrors = (\r\n isMoreThanTwoStateAttributesSelected ||\r\n hasStateOrDropdownWithNoValues ||\r\n hasAttributeLimitExceededError ||\r\n hasSameNameAsAnotherEntity ||\r\n entityHasEmptyOrStartWithNumberAttributesName ||\r\n hasEmplyOrNumberEntityName ||\r\n entityHasAttributesWithSameName ||\r\n hasMoreThan30CharsInName ||\r\n entityHasAttributeWithNameMoreThan30Chars\r\n );\r\n return {\r\n text: entity.name,\r\n disabled: entity.disabled,\r\n selected: entity.entityIndex === state.selectedEntity.entityIndex,\r\n checked: entity.checked,\r\n isUserEntity: entity.isUserEntity,\r\n attributesLoading: entity.attributesLoading,\r\n inEdit: entity.inEdit,\r\n hasErrors\r\n }\r\n }\r\n\r\n function handleEntitySelect(event) {\r\n if (event.nativeEvent.target.tagName !== \"INPUT\") {\r\n const entity = state.entities[event.itemIndex - 1];\r\n dispatch({ type: AliceGPTEvents.ENTITY_SELECTED, payload: entity });\r\n }\r\n }\r\n\r\n function handleEntityCheck(entityIndex) {\r\n if (state.entities[entityIndex].checked) {\r\n dispatch({ type: AliceGPTEvents.ENTITY_UNCHECKED, payload: { entityIndex } });\r\n } else {\r\n dispatch({ type: AliceGPTEvents.ENTITY_CHECKED, payload: { entityIndex } });\r\n }\r\n }\r\n\r\n function handleShowMore() {\r\n setFetchingMore(true);\r\n const presentEntityNames = state.entities.map(entity => entity.name).join(', ');\r\n getAliceRecommendedEntities(\r\n state.form.domain || state.form.projectName, state.form.description, state.form.model, presentEntityNames, state.form.language?.code, isFromExtension\r\n )\r\n .then(response => {\r\n const entities = response.map(entityToStateArrayElement)\r\n entities.forEach((entity) => loadAttributesOfEntity(entity, false));\r\n dispatch({ type: AliceGPTEvents.ENTITIES_ADDED, payload: entities });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n })\r\n .finally(() => {\r\n setFetchingMore(false);\r\n });\r\n }\r\n\r\n function toggleEntityEdit(entityIndex) {\r\n return (event) => {\r\n currentEditButton.current = event.target;\r\n dispatch({ type: AliceGPTEvents.TOGGLE_ENTITY_EDIT, payload: { entityIndex: entityIndex - 1 } });\r\n }\r\n }\r\n\r\n function handleSaveEntityName(index) {\r\n return (event) => {\r\n const entityIndex = index - 1;\r\n const newEntityName = currentInputs[index].value;\r\n if (newEntityName !== state.entities[entityIndex].name) {\r\n dispatch({\r\n type: AliceGPTEvents.ENTITY_NAME_CHANGED,\r\n payload: {\r\n entityIndex,\r\n newEntityName\r\n }\r\n });\r\n }\r\n dispatch({\r\n type: AliceGPTEvents.TOGGLE_ENTITY_EDIT,\r\n payload: {\r\n entityIndex: entityIndex\r\n }\r\n });\r\n }\r\n }\r\n\r\n function hasEmptyEntityNames() {\r\n return state.entities.some(entity => entity.name.trim().length === 0);\r\n }\r\n\r\n function hasEntityNameStartingWithNumber() {\r\n return state.entities.some(entity => entity && /^\\d/g.test(entity.name));\r\n }\r\n\r\n function hasDuplicateEntityNames() {\r\n return state.entities.some((entity, index) => entity && entity.checked && isNameReused(entity.name, index));\r\n }\r\n\r\n function hasEntityNamesWithMoreThan30Characters() {\r\n return state.entities.some(entity => entity.name.trim().length > 30);\r\n }\r\n\r\n function isNameReused(name, index) {\r\n return state.entities.some((entity, aI) => entity.checked && entity.name.trim().toLowerCase() === name.trim().toLowerCase() && aI !== index);\r\n }\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \"\"\r\n

    \r\n {t(\"loading_message\")}\r\n

    \r\n
    \r\n );\r\n }\r\n\r\n if (state.error) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n { }\r\n },\r\n ...state.entities.map(toDrawerItem),\r\n {\r\n text: 'Show More',\r\n selected: false,\r\n checked: false,\r\n onClick: handleShowMore,\r\n isShowMoreOption: true\r\n }\r\n ]\r\n }\r\n onSelect={handleEntitySelect}\r\n item={(props) => {\r\n return (\r\n \r\n {\r\n props.isHeading &&\r\n <>\r\n
    \r\n
    \r\n entity.checked)}\r\n value={state.entities.every(entity => entity.checked)}\r\n onChange={() => dispatch({ type: AliceGPTEvents.TOGGLE_SELECT_ALL_ENTITIES })} />\r\n\r\n \r\n \r\n {t(\"drawer.select_all.label\")}\r\n \r\n \r\n \r\n
    \r\n {\r\n numSelectedEntities > state.subscription.maxEntitiesPerApp ?\r\n \r\n  {t(\"drawer.max_entities_reached\", { maxEntities: state.subscription.maxEntitiesPerApp })}\r\n \r\n :\r\n null\r\n }\r\n {\r\n hasDuplicateEntityNames() &&\r\n
    \r\n {t(\"drawer.duplicate_entities_names\")}\r\n
    \r\n }\r\n {\r\n hasEmptyEntityNames() &&\r\n
    \r\n {t(\"drawer.blank_entities_name\")}\r\n
    \r\n }\r\n {\r\n hasEntityNameStartingWithNumber() &&\r\n
    \r\n {t(\"drawer.entities_name_starting_with_number\")}\r\n
    \r\n }\r\n {\r\n hasEntityNamesWithMoreThan30Characters() &&\r\n
    \r\n {t(\"drawer.entities_name_more_than_30_characters\")}\r\n
    \r\n }\r\n
    \r\n \r\n }\r\n {\r\n props.isShowMoreOption &&\r\n <>\r\n \r\n {\r\n fetchingMore ?\r\n \r\n :\r\n <> \r\n }\r\n \r\n }\r\n {!props.isHeading && !props.isShowMoreOption && !props.inEdit &&\r\n
    \r\n \r\n handleEntityCheck(props.index - 1)}\r\n />\r\n  \r\n  \r\n {\r\n props.isUserEntity ?\r\n \r\n \r\n {props.text}\r\n \r\n \r\n \r\n :\r\n \r\n {props.text}\r\n {\r\n props.attributesLoading &&\r\n <>\r\n  \r\n \r\n \r\n }\r\n {\r\n props.isUserEntity &&\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n {\r\n props.hasErrors &&\r\n \r\n \r\n \r\n }\r\n {\r\n !props.isUserEntity &&\r\n \r\n \r\n \r\n }\r\n \r\n
    \r\n }\r\n {\r\n props.inEdit &&\r\n
    \r\n {\r\n currentInputs[props.index] = input;\r\n }}\r\n autoFocus\r\n className={'form-control w-75'}\r\n defaultValue={props.text}\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 AliceRecommendedEntities;","import { createContext, useState } from \"react\";\r\n\r\nconst WorkspaceAppModelContext = createContext({});\r\n\r\nexport function WorkspaceAppModelContextProvider({ children }) {\r\n const [selectedTab, setSelectedTab] = useState(0);\r\n const [formsWithChanges, setFormsWithChanges] = useState({\r\n entityForm: false,\r\n attributeForm: false,\r\n linkedEntityForm: false,\r\n portalForm: false,\r\n menuItemForm: false\r\n });\r\n const [formSaveFunction, setFormSaveFunction] = useState(() => {})\r\n const [selectedEntity, setSelectedEntity] = useState({});\r\n const [selectedAttribute, setSelectedAttribute] = useState({});\r\n const [selectedPortal, setSelectedPortal] = useState({});\r\n \r\n return (\r\n \r\n { children }\r\n \r\n )\r\n}\r\n\r\nexport default WorkspaceAppModelContext;","import React, { useContext } from \"react\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport WorkspaceAppModelContext from \"../../../Context/Workspace/WorkspaceAppModelContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\n/* refactored - ali */\r\nconst OneToOne = (props) => {\r\n\r\n\tconst navigate = useNavigate();\r\n\tconst { mutators } = useContext(WorkspaceAppModelContext);\r\n\tconst { t } = useTranslation(\"linked_entity/cardinality_shapes\", { useSuspense: false });\r\n\r\n\tfunction navigateToEntity(entity) {\r\n\t\tif (props.isAccessedFromWorkspace) {\r\n\t\t\tmutators.setSelectedTab(0);\r\n\t\t\tmutators.setSelectedEntity(entity);\r\n\t\t} else {\r\n\t\t\tnavigate(`/${props.orgName}/${props.projectName}/Entities/${entity.sysName}/Attributes`);\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{t(\"cardinality.one_to_one\", { ns: \"linked_entity/cardinality_shapes\" })}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{props.left}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    {/* \"One */}
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{props.right}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t { t(\"one\", { ns: \"linked_entity/cardinality_shapes\" }) }\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.fromEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.fromEntity)}>\r\n\t\t\t\t\t\t\t\t{props.left}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.left\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t { t(\"can_be_linked_to\", { ns: \"linked_entity/cardinality_shapes\" }) } { t(\"one\", { ns: \"linked_entity/cardinality_shapes\" }).toLowerCase() }\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.toEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.toEntity)}>\r\n\t\t\t\t\t\t\t\t{props.right}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.right\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t { t(\"one\", { ns: \"linked_entity/cardinality_shapes\" }) }\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.toEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.toEntity)}>\r\n\t\t\t\t\t\t\t\t{props.right}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.right\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t { t(\"can_be_linked_to\", { ns: \"linked_entity/cardinality_shapes\" }) } { t(\"one\", { ns: \"linked_entity/cardinality_shapes\" }).toLowerCase() }\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.fromEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.fromEntity)}>\r\n\t\t\t\t\t\t\t\t {props.left}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.left\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t);\r\n};\r\n\r\nconst OneToMany = (props) => {\r\n\r\n\tconst navigate = useNavigate();\r\n\tconst { mutators } = useContext(WorkspaceAppModelContext);\r\n\r\n\tconst { t } = useTranslation(\"linked_entity/cardinality_shapes\", { useSuspense: false });\r\n\r\n\tfunction navigateToEntity(entity) {\r\n\t\tif (props.isAccessedFromWorkspace) {\r\n\t\t\tmutators.setSelectedTab(0);\r\n\t\t\tmutators.setSelectedEntity(entity);\r\n\t\t} else {\r\n\t\t\tnavigate(`/${props.orgName}/${props.projectName}/Entities/${entity.sysName}/Attributes`);\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{t(\"cardinality.one_to_many\", { ns: \"linked_entity/cardinality_shapes\" })}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{props.left}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    {/* \"One */}
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{props.right}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t {t(\"one\", { ns: \"linked_entity/cardinality_shapes\" })}\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.fromEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.fromEntity)}>\r\n\t\t\t\t\t\t\t\t{props.left}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.left\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t {t(\"can_be_linked_to\", { ns: \"linked_entity/cardinality_shapes\" })} {t(\"many\", { ns: \"linked_entity/cardinality_shapes\" }).toLowerCase() }\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.toEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.toEntity)}>\r\n\t\t\t\t\t\t\t\t{props.right}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.right\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t {t(\"one\", { ns: \"linked_entity/cardinality_shapes\" })}\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.toEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.toEntity)}>\r\n\t\t\t\t\t\t\t\t{props.right}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.right\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t {t(\"can_be_linked_to\", { ns: \"linked_entity/cardinality_shapes\" })} {t(\"one\", { ns: \"linked_entity/cardinality_shapes\" }).toLowerCase()}\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.fromEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.fromEntity)}>\r\n\t\t\t\t\t\t\t\t{props.left}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.left\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t);\r\n};\r\n\r\nconst ManyToMany = (props) => {\r\n\r\n\tconst navigate = useNavigate();\r\n\tconst { mutators } = useContext(WorkspaceAppModelContext);\r\n\r\n\tconst { t } = useTranslation(\"linked_entity/cardinality_shapes\", { useSuspense: false });\r\n\r\n\tfunction navigateToEntity(entity) {\r\n\t\tif (mutators) {\r\n\t\t\tmutators.setSelectedTab(0);\r\n\t\t\tmutators.setSelectedEntity(entity);\r\n\t\t} else {\r\n\t\t\tnavigate(`/${props.orgName}/${props.projectName}/Entities/${entity.sysName}/Attributes`);\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{t(\"cardinality.many_to_many\", { ns: \"linked_entity/cardinality_shapes\" })}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{props.left}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    {/* \"Many */}
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{props.right}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t { t(\"one\", { ns: \"linked_entity/cardinality_shapes\" }) }\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.fromEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.fromEntity)}>\r\n\t\t\t\t\t\t\t\t{props.left}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.left\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t { t(\"can_be_linked_to\", { ns: \"linked_entity/cardinality_shapes\" }) } { t(\"many\", { ns: \"linked_entity/cardinality_shapes\" }).toLowerCase() }\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.toEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.toEntity)}>\r\n\t\t\t\t\t\t\t\t{props.right}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.right\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t { t(\"one\", { ns: \"linked_entity/cardinality_shapes\" }) }\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.toEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.toEntity)}>\r\n\t\t\t\t\t\t\t\t{props.right}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.right\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t { t(\"can_be_linked_to\", { ns: \"linked_entity/cardinality_shapes\" }) } { t(\"many\", { ns: \"linked_entity/cardinality_shapes\" }).toLowerCase() }\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprops.fromEntity ?\r\n\t\t\t\t\t\t\t navigateToEntity(props.fromEntity)}>\r\n\t\t\t\t\t\t\t\t{props.left}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\tprops.left\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t);\r\n};\r\n\r\nexport { ManyToMany, OneToMany, OneToOne };\r\n","import React from \"react\";\r\nimport { OneToMany, OneToOne, ManyToMany } from \"./CardinalityShapes\";\r\n\r\n/* refactored - ali */\r\nconst SelectedCardinality = (props) => {\r\n\tconst { selected, firstEntityName, secondEntityName, onClick, showSelected, orgName, projectName, fromEntity, toEntity, isAccessedFromWorkspace, selectEntity } = props;\r\n\r\n\tif (selected === \"1-1\") {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tif (selected === \"1-*\") {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default SelectedCardinality;\r\n","export const ATTRIBUTE_LABEL = \"Property\";\r\n\r\nexport const ATTRIBUTE_PLURAL_LABEL = \"Properties\";","import { useTranslation } from \"react-i18next\";\r\n\r\nconst cardinalityClassMap = {\r\n '1-1': 'O2O',\r\n '1-*': 'O2M',\r\n '*-*': 'M2M',\r\n}\r\n\r\nfunction RelationCardinality({\r\n fromEntityName, cardinality, toEntityName\r\n}) {\r\n return (\r\n
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{ fromEntityName }\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{ toEntityName }\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n )\r\n}\r\n\r\nfunction RelationCardinalityDescription({ fromEntityName, toEntityName, cardinality }) {\r\n\r\n\tconst { t } = useTranslation(\"linked_entity/recommended_relation_card\", { useSuspense: false });\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t {t(\"message.one\", { ns: \"linked_entity/recommended_relation_card\" })}\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{ fromEntityName }\r\n\t\t\t\t\r\n\t\t\t\t { t(\"message.can_be_linked_to\", { ns: \"linked_entity/recommended_relation_card\" }) }\r\n\t\t\t\t \r\n\t\t\t\t{\r\n\t\t\t\t\tcardinality === '1-1' ?\r\n\t\t\t\t\tt(\"message.one\", { ns: \"linked_entity/recommended_relation_card\" }).toLowerCase()\r\n\t\t\t\t\t:\r\n\t\t\t\t\tt(\"message.many\", { ns: \"linked_entity/recommended_relation_card\" }).toLowerCase()\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{ toEntityName }\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t {t(\"message.one\", { ns: \"linked_entity/recommended_relation_card\" })}\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{ toEntityName }\r\n\t\t\t\t\r\n\t\t\t\t { t(\"message.can_be_linked_to\", { ns: \"linked_entity/recommended_relation_card\" }) }\r\n\t\t\t\t \r\n\t\t\t\t{\r\n\t\t\t\t\tcardinality === '*-*' ?\r\n\t\t\t\t\tt(\"message.many\", { ns: \"linked_entity/recommended_relation_card\" }).toLowerCase()\r\n\t\t\t\t\t:\r\n\t\t\t\t\tt(\"message.one\", { ns: \"linked_entity/recommended_relation_card\" }).toLowerCase()\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t{ fromEntityName }\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default RelationCardinality;","import { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { cloneElement } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nfunction RelationCardinalityDropdown({\r\n value,\r\n onChange\r\n}) {\r\n\r\n const { t } = useTranslation(\"linked_entity/recommended_relation_card\", { useSuspense: false })\r\n\r\n const cardinalityTextMap = {\r\n \"1-1\": \"One to One\",\r\n \"1-*\": \"One to Many\",\r\n \"*-*\": \"Many to Many\",\r\n }\r\n\r\n const data = Object.keys(cardinalityTextMap).map(key => ({\r\n text: t(\"cardinality.\" + key, { ns: \"linked_entity/recommended_relation_card\" }),\r\n value: key\r\n }));\r\n const currentValue = {\r\n text: t(\"cardinality.\" + value, { ns: \"linked_entity/recommended_relation_card\" }),\r\n value\r\n }\r\n\r\n function handleChange(event) {\r\n event.nativeEvent.stopPropagation();\r\n onChange(event);\r\n }\r\n\r\n function itemRender(li, itemProps) {\r\n if (itemProps.dataItem.value === currentValue.value) {\r\n return cloneElement(li, {\r\n ...li.props,\r\n className: li.props.className + \" k-state-selected\"\r\n });\r\n }\r\n return cloneElement(li, li.props);\r\n };\r\n\r\n return (\r\n {\r\n e.syntheticEvent.stopPropagation();\r\n }}\r\n onClose={e => {\r\n e.syntheticEvent.stopPropagation();\r\n }}\r\n itemRender={itemRender}\r\n />\r\n )\r\n}\r\n\r\nconst valueRender = (element, value) => {\r\n if (!value) {\r\n return element;\r\n }\r\n const children = [\r\n   {element.props.children},\r\n ];\r\n return cloneElement(\r\n element,\r\n {\r\n ...element.props,\r\n className: element.props.className + \" w-100 d-inline-block\"\r\n },\r\n children\r\n );\r\n};\r\n\r\nconst itemRender = (li, itemProps) => {\r\n const itemChildren = (\r\n \r\n {li.props.children}\r\n
    \r\n );\r\n return cloneElement(li, li.props, itemChildren);\r\n };\r\n\r\nexport default RelationCardinalityDropdown;","import { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { ATTRIBUTE_LABEL } from \"../../../Helpers/Labels/AttributeLabel\";\r\nimport RelationCardinality from \"./RelationCardinality\";\r\nimport RelationCardinalityDropdown from \"./RelationCardinalityDropdown\";\r\nimport { cloneElement } from \"react\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nfunction RecommendedRelationCard({\r\n selected,\r\n fromEntityName, toEntityName, cardinality,\r\n addReferenceAttribute, referenceAttribute, referenceAttributes,\r\n onCardinalityChange, onAddReferenceAttributeChange, onReferenceAttributeChange,\r\n onToggle, onSwap\r\n}) {\r\n\r\n const { t } = useTranslation(\"linked_entity/recommended_relation_card\");\r\n\r\n function handleCardinalityChange(e) {\r\n onCardinalityChange(e);\r\n }\r\n\r\n function handleAddReferenceAttributeChange(e) {\r\n e.syntheticEvent.stopPropagation();\r\n onAddReferenceAttributeChange(e);\r\n }\r\n\r\n function handleReferenceAttributeChange(e) {\r\n e.syntheticEvent.stopPropagation();\r\n onReferenceAttributeChange(e);\r\n }\r\n\r\n function handleToggle(e) {\r\n onToggle(e);\r\n }\r\n\r\n function handleSwap(e) {\r\n onSwap(e);\r\n }\r\n\r\n function isValidReferenceAttributesPresent() {\r\n return referenceAttributes && referenceAttributes.length > 0;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n cardinality === \"1-*\" ?\r\n \r\n :\r\n   \r\n }\r\n \r\n
    \r\n \r\n
    \r\n {\r\n cardinality === \"1-*\" &&\r\n isValidReferenceAttributesPresent() ?\r\n e.stopPropagation()}>\r\n {\r\n e.stopPropagation();\r\n }} />\r\n  \r\n {\r\n t(\"add_reference_property\", {\r\n ns: \"linked_entity/recommended_relation_card\",\r\n entityName: toEntityName\r\n })\r\n }\r\n \r\n :\r\n <> \r\n }\r\n {\r\n addReferenceAttribute ?\r\n {\r\n return cloneElement(\r\n element,\r\n { ...element.props },\r\n \r\n {value}\r\n \r\n )\r\n }}\r\n onChange={handleReferenceAttributeChange}\r\n onOpen={e => {\r\n e.syntheticEvent.stopPropagation();\r\n }}\r\n onClose={e => {\r\n e.syntheticEvent.stopPropagation();\r\n }}\r\n disabled={!referenceAttributes || referenceAttributes.length === 0}\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 toggleCheckbox(index)}\r\n disabled={relation.isStatic}\r\n >\r\n
    \r\n
    toggleCheckbox(index)}>\r\n \r\n
    \r\n
    \r\n {\r\n relation.cardinality === \"1-*\"\r\n ?\r\n e.stopPropagation()}>\r\n {\r\n e.syntheticEvent.stopPropagation();\r\n e.nativeEvent.stopPropagation();\r\n toggleShowReferenceAttribute(index)\r\n }}\r\n onClick={e => {\r\n debugger;\r\n e.stopPropagation()\r\n }} />\r\n  \r\n Add Reference {ATTRIBUTE_LABEL}\r\n \r\n :\r\n <> \r\n }\r\n {\r\n relation.showReferenceAttribute\r\n ?\r\n handleReferenceAttributeChange(e, index)}\r\n onOpen={e => {\r\n e.syntheticEvent.stopPropagation();\r\n }}\r\n onClose={e => {\r\n e.syntheticEvent.stopPropagation();\r\n }} />\r\n :\r\n <> \r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n*/\r\n\r\nexport default RecommendedRelationCard;","export class CreateProjectRequest {\r\n\r\n constructor(\r\n organizationDetails,\r\n projectProperties,\r\n userProperties,\r\n entities,\r\n relations\r\n ) {\r\n this.organizationDetails = organizationDetails;\r\n this.projectProperties = projectProperties;\r\n this.userProperties = userProperties;\r\n this.entities = entities;\r\n this.relations = relations;\r\n }\r\n}","import { importSelectedDataByAlice } from \"../../../../API/AliceGPT/AliceGPT\";\r\nimport { callApiWithAuthorization } from \"../../../../API/CallApi\";\r\nimport { convertTypeToDesignerType } from \"../../../Helpers/Recommendation/AliceGPT\";\r\nimport Color from \"../../../Helpers/color\";\r\nimport { icons } from \"../../../Shared/IconPicker/IconPicker\";\r\nimport { CreateProjectRequest } from \"./RequestTypes\";\r\n\r\n/**\r\n * Function to create project and publish it\r\n * @param {CreateProjectRequest} createProjectRequest body of the request\r\n * @returns create project response\r\n */\r\nexport async function createProject(\r\n createProjectRequest\r\n) {\r\n if (!(createProjectRequest instanceof CreateProjectRequest)) {\r\n throw new Error(\"Invalid request type\");\r\n }\r\n const { projectName, domain, description, language } = createProjectRequest.projectProperties;\r\n const { email } = createProjectRequest.userProperties;\r\n const { organizationId, organizationName } = createProjectRequest.organizationDetails;\r\n\r\n const properties = {\r\n email,\r\n projectName: projectName.trim().replace(/\\s\\s+/g, \" \"),\r\n projectUrl: projectName.trim().replace(/\\s\\s+/g, \" \").replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\"),\r\n domain,\r\n description,\r\n Icon: getRandomIcon(),\r\n developerMode: false,\r\n abbreviation: \"\",\r\n bgColor: Color(),\r\n tag: \"\",\r\n hasSchemaChanges: false,\r\n isPublished: false,\r\n isSuperApp: false,\r\n isFeaturedApp: false,\r\n TilesImages: \"\",\r\n SlideshowImages: \"\",\r\n language\r\n };\r\n\r\n const request = await callApiWithAuthorization(\"/api/v0/project/create-and-publish?language=\" + language, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n organizationName,\r\n properties,\r\n entities: createProjectRequest.entities,\r\n relations: createProjectRequest.relations,\r\n }),\r\n });\r\n const response = await request.json();\r\n\r\n return response;\r\n}\r\n\r\nexport async function createProjectUsingAI(\r\n createProjectRequest\r\n) {\r\n if (!(createProjectRequest instanceof CreateProjectRequest)) {\r\n throw new Error(\"Invalid request type\");\r\n }\r\n const { projectName, domain, description, language } = createProjectRequest.projectProperties;\r\n const { email } = createProjectRequest.userProperties;\r\n const { organizationId, organizationName } = createProjectRequest.organizationDetails;\r\n\r\n const properties = {\r\n email,\r\n projectName: projectName.trim().replace(/\\s\\s+/g, \" \"),\r\n projectUrl: projectName.trim().replace(/\\s\\s+/g, \" \").replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\"),\r\n domain,\r\n description,\r\n Icon: getRandomIcon(),\r\n developerMode: false,\r\n abbreviation: \"\",\r\n bgColor: Color(),\r\n tag: \"\",\r\n hasSchemaChanges: false,\r\n isPublished: false,\r\n isSuperApp: false,\r\n isFeaturedApp: false,\r\n TilesImages: \"\",\r\n SlideshowImages: \"\",\r\n language\r\n };\r\n\r\n const request = await callApiWithAuthorization(\"/api/v0/project/create-and-publish-using-ai?language=\" + language, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n organizationName,\r\n properties,\r\n entities: createProjectRequest.entities,\r\n relations: createProjectRequest.relations,\r\n }),\r\n });\r\n const response = await request.json();\r\n\r\n return response;\r\n}\r\n\r\nexport async function createOnlyProject(createProjectRequest) {\r\n if (!(createProjectRequest instanceof CreateProjectRequest)) {\r\n throw new Error(\"Invalid request type\");\r\n }\r\n\r\n const { projectName, domain, description } = createProjectRequest.projectProperties;\r\n const { email } = createProjectRequest.userProperties;\r\n const { organizationId, organizationName } = createProjectRequest.organizationDetails;\r\n\r\n const properties = {\r\n organizationId,\r\n organizationName,\r\n email,\r\n projectName: projectName.trim().replace(/\\s\\s+/g, \" \"),\r\n projectUrl: projectName.trim().replace(/\\s\\s+/g, \" \").replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\"),\r\n domain,\r\n description,\r\n Icon: getRandomIcon(),\r\n developerMode: false,\r\n abbreviation: \"\",\r\n bgColor: Color(),\r\n tag: \"\",\r\n hasSchemaChanges: false,\r\n isPublished: false,\r\n isSuperApp: false,\r\n isFeaturedApp: false,\r\n TilesImages: \"\",\r\n SlideshowImages: \"\",\r\n };\r\n\r\n const request = await callApiWithAuthorization(\"/api/v0/createProjectandRole\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(properties),\r\n });\r\n const response = await request.json();\r\n\r\n return response;\r\n}\r\n\r\nfunction getRandomIcon() {\r\n return icons[Math.floor(Math.random() * icons.length)];\r\n}\r\n\r\nexport async function addSelectedDataToProject(organizationId, projectId, entities, relations) {\r\n const entitiesAndAttributes = entities.map((entity) => ({\r\n name: entity.name,\r\n icon: entity.icon,\r\n isUserEntity: entity.isUserEntity,\r\n attributes: entity.attributes.map((attribute) => ({\r\n name: attribute.name,\r\n type: attribute.type,\r\n picklist: attribute.picklist,\r\n required: attribute.required,\r\n unique: attribute.unique,\r\n isAzureAttribute: attribute.isAzureAttribute\r\n }))\r\n }));\r\n const response = await importSelectedDataByAlice(organizationId, projectId, entitiesAndAttributes, relations);\r\n return response;\r\n}\r\n\r\nexport function getEntitiesExceedingAttributeLimitOnCreatingRelations(entities, relations, subscription) {\r\n const toEntitiesAttributeMap = relations.map(relation => (\r\n { name: relation.to, showReferenceAttribute: relation.showReferenceAttribute }\r\n )).reduce((acc, relationInfo) => {\r\n if (!acc[relationInfo.name]) {\r\n const entity = entities.find(entity => entity.name === relationInfo.name);\r\n const selectedAttributes = entity.attributes.filter(attribute => attribute.selected);\r\n acc[relationInfo.name] = selectedAttributes.length;\r\n if (relationInfo.showReferenceAttribute) {\r\n acc[relationInfo.name]++;\r\n }\r\n } else if (relationInfo.showReferenceAttribute) {\r\n acc[relationInfo.name]++;\r\n }\r\n return acc;\r\n }, {});\r\n const entitiesWithAttributeLimitExceeded = Object.keys(toEntitiesAttributeMap).filter(entityName => {\r\n return toEntitiesAttributeMap[entityName] > subscription.maxAttributesPerApp;\r\n });\r\n return entitiesWithAttributeLimitExceeded;\r\n}","import { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { getAliceRecommendedReferenceAttributeForRelation, getAliceRecommendedRelations } from \"../../../../API/AliceGPT/AliceGPT\";\r\nimport * as AliceGPTEvents from \"../../../../Context/AliceGPT/AliceGPTContextEvents\";\r\nimport useAliceGPT from \"../../../../Hooks/AliceGPT/useAliceGPT\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport Loader from \"../../../Shared/Loader/loader\";\r\nimport SelectedCardinality from \"../../../LinkedEntities/Field/SelectedCardinality\";\r\nimport { USER_TO_USER_RELATION } from \"./variables\";\r\nimport { getDatalakeImageUrl } from \"../../../Helpers/DateLakeStorage\";\r\nimport useFeatureFlags from \"../../../../Hooks/FeatureFlag/useFeatureFlags\";\r\nimport { ATTRIBUTE_LABEL } from \"../../../Helpers/Labels/AttributeLabel\";\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\nimport RecommendedRelationCard from \"../../../Shared/Recommendation/Relations/RecommendedRelationCard\";\r\nimport FailedToLoadError from \"../../../Shared/Recommendation/Error/FailedToLoadError\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getEntitiesExceedingAttributeLimitOnCreatingRelations } from \"./utils\";\r\n\r\nfunction AliceRecommendedRelations({ isFromExtension }) {\r\n\r\n const { t } = useTranslation(\"create_project/alice_recommended_relations\", { useSuspense: false });\r\n\r\n const [state, dispatch] = useAliceGPT();\r\n const featureFlags = useFeatureFlags();\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [referenceAttributesLoaded, setReferenceAttributesLoaded] = useState(true);\r\n\r\n let numRelationsSelected = state.relations.filter(relation => relation.selected).length;\r\n\r\n useEffect(() => {\r\n if (selectedEntitiesChanged()) {\r\n debugger;\r\n dispatch({\r\n type: AliceGPTEvents.UPDATE_PREVIOUS_SELECTED_ENTITY_NAME\r\n })\r\n dispatch({\r\n type: AliceGPTEvents.TOGGLE_LOAD_EDIT_PAGE_CONFIGURATION\r\n })\r\n dispatch({\r\n type: AliceGPTEvents.RESET_RELATIONS_LOADED\r\n })\r\n const entityNames = state.entities.filter(entity => entity.checked && !entity.isUserEntity).map(entity => entity.name);\r\n setLoading(true);\r\n getAliceRecommendedRelations(entityNames, state.form.model, isFromExtension)\r\n .then(response => {\r\n // filter relation which has from and to as same entity and\r\n const filteredResponse = response.filter(relation => relation.from !== relation.to)\r\n // filter one relation for each pair of entity\r\n const uniqueRelations = [];\r\n const uniqueRelationKeys = {};\r\n for (const relation of filteredResponse) {\r\n const relationKey = `${relation.from}-${relation.to}`;\r\n const reverseRelationKey = `${relation.to}-${relation.from}`;\r\n if (!uniqueRelationKeys[relationKey] && !uniqueRelationKeys[reverseRelationKey]) {\r\n uniqueRelationKeys[relationKey] = true;\r\n uniqueRelations.push(relation);\r\n }\r\n }\r\n const relations = uniqueRelations.map(relationToStateArrayElement);\r\n dispatch({\r\n type: AliceGPTEvents.RELATIONS_LOADED,\r\n payload: relations\r\n })\r\n setReferenceAttributesLoaded(false);\r\n })\r\n .catch(error => {\r\n dispatch({\r\n type: AliceGPTEvents.FACED_ERROR,\r\n payload: {\r\n error: error.message\r\n }\r\n })\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n } else {\r\n dispatch({\r\n type: AliceGPTEvents.RELATIONS_LOADED,\r\n payload: state.relations\r\n })\r\n }\r\n }, []);\r\n\r\n function selectedEntitiesChanged() {\r\n const selectedEntities = state.namesOfSelectedEntities;\r\n const previousSelectedEntities = state.previousNamesOfSelectedEntities;\r\n if (selectedEntities.length !== previousSelectedEntities.length) {\r\n state.relations.forEach(relation => relation.selected = false);\r\n return true;\r\n }\r\n for (const selectedEntity of selectedEntities) {\r\n if (!previousSelectedEntities.includes(selectedEntity)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function relationToStateArrayElement(relation) {\r\n return {\r\n from: relation.from || relation[0],\r\n to: relation.to || relation[1],\r\n cardinality: relation.cardinality || relation[2],\r\n showReferenceAttribute: relation.cardinality === \"1-*\" && doesFromEntityHaveValidAttributes(relation),\r\n referenceAttribute: \"\",\r\n checked: false,\r\n selected: true\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (!loading && !state.initialAttributesLoaded) {\r\n loadReferenceAttributesForRelations();\r\n }\r\n }, [state.initialAttributesLoaded])\r\n\r\n async function loadReferenceAttributesForRelations() {\r\n const results = [];\r\n state.relations.forEach((relation, index) => {\r\n const fromEntityHasValidAttributes = doesFromEntityHaveValidAttributes(relation);\r\n if (\r\n relation.cardinality === \"1-*\" &&\r\n fromEntityHasValidAttributes &&\r\n !relation.isStatic\r\n ) {\r\n const response = getRecommendedAttribute(index);\r\n results.push(response);\r\n }\r\n });\r\n for (const response of results) {\r\n dispatch({\r\n type: AliceGPTEvents.REFERENCE_ATTRIBUTE_CHANGED,\r\n payload: { relationIndex: response.relationIndex, referenceAttribute: response.attributeName }\r\n })\r\n }\r\n dispatch({\r\n type: AliceGPTEvents.INITIAL_REFERENCE_ATTRIBUTES_LOADED\r\n })\r\n }\r\n\r\n function doesFromEntityHaveValidAttributes(relation) {\r\n const fromEntity = state.entities.find(entity => entity.name === relation.from);\r\n const fromEntityAttributes = fromEntity.attributes.filter(attribute => attribute.selected && attribute.type === \"string\");\r\n return fromEntityAttributes.length > 0;\r\n }\r\n \r\n function toggleCheckbox(relationIndex) {\r\n if (state.relations[relationIndex].selected) {\r\n dispatch({\r\n type: AliceGPTEvents.RELATION_DESELECTED,\r\n payload: { relationIndex }\r\n });\r\n } else {\r\n dispatch({\r\n type: AliceGPTEvents.RELATION_SELECTED,\r\n payload: { relationIndex }\r\n });\r\n }\r\n }\r\n\r\n function toggleShowReferenceAttribute(relationIndex) {\r\n if (!state.relations[relationIndex].referenceAttribute) {\r\n const attribute = getRecommendedAttribute(relationIndex)\r\n if (attribute.attributeName) {\r\n dispatch({\r\n type: AliceGPTEvents.REFERENCE_ATTRIBUTE_CHANGED,\r\n payload: {\r\n relationIndex, referenceAttribute: attribute.attributeName\r\n }\r\n });\r\n } else {\r\n dispatch({\r\n type: AliceGPTEvents.SHOW_REFERENCE_ATTRIBUTE_TOGGLED,\r\n payload: { relationIndex }\r\n })\r\n }\r\n }\r\n dispatch({\r\n type: AliceGPTEvents.SHOW_REFERENCE_ATTRIBUTE_TOGGLED,\r\n payload: { relationIndex }\r\n });\r\n }\r\n\r\n function getRecommendedAttribute(relationIndex) {\r\n const relation = state.relations[relationIndex];\r\n const fromEntity = state.entities.find(entity => entity.name === relation.from);\r\n const selectedFromEntityAttributes = fromEntity.attributes.filter(attribute => attribute.selected && attribute.type === \"String\");\r\n\r\n if (selectedFromEntityAttributes.length === 0) {\r\n return { relationIndex, attributeName: null };\r\n }\r\n\r\n return { relationIndex, attributeName: selectedFromEntityAttributes[0].name };\r\n }\r\n\r\n function getSelectedAttributeNameOfEntity(entityName) {\r\n const entity = state.entities.find(entity => entity.name === entityName);\r\n const selectedTextAttributes = entity.attributes.filter(attribute => attribute.selected && attribute.type === \"String\");\r\n return selectedTextAttributes.map(attribute => attribute.name);\r\n }\r\n\r\n function handleReferenceAttributeChange(event, relationIndex) {\r\n dispatch({\r\n type: AliceGPTEvents.REFERENCE_ATTRIBUTE_CHANGED,\r\n payload: { referenceAttribute: event.target.value, relationIndex }\r\n });\r\n }\r\n\r\n function handleCardinalityChange(event, relationIndex) {\r\n dispatch({\r\n type: AliceGPTEvents.CARDINALITY_CHANGED,\r\n payload: { cardinality: event.target.value, relationIndex }\r\n });\r\n }\r\n\r\n function handleSwap(event, relationIndex) {\r\n event.stopPropagation();\r\n dispatch({\r\n type: AliceGPTEvents.RELATION_SWAP,\r\n payload: { relationIndex }\r\n });\r\n }\r\n\r\n function getIsAttributeLimitExceeded() {\r\n const entitiesWithAttributeLimitExceeded = getEntitiesExceedingAttributeLimitOnCreatingRelations(\r\n state.entities,\r\n state.relations,\r\n state.subscription\r\n )\r\n if (entitiesWithAttributeLimitExceeded.length > 0) {\r\n return (\r\n \r\n {t(\"max_attributes_exceeded\", {\r\n limit: state.subscription.maxAttributesPerApp,\r\n entitiesWithAttributeLimitExceeded: entitiesWithAttributeLimitExceeded.join(\", \")\r\n })}\r\n \r\n )\r\n }\r\n return <>\r\n }\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \"\"/\r\n

    \r\n {t(\"loading_message\")}\r\n

    \r\n
    \r\n );\r\n }\r\n\r\n if (state.error) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n relation.selected)}\r\n value={state.relations.every(relation => relation.selected)}\r\n onChange={() => dispatch({ type: AliceGPTEvents.TOGGLE_SELECT_ALL_RELATIONS })}\r\n labelPlacement=\"left\"\r\n /> \r\n { t(\"select_all.label\") } \r\n \r\n {\r\n numRelationsSelected > state.subscription.maxRelationsPerApp &&\r\n \r\n {t(\"max_relations_exceeded\", { maxRelations: state.subscription.maxRelationsPerApp })}\r\n \r\n }\r\n   \r\n {getIsAttributeLimitExceeded()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n state.relations.length === 0 &&\r\n
    \r\n
    \r\n {t(\"no_relations_found\")}\r\n
    \r\n
    \r\n }\r\n {state.relations.map((relation, index) => (\r\n handleCardinalityChange(event, index)}\r\n onAddReferenceAttributeChange={() => toggleShowReferenceAttribute(index)}\r\n onReferenceAttributeChange={(event) => handleReferenceAttributeChange(event, index)}\r\n onToggle={() => toggleCheckbox(index)}\r\n onSwap={(e) => handleSwap(e, index)}\r\n />\r\n ))}\r\n
    \r\n \r\n );\r\n}\r\n\r\nexport default AliceRecommendedRelations;","import { useMsal } from \"@azure/msal-react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { getLoggedInUserUsingAccessToken } from \"../../API/User/User\";\r\n\r\nfunction useUser() {\r\n\r\n const { accounts } = useMsal();\r\n\r\n const [user, setUser] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(\"\");\r\n\r\n useEffect(() => {\r\n try {\r\n if (accounts.length > 0) {\r\n setLoading(false);\r\n setUser(accounts[0]);\r\n } else {\r\n getLoggedInUserUsingAccessToken()\r\n .then(user => {\r\n setUser(user);\r\n })\r\n .catch(error => {\r\n setError(error.message);\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n }\r\n } catch (e) {\r\n setLoading(false);\r\n setError(e.message);\r\n }\r\n }, []);\r\n\r\n return [loading, user, error];\r\n}\r\n\r\nexport default useUser;","import React, { useEffect, useState } from 'react';\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\n\r\nfunction useGetProjects(organizationId) {\r\n const [loading, setLoading] = useState(true);\r\n const [projects, setProjects] = useState([]);\r\n const [error, setError] = useState(\"\");\r\n\r\n useEffect(() => {\r\n getProjects();\r\n }, []);\r\n\r\n async function getProjects() {\r\n try {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/projects\");\r\n const projects = await request.json();\r\n setProjects(projects);\r\n } catch (e) {\r\n setError(e.message);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return [loading, projects, error];\r\n}\r\n\r\nexport default useGetProjects;","import { Grid, GridColumn } from \"@progress/kendo-react-grid\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport useAliceGPT from \"../../../../Hooks/AliceGPT/useAliceGPT\";\r\nimport { DISPLAY_CHECKBOX_TOGGLED, TOGGLE_DISPLAY_CONFIGURATION_LOADED, TOGGLE_LOAD_EDIT_PAGE_CONFIGURATION } from \"../../../../Context/AliceGPT/AliceGPTContextEvents\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getEntityMenuAndPageConfiguration } from \"../../../../API/AliceGPT/AliceGPT\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { getDatalakeImageUrl } from \"../../../Helpers/DateLakeStorage\";\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\n\r\nfunction EditPageConfiguration({ useAI }) {\r\n\r\n const { t } = useTranslation(\"create_project/edit_page_configurations\");\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [state, dispatch] = useAliceGPT();\r\n\r\n const selectedEntities = state.entities.filter(entity => entity.checked);\r\n\r\n const enabledColumns = [\r\n {\r\n title: t(\"table\"),\r\n databaseField: \"shouldCreateTable\",\r\n disabledField: \"isTableDisabled\"\r\n },\r\n {\r\n title: t(\"split_view\"),\r\n databaseField: \"shouldCreateSplitView\",\r\n disabledField: \"\"\r\n },\r\n {\r\n title: t(\"kanban\"),\r\n databaseField: \"shouldCreateKanban\",\r\n disabledField: \"isKanbanDisabled\"\r\n },\r\n {\r\n title: t(\"calendar\"),\r\n databaseField: \"shouldCreateCalendar\",\r\n disabledField: \"isCalendarDisabled\"\r\n },\r\n {\r\n title: t(\"cards\"),\r\n databaseField: \"shouldCreateCards\",\r\n disabledField: \"\"\r\n },\r\n {\r\n title: t(\"gantt_chart\"),\r\n databaseField: \"shouldCreateGanttChart\",\r\n disabledField: \"isGanttChartDisabled\"\r\n }\r\n ];\r\n\r\n useEffect(() => {\r\n if (state.shouldLoadEditPageConfigurations) {\r\n optimizeUsingAI()\r\n .finally(() => {\r\n setLoading(false);\r\n dispatch({\r\n type: TOGGLE_DISPLAY_CONFIGURATION_LOADED\r\n })\r\n dispatch({\r\n type: TOGGLE_LOAD_EDIT_PAGE_CONFIGURATION\r\n })\r\n })\r\n } else {\r\n if (state.isPageConfigurationLoading) {\r\n dispatch({\r\n type: TOGGLE_DISPLAY_CONFIGURATION_LOADED\r\n })\r\n }\r\n setLoading(false)\r\n }\r\n }, []);\r\n\r\n function handleCheckbox(event, entityName) {\r\n const { name } = event.target;\r\n dispatch({\r\n type: DISPLAY_CHECKBOX_TOGGLED,\r\n payload: {\r\n entityName,\r\n name\r\n }\r\n })\r\n }\r\n\r\n async function optimizeUsingAI() {\r\n try {\r\n const entities = selectedEntities\r\n .filter(entity => !entity.isUserEntity)\r\n .map(entity => ({\r\n name: entity.name,\r\n attributes: entity.attributes.filter(attribute => attribute.selected).map(attribute => ({\r\n name: attribute.name,\r\n type: attribute.type\r\n }))\r\n }))\r\n const response = await getEntityMenuAndPageConfiguration(entities);\r\n for (const element of response) {\r\n const currentEntityPageConfiguration = selectedEntities.find(entity => entity.name === element.entityName).pageConfiguration;\r\n const viewsToEnable = element.suitableViews.map(view => `shouldCreate${view.replace(/ /g, \"\")}`);\r\n for (const view of enabledColumns) {\r\n if (\r\n (viewsToEnable.includes(view.databaseField) && !currentEntityPageConfiguration[view.databaseField]) ||\r\n (!viewsToEnable.includes(view.databaseField) && currentEntityPageConfiguration[view.databaseField])\r\n ) {\r\n dispatch({\r\n type: DISPLAY_CHECKBOX_TOGGLED,\r\n payload: {\r\n entityName: element.entityName,\r\n name: view.databaseField\r\n }\r\n })\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n throw new Error(\"Something went wrong!\");\r\n }\r\n }\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \"\"\r\n

    \r\n {t(\"loading_message\")}\r\n

    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n selectedEntities.some(entity => Object.values(entity.pageConfiguration).every(value => !value)) ?\r\n
    \r\n \r\n  \r\n At least one of the selected entities has no page configuration enabled. Please enable at least one page configuration for each entity.\r\n
    \r\n :\r\n null\r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n {t(\"select_all.label\")} \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n return (\r\n
    \r\n )\r\n }}\r\n />\r\n {enabledColumns.map((column, index) => {\r\n return (\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\nexport default EditPageConfiguration;","import React, { useEffect, useState } from 'react';\r\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport AliceProjectDetailsForm from './AliceProjectDetailsForm';\r\nimport AliceRecommendedEntities from './AliceRecommendedEntities';\r\nimport Scrollable from '../../../Shared/Edit/Scrollable';\r\nimport AliceRecommendedRelations from './AliceRecommendedRelations';\r\nimport { addSelectedDataToProject, createOnlyProject, getEntitiesExceedingAttributeLimitOnCreatingRelations } from './utils';\r\nimport useUser from '../../../../Hooks/User/useUser';\r\nimport useAliceGPT from '../../../../Hooks/AliceGPT/useAliceGPT';\r\nimport * as AliceGPTEvents from '../../../../Context/AliceGPT/AliceGPTContextEvents';\r\nimport useGetProjects from '../../../../Hooks/Projects/useGetProjects';\r\nimport useFeatureFlags from '../../../../Hooks/FeatureFlag/useFeatureFlags';\r\nimport { DEFAULT_PAGE_CONFIGURATION } from './variables';\r\nimport { USER_PROFILE_ENTITY } from './variables';\r\nimport ShuffleMessage from '../../../Shared/ShuffleMessage/ShuffleMessage';\r\nimport { bindShuffleMessageI18nEvents, messagesWhenCreatingProject } from '../../../Shared/ShuffleMessage/MessagesHelper';\r\nimport startsWithNumber from '../../../Helpers/Validators/startsWithNumber';\r\nimport { CreateProjectRequest } from './RequestTypes';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { postMessageToRuntime } from '../../../Helpers/Runtime/runtime';\r\nimport { getCurrentSubscriptionForOrganisation } from '../../../../API/Payment/Payment';\r\nimport { bindI18nEvents as bindAttributeTypeDropdowni18n } from '../../../Attributes/Fields/AttributeTypeField';\r\nimport { bindI18nEvents as bindAttributeTypeFieldi18n } from '../../../Shared/Recommendation/AttributeTypeDropdown';\r\nimport EditPageConfiguration from './EditPageConfiguration';\r\nimport { LanguagesMap } from '../../../OrganizationSettings/LanguagesMap';\r\n\r\nfunction AliceGPTDialog({ organizationId, organizationName, toggleDialog, toggleUpgradeDialog, onCreate }) {\r\n\r\n const [state, dispatch] = useAliceGPT();\r\n\r\n const titles = [\r\n \"Create App\",\r\n \"Create App - Alice AI Recommendation\",\r\n \"Create App - Alice AI Recommendation\",\r\n ]\r\n\r\n async function handleCreate(request) {\r\n const project = await createOnlyProject(request);\r\n if (project._id) {\r\n await addSelectedDataToProject(\r\n request.organizationDetails.organizationId, project._id,\r\n request.entities, request.relations\r\n );\r\n }\r\n onCreate(project);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport function AliceGPTCreateProjectForm({\r\n organizationId,\r\n organizationName,\r\n isUsedInRuntime,\r\n defaultLanguage,\r\n onCreate,\r\n skipAIAndCreateProject,\r\n showAIFields = true,\r\n showLanguageDropdown = false,\r\n backToAppLibrary,\r\n showBackButton\r\n}) {\r\n\r\n const { t } = useTranslation([\r\n \"create_project/alice_gpt_dialog\",\r\n \"create_project/alice_project_details_form\",\r\n \"create_project/alice_recommended_entities\",\r\n \"create_project/alice_recommended_attributes_list\",\r\n \"create_project/alice_recommended_relations\",\r\n \"create_project/edit_page_configurations\",\r\n \"linked_entity/recommended_relation_card\",\r\n \"common/attribute_type_dropdown\",\r\n \"common/attribute_type_field\"\r\n ], { useSuspense: false });\r\n\r\n const [state, dispatch] = useAliceGPT();\r\n const featureFlags = useFeatureFlags();\r\n const [userLoading, user, userError] = useUser();\r\n const [projectsLoading, projects, projectsError] = useGetProjects(organizationId);\r\n\r\n const [creatingProject, setCreatingProject] = useState(false);\r\n\r\n useEffect(() => {\r\n bindShuffleMessageI18nEvents()\r\n getCurrentSubscriptionForOrganisation(organizationId)\r\n .then(subscription => {\r\n dispatch({\r\n type: AliceGPTEvents.SUBSCRIPTION_LOADED,\r\n payload: subscription\r\n })\r\n })\r\n bindAttributeTypeDropdowni18n()\r\n bindAttributeTypeFieldi18n()\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (defaultLanguage) {\r\n const language = LanguagesMap.find(lang => lang.code === defaultLanguage);\r\n dispatch({\r\n type: AliceGPTEvents.FORM_UPDATED,\r\n payload: {\r\n ...state.form,\r\n language: language\r\n }\r\n })\r\n }\r\n }, [defaultLanguage])\r\n\r\n function isNextDisabled() {\r\n switch (state.step) {\r\n case 0:\r\n return (\r\n !state.form.projectName.trim() ||\r\n /[^a-zA-Z0-9 ]/g.test(state.form.projectName) ||\r\n isProjectNameUsed() ||\r\n entityWithErrorSelected() ||\r\n startsWithNumber(state.form.projectName.trim())\r\n )\r\n case 1:\r\n const selectedEntities = state.entities.filter(entity => entity.checked);\r\n const hasEmptyEntitiesName = selectedEntities.some(entity => entity.name.trim().length === 0);\r\n const hasEntitiesStartWithNumber = selectedEntities.some(entity => startsWithNumber(entity.name.trim()));\r\n const hasSameNameAsAnotherEntity = selectedEntities.some((entity, entityIndex) => {\r\n if (entity.checked) {\r\n const entityName = entity.name.trim().toLowerCase();\r\n return selectedEntities.some((e, i) =>\r\n e.name.trim().toLowerCase() === entityName &&\r\n i !== entityIndex\r\n );\r\n }\r\n return false;\r\n });\r\n const entityHasAttributesWithSameName = selectedEntities.some(entity => {\r\n if (entity.checked) {\r\n const attributes = entity.attributes.filter(attribute => attribute.selected);\r\n const attributeNames = attributes.map(attribute => attribute.name.trim().toLowerCase());\r\n return attributeNames.some(name => attributeNames.filter(n => n === name).length > 1);\r\n }\r\n return false;\r\n });\r\n const entityWithNoPagesSelected = selectedEntities.some(entity => (\r\n Object.values(entity.pageConfiguration).every(value => !value)\r\n ))\r\n if (hasSameNameAsAnotherEntity || entityHasAttributesWithSameName || hasEntitiesStartWithNumber || hasEmptyEntitiesName) return true;\r\n if (entityWithNoPagesSelected) return false;\r\n return isCreateAppDisabled();\r\n case 2:\r\n const selectedRelations = state.relations.filter(relation => relation.selected);\r\n const selectedEntitiesWithNoPagesSelected = state.entities.some(entity => (\r\n entity.checked &&\r\n Object.values(entity.pageConfiguration).every(value => !value)\r\n ));\r\n if (selectedEntitiesWithNoPagesSelected) return false;\r\n const relationWithNoRefAttrSelected = state.relations.find(relation => relation.showReferenceAttribute && !relation.referenceAttribute)\r\n if (relationWithNoRefAttrSelected) {\r\n return true;\r\n }\r\n const entitiesWithAttributeLimitExceeded = getEntitiesExceedingAttributeLimitOnCreatingRelations(\r\n state.entities,\r\n state.relations,\r\n state.subscription\r\n )\r\n if (entitiesWithAttributeLimitExceeded.length > 0) {\r\n return true;\r\n }\r\n return (\r\n state.error ||\r\n !state.initialAttributesLoaded ||\r\n selectedRelations.length > state.subscription.maxRelationsPerApp\r\n );\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n function isCreateAppDisabled() {\r\n const selectedEntities = state.entities.filter(entity => entity.checked);\r\n const isInLoading = selectedEntities.some(entity => entity.attributesLoading);\r\n if (isInLoading) return true;\r\n const hasSameNameAsAnotherEntity = selectedEntities.some((entity, entityIndex) => {\r\n if (entity.checked) {\r\n const entityName = entity.name.trim().toLowerCase();\r\n return selectedEntities.some((e, i) =>\r\n e.checked &&\r\n e.name.trim().toLowerCase() === entityName &&\r\n i !== entityIndex\r\n );\r\n }\r\n return false;\r\n });\r\n const hasEmptyEntitiesName = selectedEntities.some(entity => entity.name.trim().length === 0);\r\n const hasEntitiesStartWithNumber = selectedEntities.some(entity => startsWithNumber(entity.name.trim()));\r\n const entityHasAttributesWithSameName = selectedEntities.some(entity => {\r\n if (entity.checked) {\r\n const attributes = entity.attributes.filter(attribute => attribute.selected);\r\n const attributeNames = attributes.map(attribute => attribute.name.trim().toLowerCase());\r\n return attributeNames.some(name => attributeNames.filter(n => n === name).length > 1);\r\n }\r\n return false;\r\n });\r\n const entityWithMoreThanSubscriptionAttributes = selectedEntities.some(entity =>\r\n entity.attributes.filter(attribute => attribute.selected).length > state.subscription.maxAttributesPerApp\r\n );\r\n const entityWithNoAttributesSelected = selectedEntities.some(entity => entity.attributes.filter(attribute => attribute.selected).length === 0);\r\n const entityWithMoreThanOneStateAttribute = selectedEntities.some(entity => entity.attributes.filter(attribute => attribute.selected && attribute.type === \"State Field\").length > 1);\r\n const entityWithPicklistOrStateWith0AttributeSelected = selectedEntities.some(entity => (\r\n entity.attributes.find(attribute => (\r\n attribute.selected &&\r\n (attribute.type === \"Picklist String\" || attribute.type === \"State Field\") &&\r\n (!attribute.picklist || attribute.picklist.length === 0)\r\n ))\r\n ))\r\n const entityWithAttributesNameWithError = selectedEntities.some(entity => (\r\n entity.attributes.some(attribute => (\r\n attribute.selected &&\r\n (attribute.name.trim().length === 0 || /^\\d/g.test(attribute.name))\r\n ))\r\n ))\r\n const entityWithSameAttributesName = selectedEntities.some(entity => {\r\n if (entity.checked) {\r\n const attributes = entity.attributes.filter(attribute => attribute.selected);\r\n const attributeNames = attributes.map(attribute => attribute.name.trim().toLowerCase());\r\n return attributeNames.some(name => attributeNames.filter(n => n === name).length > 1);\r\n }\r\n return false;\r\n });\r\n const hasEntityWithMoreThan30Chars = selectedEntities.some(entity => entity.name.trim().length > 30);\r\n const entityHasAttributesWithMoreThan30Chars = selectedEntities.some(entity => {\r\n if (entity.checked) {\r\n const attributes = entity.attributes.filter(attribute => attribute.selected);\r\n const attributeNames = attributes.map(attribute => attribute.name.trim());\r\n return attributeNames.some(name => name.length > 30);\r\n }\r\n return false;\r\n });\r\n\r\n const entityWithNoPagesSelected = selectedEntities.some(entity => (\r\n Object.values(entity.pageConfiguration).every(value => !value)\r\n ))\r\n if (state.step === 3 && state.isPageConfigurationLoading) {\r\n return true;\r\n }\r\n\r\n if (state.step === 2) {\r\n const entitiesWithAttributeLimitExceeded = getEntitiesExceedingAttributeLimitOnCreatingRelations(\r\n state.entities,\r\n state.relations,\r\n state.subscription\r\n )\r\n if (entitiesWithAttributeLimitExceeded.length > 0) {\r\n return true;\r\n }\r\n }\r\n return (\r\n selectedEntities.length > state.subscription.maxEntitiesPerApp ||\r\n entityWithMoreThanSubscriptionAttributes ||\r\n entityWithNoAttributesSelected ||\r\n entityWithMoreThanOneStateAttribute ||\r\n entityWithPicklistOrStateWith0AttributeSelected ||\r\n hasSameNameAsAnotherEntity ||\r\n entityWithSameAttributesName ||\r\n hasEmptyEntitiesName ||\r\n hasEntitiesStartWithNumber ||\r\n entityHasAttributesWithSameName ||\r\n entityWithAttributesNameWithError ||\r\n entityWithNoPagesSelected ||\r\n hasEntityWithMoreThan30Chars ||\r\n entityHasAttributesWithMoreThan30Chars\r\n )\r\n }\r\n\r\n function isProjectNameUsed() {\r\n return projects.some(project => project.name.trim().toLowerCase() === state.form.projectName.trim().toLowerCase());\r\n }\r\n\r\n function entityWithErrorSelected() {\r\n return state.entities.some(entity => entity.hasAttributeLoadingError && entity.checked);\r\n }\r\n\r\n function handleNext() {\r\n if (state.step === 0 && state.form.projectName.trim()) {\r\n postMessageToRuntime({\r\n eventType: \"PROJECT_NAME_CHANGED\",\r\n value: state.form.projectName\r\n })\r\n } else if (state.step === 1) {\r\n const numSelectedEntities = state.entities.filter(entity => entity.checked).length;\r\n if (numSelectedEntities <= 2) {\r\n dispatch({ type: AliceGPTEvents.NEXT });\r\n }\r\n } else if (state.step === 2) {\r\n if (!state.isPageConfigurationLoading) {\r\n dispatch({\r\n type: AliceGPTEvents.TOGGLE_DISPLAY_CONFIGURATION_LOADED\r\n })\r\n }\r\n }\r\n dispatch({ type: AliceGPTEvents.NEXT });\r\n }\r\n\r\n function handleBack() {\r\n if (state.step === 3) {\r\n const numSelectedEntities = state.entities.filter(entity => entity.checked).length;\r\n if (numSelectedEntities <= 2) {\r\n dispatch({ type: AliceGPTEvents.BACK });\r\n }\r\n dispatch({\r\n type: AliceGPTEvents.TOGGLE_DISPLAY_CONFIGURATION_LOADED\r\n })\r\n }\r\n dispatch({ type: AliceGPTEvents.BACK })\r\n }\r\n\r\n function toggleCreatingProject() {\r\n setCreatingProject(!creatingProject);\r\n }\r\n\r\n const handleSubmit = async () => {\r\n // toggleCreatingProject();\r\n\r\n const organizationDetails = getOrganizationDetails();\r\n const projectProperties = getProjectProperties();\r\n const userProperties = getUserProperties();\r\n\r\n const selectedEntities = state.entities.length === 0 || state.step === 0 ? [USER_PROFILE_ENTITY] : getSelectedEntities();\r\n const selectedRelations = state.entities.length === 0 || state.step < 2 ? [] : getSelectedRelations();\r\n\r\n const entitiesAndAttributes = selectedEntities.map((entity) => {\r\n const pageConfiguration = state.step === 3 || entity.isUserEntity ? entity.pageConfiguration : DEFAULT_PAGE_CONFIGURATION;\r\n return {\r\n name: entity.name?.trim(),\r\n icon: entity.icon,\r\n isUserEntity: entity.isUserEntity,\r\n attributes: entity.attributes.map((attribute) => {\r\n let picklist = attribute.picklist;\r\n if (attribute.type === \"State Field\" && attribute.picklist.length === 0) {\r\n picklist = [\"Not Started\", \"In Progress\", \"Completed\"];\r\n }\r\n return {\r\n name: attribute.name?.trim(),\r\n type: attribute.type,\r\n picklist: picklist,\r\n required: attribute.type === \"State Field\" ? true : attribute.required,\r\n unique: attribute.unique,\r\n isAzureAttribute: attribute.isAzureAttribute,\r\n sysName: attribute.sysName\r\n }\r\n }),\r\n pageConfiguration\r\n }\r\n });\r\n\r\n const request = new CreateProjectRequest(\r\n organizationDetails, projectProperties, userProperties,\r\n entitiesAndAttributes, selectedRelations\r\n );\r\n\r\n // const selectedEntities = state.entities.length === 0 ? [USER_PROFILE_ENTITY] : getSelectedEntities();\r\n // const selectedRelations = state.entities.length === 0 ? [] : getSelectedRelations();\r\n\r\n // await addSelectedDataToProject(\r\n // organizationId, project._id, selectedEntities, selectedRelations\r\n // );\r\n\r\n onCreate(request);\r\n }\r\n\r\n async function skipRecommendationAndCreateProject() {\r\n // toggleCreatingProject();\r\n postMessageToRuntime({\r\n eventType: \"PROJECT_NAME_CHANGED\",\r\n value: state.form.projectName\r\n })\r\n const organizationDetails = getOrganizationDetails();\r\n const projectProperties = getProjectProperties();\r\n const userProperties = getUserProperties();\r\n\r\n const selectedEntities = [USER_PROFILE_ENTITY];\r\n const selectedRelations = [];\r\n\r\n const entitiesAndAttributes = selectedEntities.map((entity) => ({\r\n name: entity.name?.trim(),\r\n icon: entity.icon,\r\n isUserEntity: entity.isUserEntity,\r\n attributes: entity.attributes.map((attribute) => ({\r\n name: attribute.name?.trim(),\r\n type: attribute.type,\r\n picklist: attribute.picklist,\r\n required: attribute.type === \"State Field\" ? true : attribute.required,\r\n unique: attribute.unique,\r\n isAzureAttribute: attribute.isAzureAttribute,\r\n sysName: attribute.sysName\r\n })),\r\n pageConfiguration: entity.pageConfiguration\r\n }));\r\n\r\n const request = new CreateProjectRequest(\r\n organizationDetails, projectProperties, userProperties,\r\n entitiesAndAttributes, selectedRelations\r\n );\r\n\r\n skipAIAndCreateProject(request);\r\n }\r\n\r\n function getOrganizationDetails() {\r\n const organizationDetails = { organizationId, organizationName };\r\n return organizationDetails;\r\n }\r\n\r\n function getProjectProperties() {\r\n return {\r\n ...state.form,\r\n language: state.form.language ? state.form.language.code : \"en\"\r\n };\r\n }\r\n\r\n function getUserProperties() {\r\n const email = user.username ? user.username : user.emails[0];\r\n const userProperties = { email };\r\n return userProperties;\r\n }\r\n\r\n function getSelectedEntities() {\r\n return state.entities.filter(entity => entity.checked).map(entity => ({\r\n ...entity,\r\n attributes: entity.attributes.filter(attribute => {\r\n return attribute.selected\r\n })\r\n }));\r\n }\r\n\r\n function getSelectedRelations() {\r\n return state.relations.filter(relation => relation.selected);\r\n }\r\n\r\n function showActions() {\r\n if (state.step === 2) {\r\n if (creatingProject) return false;\r\n const selectedEntities = state.entities.filter(entity => entity.checked);\r\n return selectedEntities.length > 1 ? state.relationsLoaded : true;\r\n }\r\n return !creatingProject;\r\n }\r\n\r\n // function isThereEntityWithDuplicateNames() {\r\n // const selectedEntities = state.entities.filter(entity => entity.checked);\r\n // return selectedEntities.some((entity, entityIndex) => {\r\n // const entityName = entity.name.trim().toLowerCase();\r\n // return selectedEntities.some((e, i) =>\r\n // e.name.trim().toLowerCase() === entityName &&\r\n // i !== entityIndex\r\n // );\r\n // });\r\n // }\r\n\r\n const stepContent = [\r\n ,\r\n ,\r\n ,\r\n \r\n ]\r\n\r\n const stepDialogActions = [\r\n
    \r\n
    \r\n {\r\n showAIFields ?\r\n <>\r\n
    \r\n {showBackButton &&\r\n \r\n }\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n :\r\n \r\n {t(\"buttons.create_app\")}\r\n \r\n }\r\n
    \r\n
    ,\r\n
    \r\n
    \r\n {\r\n state.isLoadingEntities ?\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 state.entities.some(entity => (\r\n entity.attributes.filter(attribute => (\r\n attribute.selected && attribute.type === \"State Field\"\r\n )).length > 1\r\n )) &&\r\n \r\n {t(\"errors.only_one_state_allowed\")}\r\n \r\n } */}\r\n {/* {\r\n isThereEntityWithDuplicateNames() &&\r\n \r\n {t(\"errors.duplicate_entity_names\")}\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 !state.isPageConfigurationLoading &&\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 return (\r\n <>\r\n
    \r\n {\r\n creatingProject ?\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n :\r\n \r\n {stepContent[state.step]}\r\n \r\n }\r\n
    \r\n
    \r\n {\r\n showActions() && stepDialogActions[state.step]\r\n }\r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default AliceGPTDialog;","import { useMsal } from '@azure/msal-react';\r\nimport React, { useState } from 'react';\r\nimport { getCompressedJson } from '../../API/Export/ExportApi';\r\nimport { checkProjectForDisplayPages, generateIncrementalChanges, generatePageConfiguration, removeAllChanges, removePlaceholderLinks, removePortalCreatedPages, removePortalItems, validateForPublish } from '../../API/Generation/Generation';\r\nimport { publishApplication, replacePublishErrorTerms, updateProjectPortalConfig } from '../../Components/Helpers/Launch';\r\nimport { updateNode } from '../../Components/Helpers/Nodes';\r\nimport { updateInstanceAfterPublishData } from '../../API/Instance/Instance';\r\nimport { updateProjectInstance } from '../../API/Project/project';\r\n\r\nfunction usePublishApplication(projectId, organizationId, instance, user, isFirstTimePublish = false) {\r\n\r\n const [publishState, setPublishState] = useState(\"\");\r\n const [error, setError] = useState(\"\");\r\n\r\n const msalContext = useMsal();\r\n\r\n function getCurrentUserId() {\r\n if (msalContext.accounts.length === 0)\r\n return user.azureId;\r\n if (msalContext.accounts.length > 0)\r\n return msalContext.accounts[0].localAccountId;\r\n throw new Error(\"User is not logged in to designer\");\r\n }\r\n\r\n async function publishApp() {\r\n try {\r\n setPublishState(\"InProgress\");\r\n setError(\"\");\r\n let result;\r\n const projectHasDisplayPages = await checkProjectForDisplayPages(projectId);\r\n if (projectHasDisplayPages) {\r\n result = await performIncrementalGeneration();\r\n } else {\r\n result = await performFullGeneration();\r\n }\r\n return result;\r\n } catch (e) {\r\n setPublishState(\"Failure\");\r\n setError(replacePublishErrorTerms(e.message));\r\n }\r\n }\r\n\r\n async function validateApp() {\r\n const response = await validateForPublish(projectId, \"production\");\r\n if (response.error) {\r\n throw new Error(response.error);\r\n }\r\n }\r\n\r\n async function performFullGeneration() {\r\n try {\r\n setPublishState(\"InProgress\");\r\n await validateApp();\r\n await generatePageForFullPublish();\r\n const compressedJson = await getCompressedJson(\r\n projectId, organizationId, getCurrentUserId(), instance._id, instance.instanceType !== \"Production\", false\r\n );\r\n updateProjectPortalConfig(projectId);\r\n const result = await publishApplication(msalContext, instance, compressedJson, isFirstTimePublish);\r\n if (result.status !== \"Success\") {\r\n throw result\r\n };\r\n await updateInstanceProperties(result.data.appId);\r\n setPublishState(\"Success\");\r\n return result;\r\n } catch (e) {\r\n setPublishState(\"Failure\");\r\n setError(replacePublishErrorTerms(e.message));\r\n return e;\r\n }\r\n }\r\n\r\n async function generatePageForFullPublish() {\r\n await removePortalCreatedPages(projectId);\r\n await removePortalItems(projectId);\r\n\r\n await generatePageConfiguration(projectId);\r\n\r\n await removePlaceholderLinks(projectId);\r\n\r\n await removeAllChanges(projectId);\r\n }\r\n\r\n async function performIncrementalGeneration() {\r\n try {\r\n setPublishState(\"InProgress\");\r\n await validateApp();\r\n const [compressedJson, generationError] = await generateIncrementalChanges(\r\n projectId, organizationId, getCurrentUserId(), instance._id, instance.instanceType !== \"Production\", false\r\n );\r\n if (generationError) {\r\n throw new Error(generationError);\r\n }\r\n await removeAllChanges(projectId);\r\n updateProjectPortalConfig(projectId);\r\n const result = await publishApplication(msalContext, instance, compressedJson, isFirstTimePublish);\r\n if (result.status !== \"Success\") {\r\n throw new Error(result.message);\r\n }\r\n await updateInstanceProperties(result.data.appId);\r\n setPublishState(\"Success\");\r\n return result;\r\n } catch (e) { \r\n setPublishState(\"Failure\");\r\n setError(replacePublishErrorTerms(e.message));\r\n }\r\n }\r\n\r\n async function updateInstanceProperties(appId) {\r\n await updateProjectInstance(\r\n projectId, instance._id, { Published: true, appId: appId }\r\n )\r\n // await updateNode(\"Instance\", instance.id, {\r\n // appId: appId,\r\n // status: \"Success\",\r\n // Published: true,\r\n // });\r\n // await updateInstanceAfterPublishData(instance.id, user.id);\r\n }\r\n\r\n return [\r\n publishState,\r\n error,\r\n publishApp,\r\n performFullGeneration,\r\n performIncrementalGeneration\r\n ];\r\n}\r\n\r\nexport default usePublishApplication;","import { useEffect, useState } from \"react\";\r\nimport { optimizeDisplayUsingAI } from \"../../../../API/AliceGPT/AliceGPT\";\r\nimport { postMessageToRuntime } from \"../../../Helpers/Runtime/runtime\";\r\nimport ShuffleMessage from \"../../../Shared/ShuffleMessage/ShuffleMessage\";\r\nimport { messagesWhenCreatingProject } from \"../../../Shared/ShuffleMessage/MessagesHelper\";\r\nimport usePublishApplication from \"../../../../Hooks/Publish/usePublishApplication\";\r\nimport useUser from \"../../../../Hooks/User/useUser\";\r\nimport { getCompressedJson } from \"../../../../API/Export/ExportApi\";\r\nimport { publishApplication, updateProjectPortalConfig } from \"../../../Helpers/Launch\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\n\r\nconst STATUS = {\r\n CREATING_PAGES: \"Creating pages using AI\",\r\n PUBLISHING_PROJECT: \"Publishing project\"\r\n}\r\n\r\nfunction UpdateDisplayPages({ projectId, organizationId, instance, url }) {\r\n\r\n const msalContext = useMsal();\r\n\r\n const [status, setStatus] = useState(\"\");\r\n const [showLoader, setShowLoader] = useState(false);\r\n\r\n function handleRedirect() {\r\n postMessageToRuntime({\r\n type: \"projectCreated\",\r\n openAppUrl: url\r\n })\r\n }\r\n\r\n async function handleRegenerate() {\r\n try {\r\n debugger;\r\n setShowLoader(true);\r\n setStatus(STATUS.CREATING_PAGES);\r\n await optimizeDisplayUsingAI(projectId);\r\n setStatus(STATUS.PUBLISHING_PROJECT);\r\n const compressedJson = await getCompressedJson(\r\n projectId, organizationId, msalContext.accounts[0]?.localAccountId, instance._id, false, false\r\n );\r\n updateProjectPortalConfig(projectId);\r\n const result = await publishApplication(\r\n msalContext, instance, compressedJson, false\r\n );\r\n if (result.status === \"Success\") {\r\n handleRedirect();\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n setShowLoader(false);\r\n // handleRedirect();\r\n }\r\n }\r\n\r\n if (showLoader) {\r\n return (\r\n
    \r\n

    {status}

    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n

    Do you want to re-generate display configuration using AI?

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default UpdateDisplayPages;","import React, { useState } from 'react';\r\nimport { postMessageToRuntime } from '../../../Components/Helpers/Runtime/runtime';\r\nimport { FailurePublishContent } from '../../../Components/PublishToRuntime/FailurePublish';\r\nimport UpgardeContent from '../../../Components/Shared/Subscription/UpgradeContent';\r\nimport { AliceGPTCreateProjectForm } from '../../../Components/Dashboard/Project/AliceGPT/AliceGPTDialog';\r\nimport { createProject, createProjectUsingAI } from '../../../Components/Dashboard/Project/AliceGPT/utils';\r\nimport useAliceGPT from '../../../Hooks/AliceGPT/useAliceGPT';\r\nimport UpdateDisplayPages from '../../../Components/Dashboard/Project/AliceGPT/UpdateDisplayPages';\r\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport { Button } from 'react-bootstrap';\r\nimport ShuffleMessage from '../../../Components/Shared/ShuffleMessage/ShuffleMessage';\r\nimport { messagesWhenCreatingProject } from '../../../Components/Shared/ShuffleMessage/MessagesHelper';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nfunction WorkspaceCreateProjectPage({ organization, backToAppLibrary, showBackButton }) {\r\n\r\n const { t } = useTranslation(\"workspace_create_project_page\", { useSuspense: false });\r\n\r\n const [state, dispatch] = useAliceGPT();\r\n\r\n const [projectLimitReached, setProjectLimitReached] = useState(false);\r\n const [showConfirmCreateProjectUsingAIDialog, setShowConfirmCreateProjectUsingAIDialog] = useState(false);\r\n const [projectRequestBody, setProjectRequestBody] = useState(null);\r\n const [isCreatingProject, setIsCreatingProject] = useState(false);\r\n\r\n const [publishError, setPublishError] = useState(null);\r\n const [showUpdateDisplay, setShowUpdateDisplay] = useState(false);\r\n const [createdProject, setCreatedProject] = useState(null);\r\n\r\n if (projectLimitReached) {\r\n return (\r\n
    \r\n more apps? '}\r\n Type={\"Pro\"}\r\n isShowFromWorkspace={true}\r\n />\r\n
    \r\n )\r\n }\r\n\r\n if (publishError) {\r\n return (\r\n
    \r\n setPublishError(null)}\r\n />\r\n
    \r\n )\r\n }\r\n\r\n function toggleUpgradeDialog() {\r\n setProjectLimitReached(true);\r\n }\r\n\r\n function toggleCreateProjectUsingAIDialog() {\r\n debugger;\r\n setShowConfirmCreateProjectUsingAIDialog(!showConfirmCreateProjectUsingAIDialog);\r\n }\r\n\r\n function toggleIsCreatingProject() {\r\n setIsCreatingProject(!isCreatingProject);\r\n }\r\n\r\n function handleCreateClick(projectRequestBody) {\r\n toggleCreateProjectUsingAIDialog();\r\n setProjectRequestBody(projectRequestBody);\r\n }\r\n\r\n async function handleCreate() {\r\n try {\r\n toggleIsCreatingProject();\r\n const response = await createProject(projectRequestBody);\r\n if (response.status === \"Failure\") {\r\n if (response.message === \"Max apps allowed limit reached\") {\r\n toggleUpgradeDialog();\r\n } else {\r\n throw new Error(response.message);\r\n }\r\n }\r\n debugger\r\n setCreatedProject(response.data);\r\n // setShowUpdateDisplay(true);\r\n postMessageToRuntime({\r\n type: \"projectCreated\",\r\n openAppUrl: response.data.appUrl\r\n })\r\n } catch (error) {\r\n setPublishError(error.message);\r\n console.error(error);\r\n } finally {\r\n toggleIsCreatingProject();\r\n }\r\n }\r\n\r\n async function handleCreateUsingAI() {\r\n try {\r\n toggleIsCreatingProject();\r\n const response = await createProjectUsingAI(projectRequestBody);\r\n if (response.status === \"Failure\") {\r\n if (response.message === \"Max apps allowed limit reached\") {\r\n toggleUpgradeDialog();\r\n } else {\r\n throw new Error(response.message);\r\n }\r\n }\r\n debugger\r\n setCreatedProject(response.data);\r\n // setShowUpdateDisplay(true);\r\n postMessageToRuntime({\r\n type: \"projectCreated\",\r\n openAppUrl: response.data.appUrl\r\n })\r\n } catch (error) {\r\n setPublishError(error.message);\r\n console.error(error);\r\n } finally {\r\n toggleIsCreatingProject();\r\n }\r\n }\r\n\r\n async function skipAIAndCreateProject(projectRequestBody) {\r\n try {\r\n toggleIsCreatingProject();\r\n const response = await createProject(projectRequestBody);\r\n if (response.status === \"Failure\") {\r\n if (response.message === \"Max apps allowed limit reached\") {\r\n toggleUpgradeDialog();\r\n } else {\r\n throw new Error(response.message);\r\n }\r\n }\r\n setCreatedProject(response.data);\r\n // setShowUpdateDisplay(true);\r\n postMessageToRuntime({\r\n type: \"projectCreated\",\r\n openAppUrl: response.data.appUrl\r\n })\r\n } catch (error) {\r\n setPublishError(error.message);\r\n console.error(error);\r\n } finally {\r\n toggleIsCreatingProject();\r\n }\r\n }\r\n\r\n if (showUpdateDisplay && createdProject) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n if (isCreatingProject) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n showConfirmCreateProjectUsingAIDialog &&\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n

    {t(\"generation_method_dialog.heading\")}

    \r\n {/*
    Choose how to create your app
    */}\r\n {/*
    Either a quick setup with our system or a more accurate option with AI assistance.
    */}\r\n
    \r\n {t(\"generation_method_dialog.description\")}\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\nWorkspaceCreateProjectPage.defaultProps = {\r\n organization: {},\r\n user: {}\r\n}\r\n\r\nexport default WorkspaceCreateProjectPage;","import React, { useEffect, useState } from \"react\"\r\nimport { useParams } from \"react-router-dom\";\r\nimport SolutionLibrary from \"../../Components/Dashboard/SolutionLibrary/SolutionLibrary\";\r\nimport Loader from \"../../Components/Shared/Loader/loader\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport WelcomeUser from \"../../Components/Dashboard/Project/WelcomeUser\";\r\nimport WorkspaceCreateProjectPage from \"./Recommendation/WorkspaceCreateProjectPage\";\r\nimport { AliceGPTContextProvider } from \"../../Context/AliceGPT/AliceGPTContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getUserAndItsOrganizations } from \"../../API/Organization/organization\";\r\nimport { postMessageToRuntime } from \"../../Components/Helpers/Runtime/runtime\";\r\n\r\nexport const WorkspacePage = (props) => {\r\n\r\n const params = useParams()\r\n const context = useMsal()\r\n\r\n const [state, setState] = useState({\r\n loading: true,\r\n showCreateProjectPage: false,\r\n organization: {},\r\n user: {},\r\n userRole: {},\r\n error: {\r\n isValid: true,\r\n type: \"\",\r\n message: \"\"\r\n }\r\n })\r\n\r\n const { i18n, ready: tReady } = useTranslation();\r\n\r\n const validateAccess = async () => {\r\n let error = {\r\n isValid: true,\r\n type: \"\",\r\n message: \"\"\r\n }\r\n let organization = {}\r\n let user = {}\r\n let userRole = {}\r\n const accessToken = localStorage.getItem(\"accessToken\")\r\n if (!accessToken) {\r\n error.isValid = false\r\n error.type = \"login\"\r\n error.message = \"You are not logged in\"\r\n } else {\r\n let { organizations, user } = await getUserAndItsOrganizations(params.userEmail);\r\n organization = organizations.find(org => org._id === params.organizationId) || []\r\n const organizationUser = organization.users.find(u => u.userId === user._id)\r\n userRole = organization.roles.find(r => r._id === organizationUser.roleId)\r\n user = user || {}\r\n if (user._id === undefined) {\r\n error.isValid = false\r\n error.type = \"user \"\r\n error.message = \"User not found\"\r\n } else if (organization.length === 0) {\r\n error.isValid = false\r\n error.type = \"organization\"\r\n error.message = \"No organization found for User\"\r\n } else if (organization._id !== params.organizationId) {\r\n error.isValid = false\r\n error.type = \"organization\"\r\n error.message = \"You do not have access to this organization\"\r\n } else if (!organization.isActive) {\r\n error.isValid = false\r\n error.type = \"organization\"\r\n error.message = \"Organization is not active anymore\"\r\n }\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n error,\r\n loading: false,\r\n user,\r\n organization,\r\n userRole: userRole || {}\r\n }))\r\n }\r\n\r\n const backToAppLibrary = () => {\r\n postMessageToRuntime({\r\n eventType: \"PROJECT_NAME_CHANGED\",\r\n value: \"\"\r\n })\r\n setState(prevState => ({\r\n ...prevState,\r\n showCreateProjectPage: false\r\n }))\r\n }\r\n\r\n useEffect(() => {\r\n validateAccess();\r\n }, [context]);\r\n\r\n useEffect(() => {\r\n if (tReady) {\r\n i18n.changeLanguage(state.organization.platformLanguage || \"en\");\r\n }\r\n }, [tReady, state.organization])\r\n\r\n if (state.loading) return \r\n\r\n if (state.error.isValid === false && state.error.type === \"subscription\") {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (state.error.isValid === false) {\r\n return (\r\n
    \r\n
    \r\n {state.error.message}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n if (state.showCreateProjectPage) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n {\r\n setState(prevState => ({\r\n ...prevState,\r\n showCreateProjectPage: true\r\n }))\r\n }}\r\n user={state.user}\r\n userRole={state.userRole}\r\n organization={state.organization}\r\n />\r\n )\r\n}","var V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i];\n\n if (!V3_URL_REGEX.test(script.src)) {\n continue;\n }\n\n return script;\n }\n\n return null;\n};\n\nvar injectScript = function injectScript(params) {\n var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n var script = document.createElement('script');\n script.src = \"\".concat(V3_URL).concat(queryString);\n var headOrBody = document.head || document.body;\n\n if (!headOrBody) {\n throw new Error('Expected document.body not to be null. Stripe.js requires a element.');\n }\n\n headOrBody.appendChild(script);\n return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n if (!stripe || !stripe._registerWrapper) {\n return;\n }\n\n stripe._registerWrapper({\n name: 'stripe-js',\n version: \"1.42.0\",\n startTime: startTime\n });\n};\n\nvar stripePromise = null;\nvar loadScript = function loadScript(params) {\n // Ensure that we only attempt to load Stripe.js at most once\n if (stripePromise !== null) {\n return stripePromise;\n }\n\n stripePromise = new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n // Resolve to null when imported server side. This makes the module\n // safe to import in an isomorphic code base.\n resolve(null);\n return;\n }\n\n if (window.Stripe && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n }\n\n if (window.Stripe) {\n resolve(window.Stripe);\n return;\n }\n\n try {\n var script = findScript();\n\n if (script && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n } else if (!script) {\n script = injectScript(params);\n }\n\n script.addEventListener('load', function () {\n if (window.Stripe) {\n resolve(window.Stripe);\n } else {\n reject(new Error('Stripe.js not available'));\n }\n });\n script.addEventListener('error', function () {\n reject(new Error('Failed to load Stripe.js'));\n });\n } catch (error) {\n reject(error);\n return;\n }\n });\n return stripePromise;\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n if (maybeStripe === null) {\n return null;\n }\n\n var stripe = maybeStripe.apply(undefined, args);\n registerWrapper(stripe, startTime);\n return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n// own script injection.\n\nvar stripePromise$1 = Promise.resolve().then(function () {\n return loadScript(null);\n});\nvar loadCalled = false;\nstripePromise$1[\"catch\"](function (err) {\n if (!loadCalled) {\n console.warn(err);\n }\n});\nvar loadStripe = function loadStripe() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n loadCalled = true;\n var startTime = Date.now();\n return stripePromise$1.then(function (maybeStripe) {\n return initStripe(maybeStripe, args, startTime);\n });\n};\n\nexport { loadStripe };\n","export const ORGANIZATION_LOADED = \"ORGANIZATION_LOADED\";\r\n\r\nexport const STRIPE_LOADED = \"STRIPE_LOADED\";\r\n\r\nexport const CLIENT_SECRET_LOADED = \"CLIENT_SECRET_LOADED\";\r\n\r\nexport const NUM_SEATS_CHANGED = \"NUM_SEATS_CHANGED\";\r\n\r\nexport const TOGGLE_CONFIRMATION = \"TOGGLE_CONFIRMATION\";\r\n\r\nexport const INTERVAL_CHANGED = \"INTERVAL_CHANGED\";\r\n\r\nexport const PRICE_SELECTED = \"PRICE_SELECTED\";\r\n\r\nexport const CURRENT_SUBSCRIPTION_LOADED = \"CURRENT_SUBSCRIPTION_LOADED\";\r\n\r\nexport const CURRENT_SUBSCRIPTION_STRIPE_DATA_LOADED = \"CURRENT_SUBSCRIPTION_STRIPE_DATA_LOADED\";\r\n\r\nexport const PAYMENT_METHODS_LOADED = \"PAYMENT_METHODS_LOADED\";\r\n\r\nexport const PAYMENT_METHOD_SELECTED = \"PAYMENT_METHOD_SELECTED\";\r\n\r\nexport const TOGGLE_DOWNGRADE_DIALOG = \"TOGGLE_DOWNGRADE_DIALOG\";\r\n\r\nexport const TOGGLE_SEAT_OVERFLOW_DIALOG = \"TOGGLE_SEAT_OVERFLOW_DIALOG\";\r\n\r\nexport const TOGGLE_ROLE_OVERFLOW_DIALOG = \"TOGGLE_ROLE_OVERFLOW_DIALOG\";\r\n\r\nexport const SELECTED_SUBSCRIPTION_PARAMETERS_LOADED = \"SELECTED_SUBSCRIPTION_PARAMETERS_LOADED\";\r\n\r\nexport const TOGGLE_PROJECT_OVERFLOW_DIALOG = \"TOGGLE_PROJECT_OVERFLOW_DIALOG\";\r\n\r\nexport const NUM_ACTIVE_PROJECTS_LOADED = \"NUM_ACTIVE_PROJECTS_LOADED\";\r\n\r\nexport const TOGGLE_ADD_NEW_CARD_DIALOG = \"TOGGLE_ADD_NEW_CARD_DIALOG\";\r\n\r\nexport const NEW_CARD_ADDED = \"NEW_CARD_ADDED\";\r\n\r\nexport const NEW_PRICE_DATA_LOADED = \"NEW_PRICE_DATA_LOADED\";\r\n\r\nexport const NEW_PRICE_DATA_LOADING = \"NEW_PRICE_DATA_LOADING\";\r\n\r\nexport const PRICE_CHANGE_SUCCESSFUL = \"PRICE_CHANGE_SUCCESSFUL\";\r\n\r\nexport const ORGANIZATION_STRIPE_DATA_LOADED = \"ORGANIZATION_STRIPE_DATA_LOADED\";\r\n\r\nexport const SET_BILLING_INFORMATION = \"SET_BILLING_INFORMATION\";\r\n\r\nexport const SET_TAX_INFO = \"SET_TAX_INFO\";\r\n\r\nexport const PAYMENT_INFORMATION_VALID_STATE_CHANGED = \"PAYMENT_INFORMATION_VALID_STATE_CHANGED\";\r\n\r\nexport const SUBSCRIPTIONS_LOADED = \"SUBSCRIPTIONS_LOADED\";","import * as Events from \"./Events\"\r\n\r\nexport default (state, action) => {\r\n switch (action.type) {\r\n case Events.ORGANIZATION_LOADED:\r\n return {\r\n ...state,\r\n currentOrganization: { ...action.payload }\r\n }\r\n case Events.STRIPE_LOADED:\r\n return {\r\n ...state,\r\n // payload is not spread to avoid\r\n // stripe reference change\r\n stripe: action.payload\r\n }\r\n case Events.CLIENT_SECRET_LOADED:\r\n return {\r\n ...state,\r\n clientSecret: action.payload\r\n }\r\n case Events.NUM_SEATS_CHANGED:\r\n return {\r\n ...state,\r\n numSeats: action.payload\r\n }\r\n case Events.PRICE_SELECTED:\r\n return {\r\n ...state,\r\n selectedPlan: action.payload\r\n }\r\n case Events.INTERVAL_CHANGED:\r\n return {\r\n ...state,\r\n interval: state.interval === \"monthly\" ? \"annually\" : \"monthly\"\r\n }\r\n case Events.CURRENT_SUBSCRIPTION_LOADED:\r\n return {\r\n ...state,\r\n currentSubscription: action.payload\r\n }\r\n case Events.CURRENT_SUBSCRIPTION_STRIPE_DATA_LOADED:\r\n return {\r\n ...state,\r\n currentSubscriptionStripeData: { ...action.payload }\r\n }\r\n case Events.PAYMENT_METHODS_LOADED:\r\n return {\r\n ...state,\r\n paymentMethods: action.payload.map(paymentMethod => ({\r\n ...paymentMethod,\r\n isExpired: isCardExpired(paymentMethod)\r\n }))\r\n }\r\n case Events.PAYMENT_METHOD_SELECTED:\r\n return {\r\n ...state,\r\n selectedPaymentMethodId: action.payload\r\n }\r\n case Events.TOGGLE_DOWNGRADE_DIALOG:\r\n return {\r\n ...state,\r\n showDowngradeDialog: !state.showDowngradeDialog\r\n }\r\n case Events.TOGGLE_SEAT_OVERFLOW_DIALOG:\r\n return {\r\n ...state,\r\n showSeatOverflowDialog: !state.showSeatOverflowDialog\r\n }\r\n case Events.TOGGLE_ROLE_OVERFLOW_DIALOG:\r\n return {\r\n ...state,\r\n showRoleOverflowDialog: !state.showRoleOverflowDialog\r\n }\r\n case Events.SELECTED_SUBSCRIPTION_PARAMETERS_LOADED:\r\n return {\r\n ...state,\r\n selectedSubscriptionParameters: {\r\n ...action.payload\r\n }\r\n }\r\n case Events.TOGGLE_PROJECT_OVERFLOW_DIALOG:\r\n return {\r\n ...state,\r\n showProjectOverflowDialog: !state.showProjectOverflowDialog\r\n }\r\n case Events.NUM_ACTIVE_PROJECTS_LOADED:\r\n return {\r\n ...state,\r\n numberOfActiveProjects: action.payload\r\n }\r\n case Events.TOGGLE_ADD_NEW_CARD_DIALOG:\r\n return {\r\n ...state,\r\n showAddNewCardDialog: !state.showAddNewCardDialog\r\n }\r\n case Events.NEW_CARD_ADDED:\r\n return {\r\n ...state,\r\n paymentMethods: [\r\n ...state.paymentMethods,\r\n action.payload\r\n ]\r\n }\r\n case Events.NEW_PRICE_DATA_LOADED:\r\n return {\r\n ...state,\r\n loadingNewPriceData: false,\r\n newPriceData: action.payload\r\n }\r\n case Events.NEW_PRICE_DATA_LOADING:\r\n return {\r\n ...state,\r\n loadingNewPriceData: true\r\n }\r\n case Events.PRICE_CHANGE_SUCCESSFUL:\r\n return {\r\n ...state,\r\n priceChangeSuccessful: true\r\n }\r\n case Events.ORGANIZATION_STRIPE_DATA_LOADED:\r\n return {\r\n ...state,\r\n currentOrganizationStripeData: {\r\n ...action.payload\r\n }\r\n }\r\n case Events.SET_BILLING_INFORMATION:\r\n return {\r\n ...state,\r\n billingInformation: {\r\n ...action.payload\r\n }\r\n }\r\n case Events.SET_TAX_INFO:\r\n return {\r\n ...state,\r\n taxInfo: {\r\n ...action.payload\r\n }\r\n }\r\n case Events.PAYMENT_INFORMATION_VALID_STATE_CHANGED:\r\n return {\r\n ...state,\r\n paymentInformationValid: action.payload\r\n }\r\n case Events.SUBSCRIPTIONS_LOADED:\r\n return {\r\n ...state,\r\n subscriptions: [...action.payload]\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nfunction isCardExpired(paymentMethod) {\r\n const today = new Date();\r\n const expDate = new Date(paymentMethod.card.exp_year, paymentMethod.card.exp_month - 1);\r\n return expDate < today;\r\n}","import React, { createContext, useReducer, useState } from 'react';\r\nimport pricingReducer from './PricingReducer';\r\n\r\nexport const initialValue = {\r\n subscriptions: [],\r\n currentOrganization: {},\r\n currentOrganizationStripeData: {},\r\n currentSubscription: {},\r\n currentSubscriptionStripeData: {},\r\n numSeats: 3,\r\n selectedPlan: {\r\n price: {}\r\n },\r\n selectedSubscriptionParameters: {},\r\n stripe: {},\r\n newPriceData: {},\r\n billingInformation: {},\r\n taxInfo: {},\r\n paymentMethods: [],\r\n selectedPaymentMethodId: \"\",\r\n clientSecret: \"\",\r\n interval: \"annually\",\r\n showDowngradeDialog: false,\r\n showSeatOverflowDialog: false,\r\n showProjectOverflowDialog: false,\r\n showRoleOverflowDialog: false,\r\n showAddNewCardDialog: false,\r\n loadingNewPriceData: true,\r\n numberOfActiveProjects: 0,\r\n priceChangeSuccessful: false,\r\n paymentInformationValid: false,\r\n};\r\n\r\nexport const PricingContext = createContext(initialValue);\r\n\r\nfunction PricingContextProvider({ children, value = {} }) {\r\n\r\n const [state, dispatch] = useReducer(pricingReducer, {\r\n ...initialValue,\r\n ...value\r\n });\r\n\r\n return (\r\n \r\n { children }\r\n \r\n )\r\n}\r\n\r\nexport default PricingContextProvider;","import { Checkbox } from '@progress/kendo-react-inputs';\r\nimport React, { useContext, useEffect, useState } from 'react'\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport { PAYMENT_METHODS_LOADED, PAYMENT_METHOD_SELECTED } from '../../Context/Pricing/Events';\r\nimport { PricingContext } from '../../Context/Pricing/PricingContext';\r\nimport CardTypeImage from './CardTypeIcon';\r\nimport { getPaymentMethodsOfAnOrganization } from '../../API/Payment/Payment';\r\n\r\nfunction CustomerCardList({ organizationId, CardItem, log, onSelect, context = PricingContext }) {\r\n\r\n const { state, dispatch } = useContext(context);\r\n\r\n // const [paymentMethods, setPaymentMethods] = useState([]);\r\n\r\n useEffect(() => {\r\n getPaymentMethodsOfAnOrganization(organizationId)\r\n .then(paymentMethods => dispatch({\r\n type: PAYMENT_METHODS_LOADED,\r\n payload: paymentMethods\r\n }))\r\n .catch(console.error);\r\n }, []);\r\n\r\n if (\r\n CardItem &&\r\n (typeof CardItem === \"function\" || typeof CardItem === \"object\")\r\n ) {\r\n return state.paymentMethods.map((paymentMethod, index) => (\r\n dispatch({\r\n type: PAYMENT_METHOD_SELECTED,\r\n payload: e.value ? paymentMethod.id : \"\"\r\n })}\r\n index={index} />\r\n ))\r\n }\r\n\r\n return (\r\n
    \r\n { state.paymentMethods.map(paymentMethod => (\r\n
    \r\n dispatch({\r\n type: PAYMENT_METHOD_SELECTED,\r\n payload: e.value ? paymentMethod.id : \"\"\r\n })}\r\n />\r\n
    \r\n ))}\r\n
    \r\n )\r\n}\r\n\r\nexport default CustomerCardList","export const Free = {\r\n name: \"Free\",\r\n color: \"#3DA8D1\",\r\n bgColor:\"#E4F8FF\",\r\n textColor:\"#3697bc\",\r\n description: \"No credit card required\",\r\n cardDescription : \"A simple way to get your application running in minutes.\",\r\n isFree: true,\r\n inOffer: false,\r\n isDiscounted: false,\r\n price: {\r\n monthly: {\r\n stripePriceId: process.env.REACT_APP_STRIPE_FREE_MONTHLY_PRICE,\r\n amount: 0\r\n },\r\n annually: {\r\n stripePriceId: process.env.REACT_APP_STRIPE_FREE_ANNUAL_PRICE,\r\n amount: 0\r\n }\r\n },\r\n getDiscountedPrice: () => 0,\r\n includesOtherProductProperties: false,\r\n includedProductName: \"\",\r\n stripeProductId: process.env.REACT_APP_STRIPE_FREE_PRODUCT_ID,\r\n propertiesShownInCard: [\r\n \"Up to 2 seats\",\r\n \"1 Apps\",\r\n \"2 Super App portals/app\",\r\n \"500 MB data size\",\r\n \"100 records\",\r\n \"3 Editable Roles\",\r\n ]\r\n};\r\n\r\nexport const Starter = {\r\n name: \"Starter\",\r\n color: \"#6ECB71\",\r\n bgColor:\"#EAFFE5\",\r\n textColor:\"#63b665\",\r\n description: \"Free for a limited time\",\r\n cardDescription:\"Unlock essential tools and features for small businesses on the rise.\",\r\n inOffer: true,\r\n isDiscounted: false,\r\n price: {\r\n monthly: {\r\n stripePriceId: process.env.REACT_APP_STRIPE_STARTER_MONTHLY_PRICE,\r\n amount: 30\r\n },\r\n annually: {\r\n stripePriceId: process.env.REACT_APP_STRIPE_STARTER_ANNUAL_PRICE,\r\n amount: 300\r\n }\r\n },\r\n getDiscountedPrice: () => 0,\r\n includesOtherProductProperties: true,\r\n includedProductName: \"Free\",\r\n stripeProductId: process.env.REACT_APP_STRIPE_STARTER_PRODUCT_ID,\r\n propertiesShownInCard: [\r\n \"Up to 20 seats\",\r\n \"5 Apps\",\r\n \"3 Super App portals/app\",\r\n \"Calculated field\",\r\n \"Editable default Roles\",\r\n \"5 GB data size\",\r\n \"5,000 records\",\r\n ],\r\n};\r\n\r\nexport const Pro = {\r\n name: \"Pro\",\r\n color: \"#E5624D\",\r\n bgColor:\"#FFE9E5\",\r\n textColor:\"#ce5845\",\r\n description: \"Per seat, billed annually\",\r\n cardDescription:\"Comprehensive solutions in ONE workspace for cross-functional teams.\",\r\n inOffer: true,\r\n isDiscounted: false,\r\n price: {\r\n monthly: {\r\n stripePriceId: process.env.REACT_APP_STRIPE_PRO_MONTHLY_PRICE,\r\n amount: 48\r\n },\r\n annually: {\r\n stripePriceId: process.env.REACT_APP_STRIPE_PRO_ANNUAL_PRICE,\r\n amount: 480\r\n }\r\n },\r\n getDiscountedPrice: (price) => price / 2,\r\n includesOtherProductProperties: true,\r\n includedProductName: \"Starter\",\r\n stripeProductId: process.env.REACT_APP_STRIPE_PRO_PRODUCT_ID,\r\n propertiesShownInCard: [\r\n \"Up to 100 seats \",\r\n \"20 Apps\",\r\n \"5 Super App portals/app\",\r\n \"Fully configurable Roles\",\r\n \"200 GB data size\",\r\n \"Unlimited records\",\r\n \"Company logo\",\r\n \"Premium support\",\r\n ],\r\n};\r\n\r\nexport const Enterprise = {\r\n name: \"Enterprise\",\r\n color: \"#6F5CD5\",\r\n bgColor:\"#E9E5FF\",\r\n textColor:\"#6352bf\",\r\n description: \"Per seat, billed annually\",\r\n cardDescription:\"Scalable and fully-customized app workspace for entire organization.\",\r\n inOffer: true,\r\n isDiscounted: false,\r\n price: {\r\n monthly: {\r\n stripePriceId: process.env.REACT_APP_STRIPE_PRO_MONTHLY_PRICE,\r\n amount: 48\r\n },\r\n annually: {\r\n stripePriceId: process.env.REACT_APP_STRIPE_PRO_ANNUAL_PRICE,\r\n amount: 480\r\n }\r\n },\r\n getDiscountedPrice: (price) => price / 2,\r\n includesOtherProductProperties: true,\r\n includedProductName: \"Pro\",\r\n stripeProductId: process.env.REACT_APP_STRIPE_PRO_PRODUCT_ID,\r\n propertiesShownInCard: [\r\n \"Unlimited seats\",\r\n \"Unlimited apps\",\r\n \"Unlimited Super App portals/app\",\r\n \"1,000 GB data size\"\r\n ],\r\n};\r\n\r\nexport const SUBSCRIPTION_PLANS = [\r\n Free, Starter, Pro, Enterprise\r\n];\r\n\r\nexport const GridDetails = [\r\n {\r\n section: \"Essentials\",\r\n properties: [\r\n {\r\n property: \"Max number of seats\",\r\n Free: \"2\",\r\n Standard: \"20\",\r\n Pro:\"100\",\r\n Enterprise:\"Unlimited\",\r\n tooltip:\"Maximum number of user seats per workspace.\"\r\n },\r\n {\r\n property: \"Max number of apps\",\r\n Free: \"1\",\r\n Standard: \"5\",\r\n Pro: \"20\",\r\n Enterprise:\"Unlimited\",\r\n tooltip:\"Maximum number of apps per workspace.\"\r\n },\r\n {\r\n property: \"Data storage\",\r\n Free: \"500MB\",\r\n Standard: \"5GB\",\r\n Pro: \"200GB\",\r\n Enterprise:\"1,000GB\",\r\n tooltip:\"Maximum combined size of files, images, and records allowed per workspace.\"\r\n },\r\n {\r\n property: \"Number of records\",\r\n Free: \"100\",\r\n Standard: \"5,000\",\r\n Pro: \"Unlimited\",\r\n Enterprise:\"Unlimited\",\r\n tooltip:\"Maximum number of records per workspace.\"\r\n\r\n },\r\n {\r\n property: \"Super App portals/app\",\r\n Free: \"2\",\r\n Standard: \"3\",\r\n Pro: \"5\",\r\n Enterprise:\"Unlimited\",\r\n tooltip:\"Super App aims to become the go-to app for teams, reducing the need for multiple apps to fulfill different requirements. Example: Your Sales, Marketing, and Human Resources teams can collaborate seamlessly through interconnected portals in one app. Designated portals for each team can simplify their work processes and increase productivity.\"\r\n },\r\n {\r\n property: \"App size\",\r\n Free: \"Small\",\r\n Standard: \"Medium\",\r\n Pro: \"Large\",\r\n Enterprise:\"Unlimited\",\r\n tooltip:\"The bigger the app size, the more objects, properties, relations, lists, and charts you can have in your apps.\"\r\n },\r\n ],\r\n },\r\n {\r\n section: \"Productivity\",\r\n properties: [\r\n {\r\n property: \"AI recommendation\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro:\"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Build or customize apps effortlessly with Alice AI recommendation.\"\r\n },\r\n {\r\n property: \"Desktop, Tablet, Mobile\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro: \"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Codeless One apps are designed to be responsive on desktop, tablet, and mobile devices by default.\"\r\n },\r\n {\r\n property: \"Dashboards\",\r\n Free: \"1\",\r\n Standard: \"10\",\r\n Pro: \"Unlimited\",\r\n Enterprise:\"Unlimited\",\r\n tooltip:\"Maximum number of dashboards per workspace.\"\r\n },\r\n {\r\n property: \"Reports\",\r\n Free: \"1\",\r\n Standard: \"10\",\r\n Pro: \"Unlimited\",\r\n Enterprise:\"Unlimited\",\r\n tooltip:\"Maximum number of reports per workspace.\"\r\n\r\n },\r\n {\r\n property: \"Notifications\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro: \"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Automate email notifications based on customized conditions.\"\r\n },\r\n {\r\n property: \"Calculated field\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro: \"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Include calculated properties in your app using formulas, such as Revenue = Price * Quantity of goods.\"\r\n },\r\n {\r\n property: \"User Role/Rights management\",\r\n Free: \"3 Editable Roles\",\r\n Standard: \"3 Editable Roles\",\r\n Pro: \"Fully Editable\",\r\n Enterprise:\"Fully Editable\",\r\n tooltip:\"Set up who can access what information in your apps.\"\r\n \r\n },\r\n ],\r\n },\r\n {\r\n section: \"Views\",\r\n properties: [\r\n {\r\n property: \"Table\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro:\"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Visualize your data in a customized Table view.\"\r\n },\r\n {\r\n property: \"Split view\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro: \"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Easily view detailed information for records without having to switch between pages.\"\r\n },\r\n {\r\n property: \"Kanban\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro: \"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Manage and organize work more productively using a Kanban view.\"\r\n },\r\n {\r\n property: \"Cards\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro: \"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Show each record, e.g. Contacts, Orders, and Employees in a Card view.\"\r\n },\r\n {\r\n property: \"Calendar\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro: \"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Display time-critical data in a calendar format to ensure you never miss a deadline.\"\r\n },\r\n ],\r\n },\r\n {\r\n section: \"Add-ons\",\r\n properties: [\r\n {\r\n property: \"Additional Data Storage\",\r\n Free: \"\",\r\n Standard: \"\",\r\n Pro:\"Available for purchase\",\r\n Enterprise:\"Available for purchase\",\r\n tooltip:\"No need to worry about running out of data storage.\"\r\n },\r\n ],\r\n },\r\n {\r\n section: \"Personalization and support\", \r\n properties: [\r\n {\r\n property: \"Custom Org and App URL\",\r\n Free: \"Yes\",\r\n Standard: \"Yes\",\r\n Pro:\"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Customize the name and URL of your apps.\"\r\n },\r\n {\r\n property: \"Logo\",\r\n Free: \"\",\r\n Standard: \"\",\r\n Pro: \"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Replace Codeless ONE logo with yours in the app and browser tab.\"\r\n },\r\n {\r\n property: \"Customer support\",\r\n Free: \"Online\",\r\n Standard: \"Online\",\r\n Pro: \"Premier\",\r\n Enterprise:\"Premier\",\r\n tooltip:\"Get help from our support team anytime. \"\r\n },\r\n {\r\n property: \"Dedicated CS Manager\",\r\n Free: \"\",\r\n Standard: \"\",\r\n Pro: \"Yes\",\r\n Enterprise:\"Yes\",\r\n tooltip:\"Get personalized help, onboarding, and training support.\"\r\n },\r\n ],\r\n },\r\n \r\n];","import React from 'react';\r\n\r\nfunction SeatChangeInput({ numberOfSeats, disabled, onChange, setShowUpgradeMessage, maxSeats = 50, minSeats = 0 }) {\r\n\r\n function incrementSeats() {\r\n const newValue = numberOfSeats + 1;\r\n if (newValue <= maxSeats) {\r\n onChange(numberOfSeats + 1);\r\n }\r\n setShowUpgradeMessage(newValue > maxSeats);\r\n }\r\n\r\n function decrementSeats() {\r\n const newValue = numberOfSeats - 1;\r\n if (newValue >= minSeats) {\r\n onChange(numberOfSeats - 1);\r\n }\r\n setShowUpgradeMessage(newValue > maxSeats);\r\n }\r\n\r\n function handleChange(e) {\r\n const { value } = e.target;\r\n const numValue = Number(value);\r\n if (\r\n typeof numValue === \"number\" &&\r\n numValue % 1 === 0\r\n ) {\r\n onChange(numValue);\r\n }\r\n }\r\n\r\n function handleBlur(e) {\r\n if (numberOfSeats >= maxSeats) {\r\n onChange(maxSeats);\r\n } else if (numberOfSeats <= minSeats) {\r\n onChange(minSeats);\r\n }\r\n setShowUpgradeMessage(numberOfSeats > maxSeats);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n -\r\n \r\n \r\n \r\n = maxSeats}\r\n onClick={incrementSeats}\r\n style={{\r\n backgroundColor: (disabled || numberOfSeats >= maxSeats) ? \"#dee4ec\" : \"#1678f2\",\r\n color: \"#fff\", borderRadius: '100%', border: \"none\", height: \"24px\", width: \"24px\", lineHeight: \"0\"\r\n }}\r\n >\r\n \r\n +\r\n \r\n \r\n Seats\r\n
    \r\n )\r\n}\r\n\r\nexport default SeatChangeInput;","import { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport React, { useState } from 'react';\r\nimport InnerLoader from '../Shared/Loader/InnerLoader';\r\n\r\nfunction DowngradeDialog({\r\n oldPlanName, oldPlanInterval, oldSeats,\r\n nextPlanName, nextPlanInterval, nextSeats,\r\n planEndDate, isPlanDowngrade,\r\n onClose, onConfirm\r\n}) {\r\n\r\n const [loading, setLoading] = useState(false);\r\n\r\n async function handleConfirm() {\r\n try {\r\n setLoading(true);\r\n await onConfirm();\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n Below is the summary of your scheduled plan change.\r\n

    \r\n
    \r\n

    \r\n Current Plan - {oldPlanName} - {oldPlanInterval} - {oldSeats}\r\n

    \r\n

    \r\n New Plan: {nextPlanName} - {nextPlanInterval} - {nextSeats}.\r\n

    \r\n

    \r\n Effective date of the new plan: { planEndDate }.\r\n

    \r\n
    \r\n {\r\n isPlanDowngrade &&\r\n

    \r\n This downgrade may affect your access to some features and capabilities in the new plan.\r\n

    \r\n }\r\n

    \r\n Are you sure you want to proceed?\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n { loading && }\r\n \r\n \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default DowngradeDialog;","import { filterBy } from '@progress/kendo-data-query';\r\nimport { ComboBox } from '@progress/kendo-react-dropdowns';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport React, { useEffect, useImperativeHandle, useState } from 'react';\r\nimport countriesList from '../Shared/CountriesList/CountriesList.json';\r\n\r\nfunction BillingInformationForm({ onChange, showErrors = false, initialValue = {} }) {\r\n\r\n const [state, setState] = useState({\r\n firstName: \"\",\r\n lastName: \"\",\r\n billingAddress: \"\",\r\n state: \"\",\r\n city: \"\",\r\n country: {},\r\n zipCode: \"\"\r\n })\r\n\r\n const [focusedFields, setFocusedFields] = useState({\r\n firstName: false,\r\n lastName: false,\r\n billingAddress: false,\r\n state: false,\r\n city: false,\r\n country: false,\r\n zipCode: false\r\n })\r\n\r\n const [countries, setCountries] = useState(countriesList);\r\n const [states, setStates] = useState([]);\r\n\r\n useEffect(() => {\r\n if (initialValue && Object.keys(initialValue).length > 0) {\r\n const country = countriesList.find(country => country.code === initialValue.country);\r\n const state = country.states.find(state => state.code === initialValue.state);\r\n const { line1: billingAddress, postal_code: zipCode , city} = initialValue;\r\n const newState = {\r\n billingAddress,\r\n country,\r\n state,\r\n zipCode,\r\n city\r\n };\r\n if (initialValue.name) {\r\n const [firstName, ...lastName] = initialValue.name.split(\" \");\r\n newState.firstName = firstName;\r\n newState.lastName = lastName.join(\" \");\r\n }\r\n setState(prevState => ({ ...prevState, ...newState }));\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n onChange(getAddressDetails());\r\n }, [state])\r\n\r\n function getAddressDetails() {\r\n return {\r\n name: state.firstName + \" \" + state.lastName,\r\n line1: state.billingAddress,\r\n state: state.state && state.state.code ? state.state.code : \"\",\r\n city: state.city,\r\n country: state.country && state.country.code ? state.country.code : \"\",\r\n postal_code: state.zipCode\r\n }\r\n }\r\n\r\n function handleChange(e) {\r\n const { value, name } = e.target;\r\n setState(prevState => ({\r\n ...prevState,\r\n [name]: value === null ? {} : value\r\n }))\r\n }\r\n\r\n function handleCountryChange(e) {\r\n const { value } = e.target;\r\n setState(prevState => ({\r\n ...prevState,\r\n country: value === null ? {} : value,\r\n state: {}\r\n }))\r\n setCountries(countriesList)\r\n setStates(value ? value.states : []);\r\n }\r\n\r\n function handleBlur(e) {\r\n const { name } = e.target;\r\n setFocusedFields(prevFields => ({\r\n ...prevFields,\r\n [name]: showErrors\r\n }))\r\n }\r\n\r\n function filterByName(event) {\r\n const data = event.target.name === \"country\" ? countriesList : state.country.states;\r\n const setData = event.target.name === \"country\" ? setCountries : setStates;\r\n const slicedData = data.slice();\r\n setData(filterBy(slicedData, event.filter));\r\n }\r\n \r\n return (\r\n <>\r\n
    \r\n
    Billing Information
    \r\n
    \r\n
    \r\n \r\n First Name\r\n \r\n \r\n {\r\n focusedFields.firstName &&\r\n !state.firstName?.trim() &&\r\n \r\n  This field is required\r\n \r\n }\r\n
    \r\n
    \r\n \r\n Last Name\r\n \r\n \r\n {\r\n focusedFields.lastName &&\r\n !state.lastName?.trim() &&\r\n \r\n  This field is required\r\n \r\n }\r\n
    \r\n
    \r\n \r\n Street\r\n \r\n \r\n {\r\n focusedFields.billingAddress &&\r\n !state.billingAddress?.trim() &&\r\n \r\n  This field is required\r\n \r\n }\r\n
    \r\n
    \r\n \r\n \r\n {\r\n focusedFields.country &&\r\n !state.country.name &&\r\n \r\n  This field is required\r\n \r\n }\r\n
    \r\n
    \r\n \r\n State/Province\r\n \r\n \r\n {\r\n focusedFields.state &&\r\n !state.state.name &&\r\n \r\n  This field is required\r\n \r\n }\r\n
    \r\n
    \r\n \r\n City\r\n \r\n \r\n {\r\n focusedFields.city &&\r\n !state.city?.trim() &&\r\n \r\n  This field is required\r\n \r\n }\r\n
    \r\n
    \r\n \r\n Zip Code\r\n \r\n \r\n {\r\n focusedFields.zipCode &&\r\n !state.zipCode?.trim() &&\r\n \r\n  This field is required\r\n \r\n }\r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default BillingInformationForm;","import React from 'react';\r\nimport { getDatalakeImageUrl } from '../Helpers/DateLakeStorage';\r\n\r\nexport const acceptedCardWithImages = [\r\n {\r\n type: \"Visa\",\r\n src: getDatalakeImageUrl(\"visa.png\")\r\n },\r\n {\r\n type: \"Mastercard\",\r\n src: getDatalakeImageUrl(\"mastercard.png\")\r\n },\r\n {\r\n type: \"AMEX\",\r\n src: getDatalakeImageUrl(\"amex.png\")\r\n },\r\n {\r\n type: \"Discover\",\r\n src: getDatalakeImageUrl(\"discover.png\")\r\n },\r\n {\r\n type: \"JCB\",\r\n src: getDatalakeImageUrl(\"jcb.png\")\r\n },\r\n {\r\n type: \"Maestro\",\r\n src: getDatalakeImageUrl(\"maestro.png\")\r\n },\r\n {\r\n type: \"Union Pay\",\r\n src: getDatalakeImageUrl(\"union pay.png\")\r\n }\r\n];\r\n\r\nfunction AcceptedCardTypes({ className }) {\r\n return (\r\n
    \r\n {\r\n acceptedCardWithImages.map(image => (\r\n \r\n ))\r\n }\r\n
    \r\n )\r\n}\r\n\r\nexport default AcceptedCardTypes;","import React, { useEffect, useState } from 'react';\r\nimport { CardCvcElement, CardExpiryElement, CardNumberElement } from '@stripe/react-stripe-js';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport countriesList from '../Shared/CountriesList/CountriesList.json';\r\nimport { ComboBox } from '@progress/kendo-react-dropdowns';\r\nimport AcceptedCardTypes from './AcceptedCardTypes';\r\nimport { RadioButton } from '@progress/kendo-react-inputs';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\n\r\nconst ELEMENT_OPTIONS = {\r\n style: {\r\n base: {\r\n fontSize: '15px',\r\n color: '#172b4d',\r\n fontWeight: 600,\r\n fontFamily: '\"SF Pro Display\", sans-serif',\r\n '::placeholder': {\r\n color: '#3446634d',\r\n },\r\n },\r\n invalid: {\r\n color: '#9e2146',\r\n },\r\n }\r\n};\r\n\r\nconst ELEMENT_CARD_OPTIONS = {\r\n style: {\r\n base: {\r\n fontSize: '15px',\r\n color: '#172b4d',\r\n fontWeight: 600,\r\n fontFamily: '\"SF Pro Display\", sans-serif',\r\n '::placeholder': {\r\n color: 'transparent',\r\n },\r\n },\r\n invalid: {\r\n color: '#9e2146',\r\n },\r\n }\r\n};\r\n\r\nfunction NewCardForm({ onChange, errors = {} }) {\r\n\r\n const [complete, setComplete] = useState(false);\r\n const [cardNumberError, setCardNumberError] = useState(null);\r\n const [cardExpiryError, setCardExpiryError] = useState(null);\r\n const [cardCvcError, setCardCvcError] = useState(null);\r\n\r\n useEffect(\r\n () => {\r\n onChange({\r\n valid: (\r\n complete &&\r\n !cardNumberError &&\r\n !cardExpiryError &&\r\n !cardCvcError\r\n )\r\n })\r\n },\r\n [ complete, cardNumberError, cardExpiryError, cardCvcError ]\r\n )\r\n\r\n return (\r\n
    e.preventDefault()}>\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 if (event.empty) {\r\n setCardNumberError(\"Please enter the card number\")\r\n } else if (event.error) {\r\n setCardNumberError(event.error.message);\r\n } else {\r\n setCardNumberError(null);\r\n }\r\n setComplete(event.complete)\r\n }} />\r\n \r\n { cardNumberError || errors.cardNumberError }\r\n \r\n
    \r\n
    \r\n \r\n {\r\n if (event.empty) {\r\n setCardExpiryError(\"Please enter Expiration Date\")\r\n } else if (event.error) {\r\n if (\r\n event.error.message === \"Your card's expiration date is in the past.\" ||\r\n event.error.message === \"Your card's expiration year is in the past.\" \r\n ) {\r\n setCardExpiryError(\"Card expired\");\r\n } else if (\r\n event.error.message === \"Your card's expiration date is incomplete.\"\r\n ) {\r\n setCardExpiryError(\"Incomplete expiration date\");\r\n } else {\r\n setCardExpiryError(event.error.message);\r\n }\r\n } else {\r\n setCardExpiryError(null);\r\n }\r\n setComplete(event.complete)\r\n }} />\r\n \r\n { cardExpiryError || errors.cardExpiryError }\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {\r\n if (event.empty) {\r\n setCardCvcError(\"Please enter the security code\")\r\n } else if (event.error) {\r\n if (event.error.message === \"Your card's security code is incomplete.\") {\r\n setCardCvcError(\"Incomplete security code\");\r\n } else {\r\n setCardCvcError(event.error.message);\r\n }\r\n } else {\r\n setCardCvcError(null);\r\n }\r\n setComplete(event.complete)\r\n }} />\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {cardCvcError || errors.cardCvcError}\r\n
    \r\n
    \r\n \r\n )\r\n};\r\n\r\nexport default NewCardForm;","import { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport { Skeleton } from '@progress/kendo-react-indicators';\r\nimport { CardNumberElement, useElements, useStripe } from '@stripe/react-stripe-js';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport { updateCustomerDefaultPaymentMethod } from '../../API/Payment/Payment';\r\nimport InnerLoader from '../Shared/Loader/InnerLoader';\r\nimport Loader from '../Shared/Loader/loader';\r\nimport { OverlayLoader } from '../Shared/Loader/OverlayLoader';\r\nimport BillingInformationForm from './BillingInformationForm';\r\nimport NewCardForm from './NewCardForm';\r\n\r\nfunction AddNewCardDialog({ organizationId, customerId, onCreate, onClose }) {\r\n\r\n const stripe = useStripe();\r\n const elements = useElements();\r\n\r\n const formRef = useRef(null);\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [setupIntent, setSetupIntent] = useState(\"\");\r\n const [billingInformation, setBillingInformation] = useState({});\r\n\r\n const [cardInformationValid, setCardInformationValid] = useState(false);\r\n\r\n const [creatingCard, setCreatingCard] = useState(false);\r\n\r\n useEffect(() => {\r\n callApiWithAuthorization(\"/api/v0/payment/setup\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n customerId\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(({ clientSecret }) => setSetupIntent(clientSecret))\r\n .finally(() => setLoading(false))\r\n .catch(console.error);\r\n }, [])\r\n\r\n async function handleSubmit() {\r\n try {\r\n setCreatingCard(true);\r\n const { name, ...address } = billingInformation;\r\n const response = await stripe.confirmCardSetup(\r\n setupIntent,\r\n {\r\n payment_method: {\r\n card: elements.getElement(CardNumberElement),\r\n billing_details: {\r\n address,\r\n name\r\n }\r\n }\r\n }\r\n )\r\n debugger\r\n if (response.setupIntent) {\r\n await updateCustomerDefaultPaymentMethod(\r\n organizationId,\r\n response.setupIntent.payment_method\r\n )\r\n onCreate(response.setupIntent);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n setCreatingCard(false);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {\r\n loading &&\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 !loading &&\r\n <>\r\n {\r\n setCardInformationValid(valid)\r\n }} />\r\n
    \r\n
    \r\n setBillingInformation(value)} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Secure Checkout\r\n
    \r\n {/*
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n SSL Protected\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n PCI Compliant\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Encrypted\r\n \r\n
    \r\n
    */}\r\n
    \r\n
    \r\n \r\n }\r\n {\r\n !loading &&\r\n \r\n
    \r\n
    \r\n {\r\n creatingCard &&\r\n \r\n }\r\n
    \r\n \r\n Add new card\r\n \r\n
    \r\n
    \r\n }\r\n {\r\n creatingCard &&\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default AddNewCardDialog;","import React, { useEffect, useState } from 'react';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\n\r\nfunction CompanyTaxInfoFields({ onChange, showErrors = false, initialValue = {} }) {\r\n\r\n const [state, setState] = useState({\r\n isCompany: false,\r\n companyName: \"\",\r\n gstNumber: \"\"\r\n })\r\n\r\n const [focusedFields, setFocusedFields] = useState({\r\n companyName: false,\r\n gstNumber: false\r\n })\r\n\r\n useEffect(() => {\r\n if (Object.keys(initialValue).length > 0) {\r\n const isCompany = true;\r\n setState(prevState => ({\r\n ...prevState,\r\n isCompany,\r\n ...initialValue\r\n }))\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n onChange(state)\r\n }, [state])\r\n\r\n function handleChange(e) {\r\n const { name, value } = e.target;\r\n setState(prevState => ({\r\n ...prevState,\r\n [name]: value\r\n }))\r\n }\r\n\r\n function handleBlur(e) {\r\n const { name } = e.target;\r\n setFocusedFields(prevFields => ({\r\n ...prevFields,\r\n [name]: showErrors\r\n }))\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n setState(prevState => ({\r\n ...prevState,\r\n isCompany: !state.isCompany\r\n }))} />\r\n
    \r\n {\r\n state.isCompany &&\r\n
    \r\n \r\n \r\n
    \r\n }\r\n {\r\n state.isCompany &&\r\n
    \r\n \r\n {\r\n state.gstNumber &&\r\n !/[0-9]{9}(RC|RM|RP|RT)[0-9]{4}/g.test(state.gstNumber) &&\r\n \r\n {\" \"}GST number is invalid.\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 CompanyTaxInfoFields;","import { Skeleton } from '@progress/kendo-react-indicators';\r\n\r\nfunction OrderSummarySkeleton() {\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\nexport default OrderSummarySkeleton;","import React from 'react';\r\nimport { acceptedCardWithImages } from './AcceptedCardTypes';\r\n\r\nfunction CustomerCard({ paymentMethod, selected, onSelect }) {\r\n\r\n const cardType = acceptedCardWithImages.find(cardImage => (\r\n cardImage.type.toLowerCase() === paymentMethod.card.brand?.toLowerCase()\r\n ));\r\n\r\n return (\r\n
    \r\n \r\n {\r\n e.value = e.target.checked;\r\n onSelect(e);\r\n }} />\r\n \r\n\r\n
    \r\n
    \r\n { cardType?.type } ending in { paymentMethod.card.last4 }\r\n
    \r\n
    \r\n { paymentMethod.card.exp_month } / { paymentMethod.card.exp_year }\r\n {/* paymentMethod.isExpired is set in PricingReducer.js */}\r\n {\r\n paymentMethod.isExpired &&\r\n \r\n   Card expired, please update\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default CustomerCard;","import { Dialog } from \"@progress/kendo-react-dialogs\"\r\nimport './style/payment-loader.css';\r\n\r\n/* Source: https://codepen.io/orgi/pen/EraBMw */\r\nfunction PaymentLoader() {\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Please wait while we process the payment\r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default PaymentLoader","import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport CustomerCardList from './CustomerCardList';\r\nimport { CardCvcElement, CardExpiryElement, CardNumberElement, useElements, useStripe } from '@stripe/react-stripe-js';\r\nimport { PricingContext } from '../../Context/Pricing/PricingContext';\r\nimport * as Events from '../../Context/Pricing/Events';\r\nimport { SUBSCRIPTION_PLANS } from '../Shared/Subscription/SubscriptionInfo';\r\nimport SeatChangeInput from './SeatChangeInput';\r\nimport './stripe.css';\r\nimport moment from 'moment';\r\nimport DowngradeDialog from './DowngradeDialog';\r\nimport { addCustomerTaxId, getNewPrice, getNumberOfActiveProjects, getNumberOfSubscriptionUser, getPaymentMethodById, getProjectsWithUserCreateRoles, getSetupIntentClientSecret, getSubscriptionParameters, updateCustomer, updateCustomerDefaultPaymentMethod, updateNumberOfSeats, updateSubscriptionPrice } from '../../API/Payment/Payment';\r\nimport AddNewCardDialog from './AddNewCardDialog';\r\n// import Skeleton from '../Shared/Skeleton/Skeleton';\r\nimport NewCardForm from './NewCardForm';\r\nimport BillingInformationForm from './BillingInformationForm';\r\nimport CompanyTaxInfoFields from './CompanyTaxInfoFields';\r\nimport OrderSummarySkeleton from './OrderSummarySkeleton';\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport CustomerCard from './CustomerCard';\r\nimport countriesList from '../Shared/CountriesList/CountriesList.json';\r\nimport PaymentLoader from './PaymentLoader';\r\nimport { Tooltip } from '@progress/kendo-react-tooltip';\r\nimport { postMessageToRuntime } from '../Helpers/Runtime/runtime';\r\n\r\nfunction PriceChangeConfirmationForm({ isAccessedFromRuntime = false }) {\r\n\r\n const { state, dispatch } = useContext(PricingContext)\r\n\r\n const elements = useElements();\r\n const stripe = useStripe();\r\n\r\n const formRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const [cardNumberError, setCardNumberError] = useState(\"\");\r\n const [cardExpiryError, setCardExpiryError] = useState(\"\");\r\n const [cardCvcError, setCardCvcError] = useState(\"\");\r\n const [showUpgradeMessage, setShowUpgradeMessage] = useState(false);\r\n const [showPaymentFailureError, setShowPaymentFailureError] = useState(false);\r\n\r\n useEffect(() => {\r\n const { selectedPlan, currentSubscription, subscriptions } = state;\r\n debugger\r\n // getSubscriptionParameters(selectedPlan.stripeProductId)\r\n // .then(subscription => {\r\n const subscription = subscriptions.find(subscription => (\r\n subscription.stripeProductId === selectedPlan.stripeProductId\r\n ));\r\n dispatch({\r\n type: Events.SELECTED_SUBSCRIPTION_PARAMETERS_LOADED,\r\n payload: subscription\r\n })\r\n // })\r\n }, [state.selectedPlan])\r\n\r\n useEffect(() => {\r\n dispatch({ type: Events.NEW_PRICE_DATA_LOADING })\r\n getNewPriceData()\r\n .then(newPriceData => {\r\n debugger\r\n dispatch({\r\n type: Events.NEW_PRICE_DATA_LOADED,\r\n payload: newPriceData\r\n })\r\n })\r\n }, [state.numSeats, state.selectedPlan, state.interval])\r\n\r\n useEffect(() => {\r\n if (state.selectedPlan.name === \"Free\" && state.interval === \"annually\") {\r\n dispatch({\r\n type: Events.INTERVAL_CHANGED\r\n })\r\n }\r\n if (\r\n state.selectedPlan.name === \"Free\" &&\r\n state.numSeats !== 2\r\n ) {\r\n dispatch({\r\n type: Events.NUM_SEATS_CHANGED,\r\n payload: 2\r\n })\r\n } else if (\r\n state.selectedPlan.name !== \"Free\" &&\r\n state.numSeats === 2\r\n ) {\r\n dispatch({\r\n type: Events.NUM_SEATS_CHANGED,\r\n payload: 5\r\n })\r\n } else {\r\n const selectedSubscription = state.subscriptions.find(subscription => (\r\n subscription.stripeProductId === state.selectedPlan.stripeProductId\r\n ));\r\n if (state.numSeats > selectedSubscription.maxSeats) {\r\n dispatch({\r\n type: Events.NUM_SEATS_CHANGED,\r\n payload: selectedSubscription.maxSeats\r\n })\r\n }\r\n }\r\n }, [state.selectedPlan])\r\n\r\n async function getNewPriceData() {\r\n try {\r\n const { currentOrganization, numSeats, selectedPlan, interval } = state;\r\n const { stripePriceId } = selectedPlan.price[interval];\r\n const { stripeSubscriptionId } = currentOrganization;\r\n if (stripeSubscriptionId) {\r\n const price = await getNewPrice(stripeSubscriptionId, stripePriceId, numSeats);\r\n return price;\r\n }\r\n return {};\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async function handleSubmit(event) {\r\n setLoading(true);\r\n setCardNumberError(\"\");\r\n setCardCvcError(\"\");\r\n event.target.disabled = true;\r\n try {\r\n if (state.numSeats > parseInt(state.selectedSubscriptionParameters.maxSeats)) {\r\n setLoading(false);\r\n return;\r\n }\r\n const userHasPaymentMethods = checkIfUserHasPaymentMethods();\r\n if (userHasPaymentMethods) {\r\n const userHasChangedPlan = checkForPlanChange();\r\n if (userHasChangedPlan) {\r\n await handlePlanChange();\r\n setLoading(false);\r\n if (isAccessedFromRuntime) {\r\n postMessageToRuntime({\r\n designerStatus: \"success\"\r\n })\r\n }\r\n return;\r\n }\r\n const userHasChangedSeats = checkForSeatsChange();\r\n if (userHasChangedSeats) {\r\n const { currentOrganization, numSeats, selectedPaymentMethodId } = state;\r\n await updateNumberOfSeats(\r\n currentOrganization._id,\r\n currentOrganization.stripeSubscriptionId,\r\n numSeats,\r\n selectedPaymentMethodId\r\n )\r\n dispatch({\r\n type: Events.PRICE_CHANGE_SUCCESSFUL\r\n })\r\n setLoading(false);\r\n if (isAccessedFromRuntime) {\r\n postMessageToRuntime({\r\n designerStatus: \"success\"\r\n })\r\n }\r\n return;\r\n }\r\n } else {\r\n const { currentOrganization, interval, selectedPlan, numSeats } = state;\r\n const clientSecret = await getSetupIntentClientSecret(state.currentOrganization.stripeCustomerId);\r\n const { name, ...address } = state.billingInformation;\r\n let nameToUpdate = name;\r\n if (address.country === \"CA\") {\r\n nameToUpdate = state.taxInfo.companyName;\r\n }\r\n const response = await stripe.confirmCardSetup(clientSecret, {\r\n payment_method: {\r\n card: elements.getElement(CardNumberElement),\r\n billing_details: {\r\n address,\r\n name\r\n }\r\n }\r\n });\r\n try {\r\n if (response.setupIntent) {\r\n debugger;\r\n await updateCustomerDefaultPaymentMethod(\r\n currentOrganization._id,\r\n response.setupIntent.payment_method\r\n )\r\n if (!state.currentOrganizationStripeData.address) {\r\n await updateCustomer(\r\n currentOrganization._id,\r\n {\r\n address,\r\n stripeCustomerId: currentOrganization.stripeCustomerId\r\n }\r\n )\r\n }\r\n if (\r\n state.currentOrganizationStripeData.tax_ids &&\r\n state.currentOrganizationStripeData.tax_ids.data &&\r\n state.currentOrganizationStripeData.tax_ids.data.length === 0 &&\r\n state.taxInfo &&\r\n state.taxInfo.gstNumber\r\n ) {\r\n await addCustomerTaxId(\r\n state.currentOrganization._id,\r\n state.taxInfo.gstNumber\r\n )\r\n }\r\n await updateSubscriptionPrice(\r\n currentOrganization._id,\r\n currentOrganization.stripeSubscriptionId,\r\n selectedPlan.price[interval].stripePriceId,\r\n numSeats,\r\n response.setupIntent.payment_method\r\n )\r\n dispatch({\r\n type: Events.PRICE_CHANGE_SUCCESSFUL\r\n })\r\n if (isAccessedFromRuntime) {\r\n postMessageToRuntime({\r\n designerStatus: \"success\"\r\n })\r\n }\r\n } else if (response.error) {\r\n switch (response.error.code) {\r\n case \"expired_card\":\r\n setCardNumberError(\"Your card has expired.\");\r\n break;\r\n case \"incorrect_cvc\":\r\n setCardCvcError(\"Incorrect security code\");\r\n break;\r\n case \"processing_error\":\r\n setCardNumberError(\"An error occurred while processing your card. Try again in a little bit.\");\r\n break;\r\n case \"incorrect_number\":\r\n setCardNumberError(\"Your card number is incorrect.\");\r\n break;\r\n default:\r\n setCardNumberError(response.error.message);\r\n break;\r\n }\r\n }\r\n } catch (error) {\r\n if (error.message === \"Your card was declined.\") {\r\n setShowPaymentFailureError(true);\r\n } else {\r\n console.error(error);\r\n }\r\n await callApiWithAuthorization(\"/api/v0/payment/method/\" + response.setupIntent.payment_method, {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n })\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n event.target.disabled = false;\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function handlePlanChange() {\r\n try {\r\n const userHasUpgraded = checkIfUserUpgraded();\r\n if (userHasUpgraded) {\r\n const { currentOrganization, interval, selectedPlan, selectedPaymentMethodId, numSeats } = state;\r\n await updateSubscriptionPrice(\r\n currentOrganization._id,\r\n currentOrganization.stripeSubscriptionId,\r\n selectedPlan.price[interval].stripePriceId,\r\n numSeats,\r\n selectedPaymentMethodId\r\n )\r\n dispatch({\r\n type: Events.PRICE_CHANGE_SUCCESSFUL\r\n })\r\n } else {\r\n dispatch({\r\n type: Events.TOGGLE_DOWNGRADE_DIALOG\r\n })\r\n }\r\n } catch (e) {\r\n debugger\r\n if (e.message === \"Your card was declined.\") {\r\n setShowPaymentFailureError(true);\r\n } else {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n\r\n function checkIfUserUpgraded() {\r\n try {\r\n const { currentSubscriptionStripeData, selectedPlan, interval } = state;\r\n const currentSubscriptionAmount = currentSubscriptionStripeData.items.data[0].price.unit_amount / 100;\r\n const currentSubscriptionInterval = currentSubscriptionStripeData.items.data[0].price.recurring.interval;\r\n const selectedSubscriptionAmount = selectedPlan.price[interval].amount;\r\n return (\r\n selectedSubscriptionAmount >= currentSubscriptionAmount ||\r\n currentSubscriptionInterval === \"month\" && interval === \"yearly\"\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n function checkForSeatsChange() {\r\n try {\r\n const { currentSubscriptionStripeData, numSeats } = state;\r\n const previousSeatValue = currentSubscriptionStripeData.items.data[0].quantity;\r\n return previousSeatValue !== numSeats;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n function checkIfUserHasPaymentMethods() {\r\n return state.paymentMethods.length > 0;\r\n }\r\n\r\n function checkForPlanChange() {\r\n try {\r\n const { currentSubscriptionStripeData, selectedPlan, interval } = state;\r\n const currentSubscriptionId = currentSubscriptionStripeData.items.data[0].price.id;\r\n const selectedSubscriptionId = selectedPlan.price[interval].stripePriceId;\r\n return currentSubscriptionId !== selectedSubscriptionId;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n function getAmountDueToday() {\r\n const { currentSubscriptionStripeData, newPriceData } = state;\r\n const currentPriceId = currentSubscriptionStripeData && currentSubscriptionStripeData.items.data[0].price.id;\r\n const currentPriceQuantity = currentSubscriptionStripeData && currentSubscriptionStripeData.items.data[0].quantity;\r\n const newPriceId = newPriceData && newPriceData.lines ? newPriceData.lines.data[newPriceData.lines.data.length - 1].price.id : \"\";\r\n const newPriceQuantity = state.numSeats;\r\n if (\r\n currentSubscriptionStripeData &&\r\n currentPriceId === newPriceId &&\r\n currentPriceQuantity === newPriceQuantity\r\n ) {\r\n return 0;\r\n }\r\n return (\r\n (\r\n newPriceData &&\r\n newPriceData.amount_due &&\r\n newPriceData.amount_due / 100\r\n )\r\n ||\r\n 0\r\n );\r\n }\r\n\r\n function getDaysLeftInCurrentSubscription() {\r\n try {\r\n const { currentSubscriptionStripeData } = state;\r\n const currentSubscriptionEndDate = currentSubscriptionStripeData.current_period_end * 1000;\r\n const currentDate = new Date();\r\n const daysLeft = Math.ceil((currentSubscriptionEndDate - currentDate) / (1000 * 60 * 60 * 24));\r\n return daysLeft;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n function getRecurringTotal() {\r\n const { selectedPlan, interval, numSeats } = state;\r\n return (selectedPlan.price[interval].amount * (numSeats)).toFixed(2);\r\n }\r\n\r\n function getSavings() {\r\n try {\r\n const { numSeats } = state;\r\n if (numSeats < 0) {\r\n return 0;\r\n }\r\n const annualPrice = state.selectedPlan.price[\"annually\"].amount;\r\n const monthlyPrice = state.selectedPlan.price[\"monthly\"].amount;\r\n const annualPricePerMonth = annualPrice / 12;\r\n const finalAnnualPrice = state.selectedPlan.isDiscounted ? state.selectedPlan.getDiscountedPrice(annualPricePerMonth) : annualPricePerMonth;\r\n const finalMonthlyPrice = state.selectedPlan.isDiscounted ? state.selectedPlan.getDiscountedPrice(monthlyPrice) : monthlyPrice;\r\n const savings = parseInt(numSeats) * (finalMonthlyPrice - finalAnnualPrice) * 12;\r\n return savings;\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n\r\n async function handleDowngrade() {\r\n try {\r\n const seatsOverflow = await checkForSeatsOverflow();\r\n if (seatsOverflow) {\r\n dispatch({\r\n type: Events.TOGGLE_SEAT_OVERFLOW_DIALOG\r\n })\r\n return;\r\n }\r\n const projectsOverflow = await checkForProjectOverflow();\r\n if (projectsOverflow) {\r\n dispatch({\r\n type: Events.TOGGLE_PROJECT_OVERFLOW_DIALOG\r\n })\r\n return;\r\n }\r\n const rolesOverflow = await checkForRoleOverflow();\r\n if (rolesOverflow) {\r\n dispatch({\r\n type: Events.TOGGLE_ROLE_OVERFLOW_DIALOG\r\n })\r\n return;\r\n }\r\n const { currentOrganization, interval, selectedPlan, selectedPaymentMethodId, numSeats } = state;\r\n await updateSubscriptionPrice(\r\n currentOrganization._id,\r\n currentOrganization.stripeSubscriptionId,\r\n selectedPlan.price[interval].stripePriceId,\r\n numSeats,\r\n selectedPaymentMethodId\r\n )\r\n dispatch({\r\n type: Events.PRICE_CHANGE_SUCCESSFUL\r\n })\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async function checkForSeatsOverflow() {\r\n try {\r\n const { selectedSubscriptionParameters, currentOrganization } = state;\r\n const numberOfSubscriptionUser = await getNumberOfSubscriptionUser(currentOrganization._id);\r\n return (\r\n numberOfSubscriptionUser > parseInt(selectedSubscriptionParameters.maxSeats)\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async function checkForProjectOverflow() {\r\n try {\r\n const { _id } = state.currentOrganization;\r\n const numberOfActiveProjects = await getNumberOfActiveProjects(_id);\r\n dispatch({\r\n type: Events.NUM_ACTIVE_PROJECTS_LOADED,\r\n payload: numberOfActiveProjects\r\n });\r\n return numberOfActiveProjects > parseInt(state.selectedSubscriptionParameters.maxApps);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async function checkForRoleOverflow() {\r\n try {\r\n const { subscriptions, currentSubscription, selectedPlan } = state;\r\n const selectedSubscription = subscriptions.find(subscription => subscription.stripeProductId === selectedPlan.stripeProductId);\r\n if (selectedSubscription && selectedSubscription.rolesPermission !== \"Full access\" && currentSubscription.rolesPermission === \"Full access\") {\r\n const { _id } = state.currentOrganization;\r\n const projects = await getProjectsWithUserCreateRoles(_id);\r\n return projects.length > 0;\r\n }\r\n return false;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async function handleCardAdd(setupIntent) {\r\n try {\r\n const paymentMethod = await getPaymentMethodById(\r\n state.currentOrganization._id,\r\n setupIntent.payment_method\r\n );\r\n dispatch({\r\n type: Events.NEW_CARD_ADDED,\r\n payload: paymentMethod\r\n })\r\n dispatch({\r\n type: Events.TOGGLE_ADD_NEW_CARD_DIALOG\r\n })\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n function getAutoRenewalDate() {\r\n try {\r\n if (\r\n state.currentSubscriptionStripeData &&\r\n state.currentSubscriptionStripeData.current_period_end\r\n ) {\r\n const currentPrice = state.currentSubscriptionStripeData.items.data[0].price.unit_amount;\r\n const isIntervalUpgrade = state.interval === \"annually\" && state.currentSubscriptionStripeData.items.data[0].price.recurring.interval === \"month\";\r\n const isPriceUpgrade = state.selectedPlan.price[state.interval].amount > currentPrice;\r\n if (currentPrice === 0) {\r\n const currentIntervalDate = state.newPriceData ? state.newPriceData.subscription_proration_date : new Date() / 1000;\r\n if (state.interval === \"monthly\") {\r\n return moment(currentIntervalDate * 1000).add(1, 'months').format('LL');\r\n } else {\r\n return moment(currentIntervalDate * 1000).add(1, 'years').format('LL');\r\n }\r\n } else if (isIntervalUpgrade || isPriceUpgrade) {\r\n return moment(state.newPriceData.subscription_proration_date * 1000).add(1, 'years').format('LL');\r\n }\r\n return moment(\r\n new Date(state.currentSubscriptionStripeData.current_period_end * 1000)\r\n ).format('LL');\r\n }\r\n return \"\";\r\n } catch (e) {\r\n console.error();\r\n }\r\n }\r\n\r\n function getPlansToShow() {\r\n return SUBSCRIPTION_PLANS.filter(plan => plan.name !== \"Free\" && plan.name !== \"Enterprise\");\r\n }\r\n\r\n function isPaymentInformationValid() {\r\n const { paymentMethods, paymentInformationValid, billingInformation, taxInfo, selectedPaymentMethodId } = state;\r\n if (paymentMethods.length > 0 && selectedPaymentMethodId) {\r\n const selectedPaymentMethod = paymentMethods.find(paymentMethod => paymentMethod.id === selectedPaymentMethodId);\r\n return selectedPaymentMethod && !selectedPaymentMethod.isExpired;\r\n };\r\n const selectedCountry = countriesList.find(country => country.code === billingInformation.country);\r\n const countryHasStates = selectedCountry && selectedCountry.states && selectedCountry.states.length > 0;\r\n const billingInformationValid = (\r\n !!billingInformation.name?.trim() &&\r\n !!billingInformation.line1?.trim() &&\r\n (\r\n countryHasStates ? !!billingInformation.state?.trim() : true\r\n ) &&\r\n !!billingInformation.city?.trim() &&\r\n !!billingInformation.country?.trim() &&\r\n !!billingInformation.postal_code?.trim()\r\n );\r\n const taxInfoValid = taxInfo.isCompany ? (\r\n !!taxInfo.companyName?.trim() &&\r\n !!taxInfo.gstNumber?.trim() &&\r\n /[0-9]{9}(RC|RM|RP|RT)[0-9]{4}/g.test(taxInfo.gstNumber) &&\r\n taxInfo.gstNumber.length === 15\r\n ) : true;\r\n return paymentInformationValid && billingInformationValid && taxInfoValid;\r\n }\r\n\r\n function isSeatsValid() {\r\n const { numSeats, subscriptions } = state;\r\n const selectedSubscription = subscriptions.find(subscription => (\r\n subscription.stripeProductId === state.selectedPlan.stripeProductId\r\n ));\r\n if (selectedSubscription) {\r\n if (selectedSubscription.stripeProductId === process.env.REACT_APP_STRIPE_FREE_PRODUCT_ID) {\r\n return numSeats !== 2;\r\n }\r\n return numSeats < 5 || numSeats > parseInt(selectedSubscription.maxSeats);\r\n }\r\n return false;\r\n }\r\n\r\n function isPlanDowngrade() {\r\n const { currentSubscriptionStripeData } = state;\r\n const productId = currentSubscriptionStripeData.plan.product;\r\n const selectedProductId = state.selectedPlan.stripeProductId;\r\n return (\r\n (\r\n productId === process.env.REACT_APP_STRIPE_PRO_PRODUCT_ID &&\r\n selectedProductId === process.env.REACT_APP_STRIPE_STARTER_PRODUCT_ID\r\n ) ||\r\n (\r\n productId === process.env.REACT_APP_STRIPE_STARTER_PRODUCT_ID &&\r\n selectedProductId === process.env.REACT_APP_STRIPE_FREE_PRODUCT_ID\r\n )\r\n )\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n state.showDowngradeDialog &&\r\n {\r\n dispatch({ type: Events.TOGGLE_DOWNGRADE_DIALOG })\r\n }}\r\n onConfirm={handleDowngrade} />\r\n }\r\n {\r\n state.showAddNewCardDialog &&\r\n {\r\n dispatch({\r\n type: Events.TOGGLE_ADD_NEW_CARD_DIALOG\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

    Subscription Details

    \r\n
    \r\n
    \r\n \r\n {\r\n dispatch({\r\n type: Events.PRICE_SELECTED,\r\n payload: e.value\r\n })\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n if (state.interval === \"annually\") {\r\n dispatch({\r\n type: Events.INTERVAL_CHANGED\r\n })\r\n }\r\n }}>\r\n
    \r\n
    Monthly
    \r\n
    \r\n
    \r\n

    ${state.selectedPlan.price.monthly.amount}

    \r\n
    \r\n
    \r\n

    /User /Month

    \r\n

    Billed Monthly

    \r\n
    \r\n
    \r\n {\r\n state.selectedPlan.name !== \"Free\" ?\r\n {\r\n if (state.interval === \"monthly\") {\r\n dispatch({\r\n type: Events.INTERVAL_CHANGED\r\n })\r\n }\r\n }}>\r\n\r\n
    \r\n 2 months free\r\n
    \r\n
    \r\n
    Annual
    \r\n
    \r\n
    \r\n

    ${state.selectedPlan.price.annually.amount / 12}

    \r\n
    \r\n
    \r\n

    /User /Month

    \r\n

    Billed Annually

    \r\n
    \r\n
    \r\n :\r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Payment Method

    \r\n
    \r\n {\r\n state.paymentMethods.length === 0 &&\r\n
    \r\n {\r\n dispatch({\r\n type: Events.PAYMENT_INFORMATION_VALID_STATE_CHANGED,\r\n payload: valid\r\n })\r\n }}\r\n errors={{\r\n cardNumberError,\r\n cardExpiryError,\r\n cardCvcError\r\n }}\r\n />\r\n dispatch({\r\n type: Events.SET_BILLING_INFORMATION,\r\n payload: value\r\n })} />\r\n {\r\n state.billingInformation.country === \"CA\" &&\r\n dispatch({\r\n type: Events.SET_TAX_INFO,\r\n payload: value\r\n })} />\r\n }\r\n \r\n
    \r\n }\r\n
    \r\n \r\n {\r\n state.paymentMethods.length > 0 &&\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n

    \r\n Order Summary\r\n {\r\n showPaymentFailureError &&\r\n \r\n  Your card was declined.\r\n \r\n }\r\n

    \r\n\r\n {loading && }\r\n\r\n {\r\n state.loadingNewPriceData ?\r\n \r\n :\r\n <>\r\n
    \r\n
    \r\n

    \r\n Subscribe to{\" \"}\r\n {state.selectedPlan.name} - {state.interval === \"annually\" ? \"Annual\" : \"Monthly\"}{\" \"}\r\n Plan\r\n

    \r\n
    \r\n {\r\n state.interval === \"annually\" &&\r\n <>\r\n
    \r\n Annual Savings\r\n
    \r\n
    \r\n USD ${getSavings()}\r\n
    \r\n \r\n }\r\n
    \r\n Amount due today\r\n
    \r\n
    \r\n \r\n USD ${getAmountDueToday()}\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Renewal total\r\n
    \r\n
    \r\n USD ${getRecurringTotal()}\r\n
    \r\n
    \r\n Auto-renewal on {getAutoRenewalDate()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Confirm and Pay\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    Secure Checkout
    \r\n {/*
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n SSL Protected\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n PCI Compliant\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Encrypted\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 PriceChangeConfirmationForm;","import React, { useEffect, useState } from 'react';\r\nimport { Free, Enterprise, Starter, GridDetails, Pro } from '../Shared/Subscription/SubscriptionInfo';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nfunction ComparePlanTable() {\r\n\r\n const [showData, setShowData] = useState(false);\r\n\r\n const { t, i18n, ready } = useTranslation(\"payment/compare_plan_table\", { useSuspense: false });\r\n\r\n useEffect(() => {\r\n if (ready) {\r\n debugger\r\n // i18n.changeLanguage(\"ar\")\r\n }\r\n }, [ready])\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n {\r\n showData &&\r\n
    \r\n
    \r\n
    {e.dataItem.name}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.context.toggleEditLabelTranslationDialog()\r\n this.context.setSelectedEntity(this.props.dataItem)\r\n }}\r\n className=\"btn btn-secondary\">\r\n \r\n \r\n \r\n (\r\n \r\n {this.props.t(\"grid.tooltip.select_properties\")}\r\n \r\n )}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {props.dataItem.subscriptionName}\r\n {props.dataItem.archived && (Archived)}\r\n {props.dataItem.private ? \"Yes\" : \"No\"}\r\n \r\n setPropertiesOnEdit(props.dataItem)}\r\n className=\"pe-3 btn btn-primary\"\r\n >\r\n Edit\r\n \r\n \r\n \r\n handleSelect(props.dataItem)} />\r\n \r\n { props.dataItem.cardinality === \"1-*\" && \"One to Many\"}\r\n { props.dataItem.cardinality === \"*-*\" && \"Many to Many\"}\r\n { props.dataItem.cardinality === \"1-1\" && \"One to One\"}\r\n \r\n \r\n \r\n \r\n \r\n handleEntitySelect(props.dataItem)} />\r\n handleExpand({ dataItem: props.dataItem })}>\r\n { props.dataItem[props.field] }\r\n
    \r\n {\r\n tooltip.current = value;\r\n }}\r\n anchorElement='target'\r\n position='right' />\r\n
    \r\n {\r\n getAttributesToShow().map((attribute, index) => (\r\n
    \r\n
    \r\n {attribute.attributeName}\r\n \r\n \r\n {/* \r\n \r\n \r\n
    \r\n {attribute.attributeName}\r\n \r\n }\r\n checked={attribute.selected}\r\n onChange={() => handleSelect(attribute)}\r\n disabled={shouldCheckboxBeDisabled(attribute, index)} /> */}\r\n \r\n ))\r\n }\r\n \r\n
    \r\n {props.dataItem.name}\r\n {\r\n Object.values(props.dataItem.pageConfiguration).every(value => !value) ?\r\n \r\n  \r\n \r\n \r\n :\r\n null\r\n }\r\n \r\n {\r\n handleCheckbox(event, props.dataItem.name)\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 {GridDetails.map(\r\n (info, index) => (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {info.properties.map(\r\n (property, pIndex) => (\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 Free\r\n \r\n \r\n \r\n Starter\r\n \r\n \r\n \r\n Pro\r\n \r\n \r\n \r\n Enterprise\r\n \r\n
    \r\n {info.section}\r\n
    \r\n \r\n {t(property.property.toLowerCase().replace(/[^a-zA-Z]/g, \"_\"))}\r\n \r\n \r\n \r\n \r\n \r\n {property.Free ===\r\n true ? (\r\n \r\n ) : (\r\n property.Free\r\n )}\r\n {/* {property.Free ===\r\n false && (\r\n \r\n )} */}\r\n \r\n {property.Standard ===\r\n true ? (\r\n \r\n ) : (\r\n property.Standard\r\n )}\r\n {/* {property.Standard ===\r\n false && (\r\n \r\n )} */}\r\n \r\n {property.Pro ===\r\n true ? (\r\n \r\n ) : (\r\n property.Pro\r\n )}\r\n {/* {property.Pro ===\r\n false && (\r\n \r\n )} */}\r\n \r\n {property.Enterprise ===\r\n true ? (\r\n \r\n ) : (\r\n property.Enterprise\r\n )}\r\n {/* {property.Pro ===\r\n false && (\r\n \r\n )} */}\r\n
    \r\n \r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default ComparePlanTable;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nimport { noop } from '@progress/kendo-react-common';\nimport util from './util';\nvar Reveal = /** @class */ (function (_super) {\n __extends(Reveal, _super);\n function Reveal() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n maxHeight: undefined,\n maxWidth: undefined\n };\n _this.componentWillEnter = function (event) {\n var _a = _this.props, onEnter = _a.onEnter, onBeforeEnter = _a.onBeforeEnter;\n if (onBeforeEnter) {\n onBeforeEnter.call(undefined, event);\n }\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEnter) {\n onEnter.call(undefined, event);\n }\n });\n };\n _this.componentIsEntering = function (event) {\n var onEntering = _this.props.onEntering;\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEntering) {\n onEntering.call(undefined, event);\n }\n });\n };\n _this.componentWillExit = function (event) {\n var onExit = _this.props.onExit;\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onExit) {\n onExit.call(undefined, event);\n }\n });\n };\n _this.updateContainerDimensions = function (node, done) {\n if (done === void 0) { done = noop; }\n var content = node.firstChild;\n if (content) {\n var newHeight = util.outerHeight(content);\n var newWidth = util.outerWidth(content);\n _this.setState({\n maxHeight: newHeight,\n maxWidth: newWidth\n }, done);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n Reveal.prototype.render = function () {\n var _a = this.props, direction = _a.direction, children = _a.children, childFactory = _a.childFactory, other = __rest(_a, [\"direction\", \"children\", \"childFactory\"]);\n var _b = this.state, maxHeight = _b.maxHeight, maxWidth = _b.maxWidth;\n var maxOffset;\n if (direction === 'vertical') {\n maxOffset = { maxHeight: maxHeight ? \"\".concat(maxHeight, \"px\") : '' };\n }\n else {\n maxOffset = { maxWidth: maxWidth ? \"\".concat(maxWidth, \"px\") : '' };\n }\n var animationEnteringStyle = {\n maxHeight: maxOffset.maxHeight,\n maxWidth: maxOffset.maxWidth\n };\n var factory = function (child) {\n var result = childFactory ? childFactory(child) : child;\n if (!result.props.in) {\n return React.cloneElement(result, __assign(__assign({}, result.props), { style: __assign(__assign({}, result.props.style), { maxHeight: maxOffset.maxHeight, maxWidth: maxOffset.maxWidth }) }));\n }\n return result;\n };\n return (React.createElement(Animation, __assign({}, other, { childFactory: factory, onEnter: this.componentWillEnter, onEntering: this.componentIsEntering, onExit: this.componentWillExit, animationEnteringStyle: animationEnteringStyle, transitionName: \"reveal-\".concat(direction) }), children));\n };\n /**\n * @hidden\n */\n Reveal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf([\n 'horizontal',\n 'vertical'\n ]),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n Reveal.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'vertical'\n };\n return Reveal;\n}(React.Component));\nexport { Reveal };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { Reveal } from '@progress/kendo-react-animation';\n/**\n * @hidden\n */\nfunction iconElement(_a) {\n var imageUrl = _a.imageUrl, icon = _a.icon, iconClass = _a.iconClass;\n if (imageUrl) {\n return (React.createElement(\"img\", { role: \"presentation\", className: 'k-panelbar-item-icon k-image', src: imageUrl }));\n }\n else if (icon) {\n var iconClasses = classNames('k-panelbar-item-icon', 'k-icon', 'k-i-' + icon);\n return (React.createElement(\"span\", { role: \"presentation\", className: iconClasses }));\n }\n else if (iconClass) {\n return (React.createElement(\"span\", { role: \"presentation\", className: 'k-panelbar-item-icon ' + iconClass }));\n }\n return null;\n}\nvar PanelBarItem = /** @class */ (function (_super) {\n __extends(PanelBarItem, _super);\n function PanelBarItem(props) {\n var _this = _super.call(this, props) || this;\n _this.handleItemClick = function () {\n var _a = _this.props, onSelect = _a.onSelect, disabled = _a.disabled, id = _a.id;\n if (onSelect && !disabled) {\n onSelect.call(undefined, {\n uniquePrivateKey: _this.props.uniquePrivateKey,\n id: id,\n target: _this\n });\n }\n };\n _this.childFactory = function (child) {\n if (_this.props.keepItemsMounted) {\n return React.cloneElement(child, __assign(__assign({}, child.props), { in: _this.props.expanded }));\n }\n return child;\n };\n _this.state = {\n show: props.expanded || false\n };\n return _this;\n }\n /**\n * @hidden\n */\n PanelBarItem.prototype.render = function () {\n var _a;\n var _this = this;\n var _b = this.props, id = _b.id, children = _b.children, title = _b.title, uniquePrivateKey = _b.uniquePrivateKey, disabled = _b.disabled, selected = _b.selected, focused = _b.focused, expanded = _b.expanded, className = _b.className, level = _b.level, headerClassName = _b.headerClassName, animation = _b.animation, keepItemsMounted = _b.keepItemsMounted;\n var panelBarItemAriaAttributes = {\n 'role': 'treeitem',\n 'aria-disabled': disabled,\n 'aria-hidden': !disabled && !expanded,\n 'aria-selected': !disabled && selected,\n 'aria-expanded': !disabled && expanded && !!children\n };\n var panelBarItemClassName = classNames('k-item', {\n 'k-panelbar-header': level === 0,\n 'k-panelbar-item': level !== 0,\n 'k-state-expanded': expanded && !!children\n }, \"k-level-\".concat(level), className);\n var panelBarLinkClassName = classNames('k-link', {\n 'k-selected': !disabled && selected,\n 'k-focus': !disabled && focused,\n 'k-disabled': disabled\n }, headerClassName);\n var panelBarItemArrowClassName = classNames('k-panelbar-toggle', 'k-icon', (_a = {},\n _a['k-i-arrow-chevron-up'] = expanded && !!children,\n _a['k-panelbar-collapse'] = expanded && !!children,\n _a['k-i-arrow-chevron-down'] = !expanded && !!children,\n _a['k-panelbar-expand'] = !expanded && !!children,\n _a));\n var animationStyle = { display: 'block' };\n var icon = iconElement(this.props);\n var arrow = (!disabled && children) ? React.createElement(\"span\", { className: panelBarItemArrowClassName }) : null;\n var opened = (!disabled && expanded);\n var content = opened || keepItemsMounted\n ? (React.createElement(\"ul\", { role: \"group\", className: \"k-panelbar-group k-panel k-group\", style: { display: keepItemsMounted\n ? (this.state.show ? 'block' : 'none')\n : 'block' } }, children))\n : null;\n var child = ((animation !== undefined ? animation : true) && !disabled && children)\n ? (React.createElement(Reveal, { transitionEnterDuration: 200, transitionExitDuration: 200, key: uniquePrivateKey + '_animation', style: animationStyle, children: content, childFactory: keepItemsMounted && this.childFactory, unmountOnExit: !keepItemsMounted, onBeforeEnter: function () { return keepItemsMounted && _this.setState({ show: true }); }, onAfterExited: function () { return keepItemsMounted && _this.setState({ show: false }); } }))\n : content;\n return (React.createElement(\"li\", __assign({ id: id, className: panelBarItemClassName }, panelBarItemAriaAttributes),\n React.createElement(\"span\", { className: panelBarLinkClassName, onClick: this.handleItemClick },\n icon,\n React.createElement(\"span\", { className: 'k-panelbar-item-text' }, title),\n arrow),\n child));\n };\n /**\n * @hidden\n */\n PanelBarItem.propTypes = {\n animation: PropTypes.bool,\n children: PropTypes.any,\n className: PropTypes.string,\n expanded: PropTypes.bool,\n disabled: PropTypes.bool,\n onSelect: PropTypes.func,\n selected: PropTypes.bool,\n level: PropTypes.number,\n title: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element\n ]),\n id: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n focused: PropTypes.bool,\n keepItemsMounted: PropTypes.bool\n };\n /**\n * @hidden\n */\n PanelBarItem.defaultProps = {\n title: 'Untitled'\n };\n return PanelBarItem;\n}(React.PureComponent));\nexport { PanelBarItem };\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};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { PanelBarItem } from './PanelBarItem';\n/**\n * @hidden\n */\nexport var renderChildren = function (_a) {\n var _b = _a.animation, animation = _b === void 0 ? true : _b, _c = _a.keepItemsMounted, keepItemsMounted = _c === void 0 ? false : _c, state = _a.state, expanded = _a.expanded, handleSelect = _a.handleSelect, children = _a.children, _d = _a.parentExpanded, parentExpanded = _d === void 0 ? true : _d, _e = _a.level, level = _e === void 0 ? 0 : _e, _f = _a.parentPrivateKey, parentPrivateKey = _f === void 0 ? [] : _f;\n return React.Children.map(children, function (child, idx) {\n if (child && child.type === PanelBarItem) {\n var nestedChildren = void 0;\n var privateKey = getId(child, parentPrivateKey, idx);\n if (child.props.children) {\n var renderState = {\n animation: animation,\n keepItemsMounted: keepItemsMounted,\n state: state,\n expanded: expanded,\n handleSelect: handleSelect,\n children: child.props.children,\n parentExpanded: (expanded || []).indexOf(privateKey) > -1,\n level: level + 1,\n parentPrivateKey: __spreadArray(__spreadArray([], parentPrivateKey, true), [privateKey], false)\n };\n nestedChildren = renderChildren(renderState);\n }\n return React.cloneElement(child, __assign(__assign({}, child.props), { animation: child.props.animation !== undefined ? child.props.animation : animation, keepItemsMounted: keepItemsMounted, id: child.props.id || \"k-panelbar-item-default-\".concat(privateKey), uniquePrivateKey: privateKey, parentUniquePrivateKey: parentPrivateKey, parentExpanded: parentExpanded, level: level, expanded: (expanded || []).indexOf(privateKey) > -1, focused: state.focused === privateKey && state.wrapperFocused, selected: state.selected === privateKey, children: nestedChildren, onSelect: handleSelect }));\n }\n else {\n return React.createElement(\"div\", { className: \"k-panelbar-content k-content\" }, child);\n }\n });\n};\n/**\n * @hidden\n */\nexport var getFirstId = function (props) {\n var firstItem = React.Children.toArray(props.children)[0];\n if (firstItem) {\n return getId(firstItem, [], 0);\n }\n return '';\n};\n/**\n * @hidden\n */\nexport var getInitialState = function (props, expandMode, result, parentExpanded, parentPrivateKey) {\n if (result === void 0) { result = {\n expanded: props.expanded || [],\n selected: props.selected || '',\n focused: props.focused || '',\n wrapperFocused: false\n }; }\n if (parentExpanded === void 0) { parentExpanded = true; }\n if (parentPrivateKey === void 0) { parentPrivateKey = []; }\n React.Children.map(props.children, function (child, idx) {\n if (child && child.type === PanelBarItem) {\n var privateKey = getId(child, parentPrivateKey, idx);\n if (!child.props.disabled && parentExpanded) {\n if (child.props.selected) {\n result.selected = privateKey;\n }\n if (child.props.focused) {\n result.focused = privateKey;\n }\n if (child.props.expanded) {\n if (expandMode === 'multiple') {\n result.expanded.push(privateKey);\n }\n else if (expandMode === 'single') {\n result.expanded = [privateKey];\n }\n }\n if (child.props.children) {\n result = getInitialState(child.props, expandMode, result, !!child.props.expanded, __spreadArray(__spreadArray([], parentPrivateKey, true), [privateKey], false));\n }\n }\n }\n });\n return result;\n};\n/**\n * @hidden\n */\nvar getId = function (child, parentPrivateKey, idx) {\n return child && child.props && child.props.id\n ? child.props.id\n : parentPrivateKey.length\n ? parentPrivateKey[parentPrivateKey.length - 1] + \".\".concat(idx)\n : \".\".concat(idx);\n};\n/**\n * @hidden\n */\nexport function flatVisibleItems(data, flattedItems) {\n if (flattedItems === void 0) { flattedItems = []; }\n (data || []).forEach(function (item) {\n if (!item.disabled) {\n flattedItems.push(item);\n if (item.expanded && item.children) {\n flatVisibleItems(item.children, flattedItems);\n }\n }\n });\n return flattedItems;\n}\n/**\n * @hidden\n */\nexport function flatChildren(children, flattenChildren) {\n if (flattenChildren === void 0) { flattenChildren = []; }\n React.Children.forEach(children, function (child) {\n if (child && child.props && !child.props.disabled) {\n flattenChildren.push(child);\n if (child.props.children) {\n flatChildren(child.props.children, flattenChildren);\n }\n }\n });\n return flattenChildren;\n}\n;\n/**\n * @hidden\n */\nexport function flatVisibleChildren(children, flattenVisibleChildren) {\n if (flattenVisibleChildren === void 0) { flattenVisibleChildren = []; }\n React.Children.forEach(children, function (child) {\n if (child && child.props && !child.props.disabled && (child.props.expanded || child.props.parentExpanded)) {\n flattenVisibleChildren.push(child);\n if (child.props.children) {\n flatVisibleChildren(child.props.children, flattenVisibleChildren);\n }\n }\n });\n return flattenVisibleChildren;\n}\n;\n/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * Represents the PanelBarUtils functions.\n */\nexport var PanelBarUtils;\n(function (PanelBarUtils) {\n /**\n * Maps a collection of PanelBarItemProps to PanelBarItem components\n * ([see example]({% slug customization_panelbar %})).\n * Contained in the `PanelBarUtils` object.\n *\n * @param items - A collection of PanelBarItemProps.\n * @return {PanelBarItem[]} Returns an array of PanelBarItem components.\n */\n function mapItemsToComponents(items) {\n return items.map(function (item, idx) {\n var children;\n if (item.content) {\n children = item.content;\n }\n if (item.children) {\n children = (mapItemsToComponents(item.children));\n }\n return (React.createElement(PanelBarItem, __assign({}, item, { children: children, key: item.id || idx })));\n });\n }\n PanelBarUtils.mapItemsToComponents = mapItemsToComponents;\n})(PanelBarUtils || (PanelBarUtils = {}));\n/**\n * @hidden\n */\nexport var isArrayEqual = function (firstArray, secondArray) {\n if (firstArray.length !== secondArray.length) {\n return false;\n }\n return firstArray.every(function (ex, i) { return ex === secondArray[i]; });\n};\n","/**\n * @hidden\n */\nexport var NavigationAction;\n(function (NavigationAction) {\n NavigationAction[NavigationAction[\"Toggle\"] = 0] = \"Toggle\";\n NavigationAction[NavigationAction[\"Next\"] = 1] = \"Next\";\n NavigationAction[NavigationAction[\"Previous\"] = 2] = \"Previous\";\n})(NavigationAction || (NavigationAction = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { PanelBarItem } from './PanelBarItem';\nimport { renderChildren, getInitialState, flatVisibleChildren, flatChildren, isArrayEqual, getFirstId } from './util';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { NavigationAction } from './interfaces/NavigationAction';\nvar PanelBar = /** @class */ (function (_super) {\n __extends(PanelBar, _super);\n function PanelBar(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n /**\n * @hidden\n */\n _this.handleSelect = function (event) {\n _this.onSelect(event);\n _this.onFocus(event);\n };\n /**\n * @hidden\n */\n _this.onSelect = function (event) {\n var flattenChildren = flatChildren(React.Children.toArray(_this.children));\n var selectedChild;\n var newExpanded;\n flattenChildren.forEach(function (child) {\n if (child.props.uniquePrivateKey === (event.uniquePrivateKey || _this.state.focused)) {\n selectedChild = child;\n }\n });\n switch (_this.expandMode) {\n case 'single':\n newExpanded = __spreadArray(__spreadArray([], selectedChild.props.parentUniquePrivateKey, true), [selectedChild.props.uniquePrivateKey], false);\n if (isArrayEqual(_this.expandedItems, newExpanded)) {\n if (selectedChild.props.parentUniquePrivateKey) {\n newExpanded = __spreadArray([], selectedChild.props.parentUniquePrivateKey, true);\n }\n else {\n newExpanded = [];\n }\n }\n break;\n case 'multiple':\n newExpanded = _this.expandedItems.slice();\n var index = newExpanded.indexOf(selectedChild.props.uniquePrivateKey);\n index === -1 ? newExpanded.push(selectedChild.props.uniquePrivateKey) : newExpanded.splice(index, 1);\n break;\n default:\n newExpanded = _this.expandedItems.slice();\n break;\n }\n _this.setState({ selected: selectedChild.props.uniquePrivateKey, expanded: newExpanded });\n if (_this.props.onSelect) {\n _this.props.onSelect.call(undefined, {\n target: selectedChild,\n expandedItems: newExpanded\n });\n }\n };\n /**\n * @hidden\n */\n _this.onFocus = function (event, step) {\n if (step === void 0) { step = 0; }\n var flattenChildren = flatVisibleChildren(React.Children.toArray(_this.children));\n var focusedChild;\n flattenChildren.forEach(function (child, ixd) {\n if (child.props.uniquePrivateKey === (event.uniquePrivateKey || _this.state.focused)) {\n var index = ixd + step < 0\n ? 0\n : ixd + step > flattenChildren.length\n ? flattenChildren.length - 1\n : ixd + step;\n focusedChild = flattenChildren[index];\n }\n });\n if (focusedChild) {\n _this.activeDescendant = focusedChild.props.id;\n _this.setState({ focused: focusedChild.props.uniquePrivateKey });\n }\n };\n /**\n * @hidden\n */\n _this.onNavigate = function (event, action) {\n var step;\n switch (action) {\n case NavigationAction.Previous:\n step = -1;\n _this.onFocus(event, step);\n break;\n case NavigationAction.Next:\n step = 1;\n _this.onFocus(event, step);\n break;\n case NavigationAction.Toggle:\n _this.onSelect(event);\n break;\n default:\n }\n };\n _this.handleWrapperFocus = function () {\n clearTimeout(_this.nextTickId);\n if (!_this.state.wrapperFocused) {\n _this.setState({ wrapperFocused: true });\n }\n };\n _this.handleWrapperBlur = function () {\n _this.nextTick(function () {\n _this.setState({ wrapperFocused: false });\n });\n };\n _this.handleKeyDown = function (event) {\n var rtl = _this._element && (getComputedStyle(_this._element).direction === 'rtl') || false;\n if (event.target === event.currentTarget) {\n var keyCode = event.keyCode;\n var action = void 0;\n switch (keyCode) {\n case Keys.left:\n action = !rtl ? NavigationAction.Previous : NavigationAction.Next;\n break;\n case Keys.up:\n action = NavigationAction.Previous;\n break;\n case Keys.right:\n action = !rtl ? NavigationAction.Next : NavigationAction.Previous;\n break;\n case Keys.down:\n action = NavigationAction.Next;\n break;\n case Keys.space:\n case Keys.enter:\n action = NavigationAction.Toggle;\n break;\n default:\n action = null;\n break;\n }\n if (action !== null) {\n event.preventDefault();\n _this.onNavigate(event, action);\n }\n }\n };\n validatePackage(packageMetadata);\n var initialState = getInitialState(props, _this.expandMode);\n if (!initialState.focused) {\n initialState.focused = getFirstId(props);\n }\n _this.state = initialState;\n return _this;\n }\n Object.defineProperty(PanelBar.prototype, \"expandMode\", {\n get: function () {\n return this.props.expandMode || 'multiple';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PanelBar.prototype, \"selectedItem\", {\n get: function () {\n var _a = this.props.selected, selected = _a === void 0 ? this.state.selected : _a;\n return selected;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PanelBar.prototype, \"expandedItems\", {\n get: function () {\n var expanded = this.props.isControlled ? this.props.expanded || [] : this.state.expanded;\n return expanded;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PanelBar.prototype, \"children\", {\n get: function () {\n var state = __assign(__assign({}, this.state), { selected: this.selectedItem });\n var renderState = {\n animation: this.props.animation,\n keepItemsMounted: this.props.keepItemsMounted,\n state: state,\n expanded: this.expandedItems,\n handleSelect: this.handleSelect,\n children: this.props.children\n };\n return renderChildren(renderState);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n PanelBar.prototype.render = function () {\n var _this = this;\n var ariaProps = {\n 'aria-activedescendant': this.activeDescendant\n };\n var className = classNames('k-panelbar', this.props.className);\n return (React.createElement(\"ul\", __assign({ ref: function (div) { _this._element = div; }, dir: this.props.dir, role: 'tree', tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleWrapperFocus, onBlur: this.handleWrapperBlur, className: className, style: this.props.style }, ariaProps), this.children));\n };\n PanelBar.prototype.nextTick = function (f) {\n this.nextTickId = window.setTimeout(function () { return f(); });\n };\n /**\n * @hidden\n */\n PanelBar.propTypes = {\n animation: PropTypes.bool,\n children: function (props, propName) {\n var prop = props[propName];\n if (prop) {\n if (Array.isArray(prop)) {\n for (var _i = 0, prop_1 = prop; _i < prop_1.length; _i++) {\n var value = prop_1[_i];\n if (!value.type || value.type !== PanelBarItem) {\n return new Error('PanelBar children should be either PanelBarItem or Array of PanelBarItem.');\n }\n }\n }\n else {\n if (prop.type !== PanelBarItem) {\n return new Error('PanelBar child should be either PanelBarItem or Array of PanelBarItem.');\n }\n }\n return null;\n }\n },\n dir: PropTypes.string,\n selected: PropTypes.string,\n expanded: PropTypes.arrayOf(PropTypes.string),\n focused: PropTypes.string,\n expandMode: PropTypes.oneOf(['single', 'multiple']),\n className: PropTypes.string,\n keepItemsMounted: PropTypes.bool,\n onSelect: PropTypes.func,\n style: PropTypes.object\n };\n /**\n * @hidden\n */\n PanelBar.defaultProps = {\n expandMode: 'multiple',\n animation: true,\n keepItemsMounted: false\n };\n return PanelBar;\n}(React.Component));\nexport { PanelBar };\n","import React, { useEffect } from 'react';\r\nimport { PanelBar, PanelBarItem } from '@progress/kendo-react-layout';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nfunction FAQ() {\r\n\r\n const { t, i18n, ready } = useTranslation(\"payment/faq\", { useSuspense: false });\r\n\r\n useEffect(() => {\r\n if (ready) {\r\n // i18n.changeLanguage(\"en\");\r\n }\r\n }, [ready])\r\n\r\n return (\r\n \r\n \r\n
    \r\n {t(\"answer_1\")}\r\n  {t(\"contact_us\")}\r\n
    \r\n \r\n \r\n {t(\"answer_2\")}\r\n \r\n \r\n {t(\"answer_3\")}\r\n \r\n \r\n {t(\"answer_4\")}\r\n \r\n \r\n
    \r\n {t(\"answer_5\")}\r\n  {t(\"contact_us\")}\r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default FAQ;","import { Card, CardBody, CardTitle } from '@progress/kendo-react-layout';\r\nimport { useState } from 'react';\r\nimport React from 'react';\r\n\r\nfunction EnterpriseCard() {\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n Enterprise\r\n

    \r\n \r\n
    \r\n\r\n

    \r\n Contact us for custom packages that fit all your company's needs, and to learn more about our product offerings.\r\n

    \r\n \r\n
    \r\n \r\n \r\n )\r\n}\r\n\r\nexport default EnterpriseCard;","export var avatarType;\n(function (avatarType) {\n avatarType[\"TEXT\"] = \"text\";\n avatarType[\"IMAGE\"] = \"image\";\n avatarType[\"ICON\"] = \"icon\";\n})(avatarType || (avatarType = {}));\nexport var cardOrientation;\n(function (cardOrientation) {\n cardOrientation[\"HORIZONTAL\"] = \"horizontal\";\n cardOrientation[\"VERTICAL\"] = \"vertical\";\n})(cardOrientation || (cardOrientation = {}));\nexport var cardType;\n(function (cardType) {\n cardType[\"DEFAULT\"] = \"default\";\n cardType[\"primary\"] = \"primary\";\n cardType[\"INFO\"] = \"info\";\n cardType[\"SUCCESS\"] = \"success\";\n cardType[\"WARNING\"] = \"warning\";\n cardType[\"ERROR\"] = \"error\";\n})(cardType || (cardType = {}));\nexport var cardActionsLayout;\n(function (cardActionsLayout) {\n cardActionsLayout[\"START\"] = \"start\";\n cardActionsLayout[\"CENTER\"] = \"center\";\n cardActionsLayout[\"END\"] = \"end\";\n cardActionsLayout[\"STRETCHED\"] = \"stretched\";\n})(cardActionsLayout || (cardActionsLayout = {}));\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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cardType } from './interfaces/Enums';\nimport { cardOrientation } from './interfaces/Enums';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nexport var Card = React.forwardRef(function (props, ref) {\n var _a;\n validatePackage(packageMetadata);\n var children = props.children, dir = props.dir, style = props.style, className = props.className, type = props.type, orientation = props.orientation, customProps = __rest(props, [\"children\", \"dir\", \"style\", \"className\", \"type\", \"orientation\"]);\n var target = React.useRef(null);\n var chipRef = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({\n element: chipRef.current,\n props: props\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n return (React.createElement(\"div\", __assign({ dir: dir, style: style, ref: chipRef, className: classNames('k-card', className, (_a = {}, _a[\"k-card-\".concat(type)] = type !== cardType.DEFAULT, _a), orientation !== cardOrientation.HORIZONTAL ? 'k-card-vertical' : 'k-card-horizontal') }, customProps), children));\n});\nCard.displayName = 'KendoReactCard';\nCard.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n dir: PropTypes.string,\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n style: PropTypes.object,\n type: PropTypes.oneOf(['default', 'primary', 'info', 'success', 'warning', 'error'])\n};\nCard.defaultProps = {\n type: cardType.DEFAULT,\n orientation: cardOrientation.VERTICAL\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nexport var CardTitle = function (props) {\n return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-title', props.className) }, props.children));\n};\nCardTitle.propTypes = {\n className: PropTypes.string\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nexport var CardBody = function (props) {\n return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-body', props.className) }, props.children));\n};\nCardBody.propTypes = {\n className: PropTypes.string\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\n/**\n * Represents the PopoverActionsBar component.\n */\nexport var PopoverActionsBar = React.forwardRef(function (props, ref) {\n var elementRef = React.useRef(null);\n var popoverRef = React.useRef(null);\n React.useImperativeHandle(popoverRef, function () {\n return { props: props, element: elementRef.current };\n });\n React.useImperativeHandle(ref, function () { return popoverRef.current; });\n return (React.createElement(\"div\", { ref: elementRef, className: \"k-popover-actions k-actions k-actions-stretched\", style: { position: 'relative' } }, props.children));\n});\nvar defaultProps = {};\nPopoverActionsBar.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node\n ])\n};\nPopoverActionsBar.defaultProps = defaultProps;\nPopoverActionsBar.displayName = 'KendoReactPopoverActionsBar';\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, ZIndexContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './../package-metadata';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { PopoverActionsBar } from './PopoverActionsBar';\nvar DEFAULT_POPOVER_ZINDEX = 12000;\nvar ZINDEX_POPOVER_STEP = 2000;\nvar CALLOUT_SIZE = 15;\nvar calloutPositions = {\n top: 'k-callout-s',\n left: 'k-callout-e',\n bottom: 'k-callout-n',\n right: 'k-callout-w'\n};\nvar calloutFlippedPositions = {\n top: 'k-callout-n',\n left: 'k-callout-w',\n bottom: 'k-callout-s',\n right: 'k-callout-e'\n};\nvar popupAlignByPosition = {\n top: { vertical: 'bottom', horizontal: 'center' },\n left: { vertical: 'center', horizontal: 'right' },\n bottom: { vertical: 'top', horizontal: 'center' },\n right: { vertical: 'center', horizontal: 'left' }\n};\nvar anchorAlignByPosition = {\n top: { vertical: 'top', horizontal: 'center' },\n left: { vertical: 'center', horizontal: 'left' },\n bottom: { vertical: 'bottom', horizontal: 'center' },\n right: { vertical: 'center', horizontal: 'right' }\n};\nvar getActionBar = function (children) {\n return React.Children.toArray(children).filter(function (child) { return child && child.type === PopoverActionsBar; });\n};\nvar getContent = function (children) {\n return React.Children.toArray(children).filter(function (child) {\n return child && child.type !== PopoverActionsBar;\n });\n};\n/**\n * Represents the Popover component.\n */\nexport var Popover = React.forwardRef(function (props, ref) {\n validatePackage(packageMetadata);\n var callout = props.callout, position = props.position, title = props.title, children = props.children, show = props.show, anchor = props.anchor, appendTo = props.appendTo, offset = props.offset, animate = props.animate, positionMode = props.positionMode, scale = props.scale, popoverClass = props.popoverClass, className = props.className, id = props.id, style = props.style, collision = props.collision, contentStyle = props.contentStyle, onPosition = props.onPosition, onClose = props.onClose, onOpen = props.onOpen;\n var _a = React.useState(false), flipped = _a[0], setFlipped = _a[1];\n var isVertical = position === 'top' || position === 'bottom';\n var margin = props.margin || {\n vertical: callout && isVertical ? CALLOUT_SIZE : 0,\n horizontal: callout && !isVertical ? CALLOUT_SIZE : 0\n };\n var popupAlign = popupAlignByPosition[position];\n var anchorAlign = anchorAlignByPosition[position];\n var zindexContext = React.useContext(ZIndexContext);\n var currentZindex = zindexContext ? zindexContext + ZINDEX_POPOVER_STEP : DEFAULT_POPOVER_ZINDEX;\n var popoverRef = React.useRef(null);\n React.useImperativeHandle(popoverRef, function () {\n return { props: props };\n });\n React.useImperativeHandle(ref, function () { return popoverRef.current; });\n var handlePosition = React.useCallback(function (e) {\n setTimeout(function () { return setFlipped(e.flipped); });\n if (onPosition) {\n var event_1 = { target: popoverRef.current, flipped: e.flipped, fitted: e.fitted };\n onPosition.call(undefined, event_1);\n }\n }, [onPosition, setFlipped]);\n var handleOpen = React.useCallback(function () {\n if (onOpen) {\n var event_2 = { target: popoverRef.current };\n onOpen.call(undefined, event_2);\n }\n }, [onOpen]);\n var handleClose = React.useCallback(function () {\n if (onClose) {\n var event_3 = { target: popoverRef.current };\n onClose.call(undefined, event_3);\n }\n }, [onClose]);\n var basePopupClass = { 'k-popover': true, 'k-popup': false };\n if (Array.isArray(popoverClass)) {\n popoverClass.forEach(function (currentClass) { return basePopupClass[currentClass] = true; });\n }\n else if (typeof popoverClass === 'object') {\n Object.keys(popoverClass)\n .forEach(function (key) {\n basePopupClass[key] = popoverClass[key];\n });\n }\n else if (popoverClass) {\n basePopupClass[popoverClass] = true;\n }\n var calloutClass = flipped ? calloutFlippedPositions[position] : calloutPositions[position];\n return (React.createElement(ZIndexContext.Provider, { value: currentZindex },\n React.createElement(Popup, { id: id, animate: animate, collision: collision, anchor: anchor, offset: offset, margin: margin, popupAlign: popupAlign, anchorAlign: anchorAlign, appendTo: appendTo, show: show, scale: scale, positionMode: positionMode, style: style, className: className, popupClass: basePopupClass, onOpen: handleOpen, onClose: handleClose, onPosition: handlePosition },\n callout && position &&\n (React.createElement(\"div\", { className: classNames('k-popover-callout', calloutClass) })),\n title && (React.createElement(\"div\", { className: 'k-popover-header' }, title)),\n React.createElement(\"div\", { className: \"k-popover-body\", style: contentStyle }, getContent(children)),\n getActionBar(children))));\n});\nvar defaultProps = {\n callout: true,\n position: 'top',\n collision: {\n horizontal: 'none',\n vertical: 'none'\n }\n};\nPopover.propTypes = {\n callout: PropTypes.bool,\n title: PropTypes.string,\n position: PropTypes.oneOf(['top', 'left', 'bottom', 'right']),\n show: PropTypes.bool,\n animate: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })\n ]),\n anchor: function (props) {\n var anchor = props.anchor;\n if (anchor && typeof anchor.nodeType !== 'number') {\n return new Error('Invalid prop `anchor` supplied to `Kendo React Popover`. Validation failed.');\n }\n return null;\n },\n appendTo: function (props) {\n var element = props.appendTo;\n if (element && typeof element.nodeType !== 'number') {\n return new Error('Invalid prop `appendTo` supplied to `Kendo React Popover`. Validation failed.');\n }\n return null;\n },\n positionMode: PropTypes.oneOf([\n 'fixed',\n 'absolute'\n ]),\n scale: PropTypes.number,\n offset: PropTypes.shape({\n left: PropTypes.number,\n top: PropTypes.number\n }),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node\n ]),\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.object\n ]),\n id: PropTypes.string,\n popoverClass: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.object\n ]),\n style: PropTypes.object,\n onClose: PropTypes.func,\n onPosition: PropTypes.func,\n onOpen: PropTypes.func\n};\nPopover.defaultProps = defaultProps;\nPopover.displayName = 'KendoReactPopover';\n","import { Card, CardBody, CardTitle } from '@progress/kendo-react-layout';\r\nimport { Popover, PopoverActionsBar } from '@progress/kendo-react-tooltip';\r\nimport React, { useRef, useState } from 'react';\r\nimport { RadioButton } from '@progress/kendo-react-inputs';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nfunction ProductCard({ product, interval, numberOfSeats, selected, onSelect, selectedOption, onProductCardChange, onProductCardSelectionChange }) {\r\n\r\n const anchor = useRef(null);\r\n const [show, setShow] = useState(false);\r\n const [isHover, setIsHover] = useState(false);\r\n const [isBtnHover, setIsBtnHover] = useState(false);\r\n\r\n const { t } = useTranslation(\"payment/product_card\", { useSuspense: false })\r\n\r\n const handleMouseEnter = () => {\r\n setIsHover(true);\r\n };\r\n const handleMouseLeave = () => {\r\n setIsHover(false);\r\n };\r\n\r\n const handleMouseBtnEnter = () => {\r\n setIsBtnHover(true);\r\n };\r\n const handleMouseBtnLeave = () => {\r\n setIsBtnHover(false);\r\n };\r\n\r\n function getPrice() {\r\n if (!product.price) return 0;\r\n if (interval === \"monthly\") return product.price.monthly.amount;\r\n return (product.price.annually.amount / 12).toFixed(2);\r\n }\r\n\r\n function isFreeProduct() {\r\n return product.isFree;\r\n }\r\n\r\n function onSelectEnterprise() {\r\n window.open('https://www.codelessone.com/contact-us/', '_blank', 'noopener')\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {\r\n selected && !isFreeProduct() && product.name && product.name !== \"Enterprise\" ?\r\n \r\n :\r\n <> \r\n }\r\n
    \r\n \r\n \r\n {t(\"popover_message\")}\r\n \r\n {product.name}\r\n \r\n {t(\"popover_message_end\")}\r\n \r\n
    \r\n \r\n {t(\"upgrade_message\")}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {product.name && product.name !== \"Enterprise\" && onProductCardSelectionChange(product.name)}\r\n />}\r\n
    \r\n onProductCardSelectionChange(product.name)}\r\n style={{\r\n border: (selectedOption && selectedOption === product.name) || isHover ? `1px solid ${product.color}` : \"1px solid #C9C9C9\",\r\n background: selectedOption && selectedOption === product.name ? product.bgColor : \"#FFFFFF\"\r\n }}\r\n >\r\n {/* \r\n {product.inOffer ? (\r\n <>Limited time offer.\r\n ) :
     
    }\r\n
    */}\r\n \r\n {\r\n product.name === \"Pro\" && (\r\n
    \r\n \r\n {t(\"best_value\")}\r\n \r\n
    \r\n )\r\n }\r\n

    \r\n {product.name}\r\n

    \r\n\r\n\r\n
    \r\n {product.cardDescription}\r\n
    \r\n {\r\n product.name === \"Enterprise\" ?\r\n
    \r\n Contact Sales\r\n
    \r\n :\r\n
    \r\n \r\n {product.price && $ {getPrice()}} \r\n \r\n \r\n {getPrice() === 0\r\n ? \"Forever\"\r\n : \" seat/mo\"\r\n }\r\n \r\n {product.isDiscounted && (\r\n <>\r\n    \r\n \r\n ${\r\n product.getDiscountedPrice(getPrice())\r\n }\r\n \r\n  \r\n \r\n {product.price[interval] === 0\r\n ? \"Forever\"\r\n : \" seat/mo\"}\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 {product.propertiesShownInCard?.map(\r\n (property, index) => (\r\n \r\n \r\n \r\n )\r\n )}\r\n \r\n \r\n
    \r\n {product.includesOtherProductProperties && (\r\n \r\n {t(\"includes_product\", { product: product.name })}\r\n

    \r\n )}\r\n
    \r\n
    \r\n \r\n {property}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {selected ? (\r\n\r\n {\r\n if (product.name === \"Free\") {\r\n setShow(!show);\r\n }\r\n else if (product.name === \"Enterprise\") {\r\n onSelectEnterprise();\r\n }\r\n else {\r\n onSelect(e);\r\n }\r\n }}\r\n style={{\r\n border: `2px solid ${product.color}`,\r\n color: isBtnHover ? product.textColor : product.color,\r\n }}\r\n className='btn-product'\r\n >\r\n {product.name !== \"Enterprise\" ? t(\"current_plan\") : t(\"contact_sales\")}\r\n \r\n\r\n\r\n\r\n\r\n ) : (\r\n {\r\n if (product.name === \"Enterprise\") {\r\n onSelectEnterprise();\r\n }\r\n else {\r\n onSelect(e);\r\n }\r\n }}\r\n >\r\n {product.name !== \"Enterprise\" ? t(\"select_plan\") : t(\"contanct_sales\")}\r\n \r\n )}\r\n
    \r\n \r\n \r\n )\r\n\r\n};\r\n\r\nexport default ProductCard;","import React, { useContext, useEffect, useState } from 'react';\r\nimport { getActiveProducts, getCurrentSubscriptionForOrganisation, getSubscriptionParameters } from '../../API/Payment/Payment';\r\nimport { NUM_SEATS_CHANGED, PRICE_SELECTED } from '../../Context/Pricing/Events';\r\nimport { PricingContext } from '../../Context/Pricing/PricingContext';\r\nimport { SUBSCRIPTION_PLANS } from '../Shared/Subscription/SubscriptionInfo';\r\nimport EnterpriseCard from './EnterpriseCard';\r\nimport ProductCard from './ProductCard';\r\n\r\nfunction PriceList({ numberOfSeats, interval, onSelect }) {\r\n\r\n const { state,dispatch } = useContext(PricingContext);\r\n const [ selectedOption, setSelectedOption ] = useState(null);\r\n\r\n const onProductCardSelectionChange =(e)=>{\r\n debugger\r\n const selectedOption = SUBSCRIPTION_PLANS.find(plan => (\r\n plan.name === e\r\n ))\r\n setSelectedOption(e);\r\n \r\n }\r\n\r\n const onProductCardChange =(e)=>{\r\n setSelectedOption(e);\r\n if (e !== \"Enterprise\" && onSelect) {\r\n debugger;\r\n const subscriptionParameters = state.subscriptions.find(subscription => (\r\n subscription.subscriptionName.trim().toLowerCase() === e.trim().toLowerCase()\r\n ));\r\n onSelect(subscriptionParameters);\r\n handleSeatChange(subscriptionParameters);\r\n }\r\n }\r\n\r\n // const planToShow = SUBSCRIPTION_PLANS.filter(plan => (\r\n // plan.stripeProductId !== process.env.REACT_APP_STRIPE_FREE_PRODUCT_ID\r\n // ))\r\n\r\n function handlePlanSelect(plan) {\r\n dispatch({\r\n type: PRICE_SELECTED,\r\n payload: plan\r\n })\r\n handleSeatChange(plan);\r\n }\r\n\r\n function handleSeatChange(plan) {\r\n if (plan.stripeProductId === process.env.REACT_APP_STRIPE_FREE_PRODUCT_ID) {\r\n dispatch({\r\n type: NUM_SEATS_CHANGED,\r\n payload: 2,\r\n })\r\n } else if (\r\n state.numSeats === 2 &&\r\n plan.stripeProductId !== process.env.REACT_APP_STRIPE_FREE_PRODUCT_ID\r\n ) {\r\n dispatch({\r\n type: NUM_SEATS_CHANGED,\r\n payload: parseInt(state.currentOrganization.numSeats) === 2 ? 5 : parseInt(state.currentOrganization.numSeats),\r\n })\r\n } else if (\r\n plan.stripeProductId !== process.env.REACT_APP_STRIPE_FREE_PRODUCT_ID &&\r\n state.numSeats > parseInt(plan.maxSeats)\r\n ) {\r\n dispatch({\r\n type: NUM_SEATS_CHANGED,\r\n payload: parseInt(plan.maxSeats),\r\n })\r\n } else if (\r\n plan.stripeProductId !== process.env.REACT_APP_STRIPE_FREE_PRODUCT_ID &&\r\n state.numSeats < 3\r\n ) {\r\n dispatch({\r\n type: NUM_SEATS_CHANGED,\r\n payload: 5,\r\n })\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n {\r\n SUBSCRIPTION_PLANS.map((plan, index) => (\r\n handlePlanSelect(plan)} \r\n selectedOption={selectedOption}\r\n onProductCardChange={onProductCardChange}\r\n onProductCardSelectionChange={onProductCardChange}\r\n />\r\n ))\r\n }\r\n
    \r\n {/*
    */}\r\n \r\n )\r\n}\r\n\r\nexport default PriceList;","import { Switch } from '@progress/kendo-react-inputs';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport * as Events from '../../Context/Pricing/Events';\r\nimport { PricingContext } from '../../Context/Pricing/PricingContext';\r\nimport Scrollable from '../Shared/Edit/Scrollable';\r\nimport { Free } from '../Shared/Subscription/SubscriptionInfo';\r\nimport ComparePlanTable from './ComparePlanTable';\r\nimport FAQ from './FAQ';\r\nimport PriceList from './PriceList';\r\nimport SeatChangeInput from './SeatChangeInput';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nfunction PriceSelector() {\r\n\r\n const { state, dispatch } = useContext(PricingContext);\r\n const [selectedPlan, setSelectedPlan] = useState({});\r\n\r\n const { t } = useTranslation(\"payment/price_selector\");\r\n\r\n useEffect(() => {\r\n if (state.selectedPlan && state.selectedPlan.stripeProductId) {\r\n const selectedPlan = state.subscriptions.find(subscription => (\r\n subscription.subscriptionName.trim().toLowerCase() === state.selectedPlan.name.trim().toLowerCase()\r\n ));\r\n setSelectedPlan(selectedPlan);\r\n }\r\n }, [state.selectedPlan])\r\n\r\n function setNumberOfSeatsTo2() {\r\n const { currentOrganization } = state;\r\n const requiredSeatChange = 2 - currentOrganization.numSeats;\r\n dispatch({\r\n type: Events.NUM_SEATS_CHANGED,\r\n payload: requiredSeatChange\r\n })\r\n }\r\n\r\n function userHasSelectedFreePlan() {\r\n return selectedPlan && selectedPlan.monthlySeatPrice === \"0\" && selectedPlan.annuallySeatPrice === \"0\";\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n { t(\"title\") }\r\n

    \r\n

    \r\n {t(\"thank_you_message\")}\r\n {\" \"}\r\n \r\n { state.currentSubscription?.subscriptionName }\r\n -\r\n { \r\n state.currentSubscription.subscriptionName === \"Free\" ||\r\n state.currentSubscriptionStripeData?.plan?.interval === \"month\"\r\n ? t(\"monthly\") : t(\"annually\")\r\n }\r\n \r\n {\" \"}\r\n {t(\"plan\")}\r\n

    \r\n {/* {\r\n \r\n { state.currentSubscription?.subscriptionName }\r\n -\r\n { state.currentSubscription?.plan?.interval === \"month\" ? \"Monthly\" : \"Annual\" }\r\n {\" \"}\r\n plan\r\n \r\n {\r\n state.currentSubscription.id && state.currentSubscription.subscriptionName !== \"Free\" &&\r\n

    \r\n Change plan or downgrade to\r\n {\r\n dispatch({\r\n type: Events.PRICE_SELECTED,\r\n payload: Free\r\n })\r\n setNumberOfSeatsTo2();\r\n }}\r\n className='btn btn-link'>Free Plan\r\n

    \r\n } */}\r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"2_month_free\")}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"monthly\")}\r\n \r\n {\r\n dispatch({\r\n type: Events.INTERVAL_CHANGED\r\n })\r\n }}\r\n />\r\n \r\n {t(\"yearly\")}\r\n \r\n
    \r\n
    \r\n setSelectedPlan(plan)} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n {t(\"frequently_asked_questions\")}\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 PriceSelector;","import React from 'react';\r\nimport { getDatalakeImageUrl } from '../Helpers/DateLakeStorage';\r\n\r\nfunction NoAccess() {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Only organization owner and administrators can manage the subscription.\r\n
    \r\n
    \r\n Please contact them to change your subscription.\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default NoAccess;","import React from 'react';\r\n\r\nfunction OverflowError({\r\n currentValue,\r\n allowedValue,\r\n overflowType,\r\n newPlanName\r\n}) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n Subscription change cannot be completed. Please see below summary.\r\n
    \r\n
    \r\n In {newPlanName} plan { allowedValue } {overflowType} are allowed. You currently have {currentValue} {overflowType}.\r\n
    \r\n
    \r\n Please remove extra {overflowType} before you start subscription change process.\r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport function RoleOverflowError({\r\n newPlanName\r\n}) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n Subscription change cannot be completed. Please see below summary.\r\n
    \r\n
    \r\n In { newPlanName } plan, only 3 default Roles are allowed. You currently have extra Roles defined in your app(s).\r\n
    \r\n
    \r\n Please delete those extra Roles in all your apps before you start the subscription change process.\r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default OverflowError;","import React from 'react';\r\n\r\nfunction SuccessfulChange() {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n All Set!\r\n
    \r\n
    \r\n Everything is ready for you.\r\n
    \r\n
    \r\n You can go to your workspace to manage your subscription and users.\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default SuccessfulChange;","import { Elements } from '@stripe/react-stripe-js';\r\nimport { loadStripe } from '@stripe/stripe-js';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport { getCurrentSubscriptionForOrganisation, getCurrentSubscriptionStripeDataForOrganisation, getCustomerStripeData, getNumberOfAssignedSeats } from '../../API/Payment/Payment';\r\nimport { PricingContext } from '../../Context/Pricing/PricingContext';\r\nimport * as Events from '../../Context/Pricing/Events';\r\nimport PriceChangeConfirmationForm from './PriceChangeConfirmationForm';\r\nimport PriceSelector from './PriceSelector';\r\nimport NoAccess from './NoAccess';\r\nimport OverflowError, { RoleOverflowError } from './OverflowError';\r\nimport SuccessfulChange from './SuccessfulChange';\r\nimport { getSubscriptions } from '../../API/Subscription/SubscriptionHelper';\r\n\r\nconst stripe = loadStripe(process.env.REACT_APP_STRIPE_PUBLISHABLE_KEY);\r\n\r\nfunction PricingForm({ userRole, organization, isAccessedFromRuntime = false }) {\r\n\r\n const { state, dispatch } = useContext(PricingContext);\r\n\r\n const [numberOfAssignedSeats, setNumberOfAssignedSeats] = useState(0);\r\n\r\n async function getData() {\r\n const { stripeCustomerId, numSeats, _id: organizationId } = organization;\r\n const [stripeData, currentSubscription, subscriptionStripeData, subscriptions, numberOfAssignedSeatsData] = await Promise.all([\r\n getCustomerStripeData(organizationId),\r\n getCurrentSubscriptionForOrganisation(organizationId),\r\n getCurrentSubscriptionStripeDataForOrganisation(organizationId),\r\n getSubscriptions(),\r\n getNumberOfAssignedSeats(organizationId)\r\n ]);\r\n debugger;\r\n dispatch({\r\n type: Events.ORGANIZATION_STRIPE_DATA_LOADED,\r\n payload: stripeData\r\n })\r\n dispatch({\r\n type: Events.CURRENT_SUBSCRIPTION_LOADED,\r\n payload: currentSubscription\r\n })\r\n dispatch({\r\n type: Events.CURRENT_SUBSCRIPTION_STRIPE_DATA_LOADED,\r\n payload: subscriptionStripeData\r\n })\r\n dispatch({\r\n type: Events.NUM_SEATS_CHANGED,\r\n payload: numSeats\r\n })\r\n dispatch({\r\n type: Events.SUBSCRIPTIONS_LOADED,\r\n payload: subscriptions\r\n })\r\n debugger\r\n setNumberOfAssignedSeats(numberOfAssignedSeatsData.numberOfAssignedSeats);\r\n if (stripeData.invoice_settings && stripeData.invoice_settings.default_payment_method) {\r\n dispatch({\r\n type: Events.PAYMENT_METHOD_SELECTED,\r\n payload: stripeData.invoice_settings.default_payment_method\r\n })\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n dispatch({\r\n type: Events.ORGANIZATION_LOADED,\r\n payload: organization\r\n })\r\n getData();\r\n }, [])\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0)\r\n }, [state.selectedPlan?.stripeProductId])\r\n\r\n if (state.showSeatOverflowDialog) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (state.showProjectOverflowDialog) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (state.showRoleOverflowDialog) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (state.priceChangeSuccessful) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (state.selectedPlan && state.selectedPlan.stripeProductId) {\r\n\r\n if (userRole === \"Member\" || userRole === \"App Participant\") {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default PricingForm;","import React, { useState, useEffect } from 'react'\r\nimport { useMsal } from '@azure/msal-react';\r\nimport { getAzureUser } from '../API/User/User';\r\n\r\nconst NoAccess = () => {\r\n\r\n const context = useMsal()\r\n\r\n const [user, setUser] = useState({});\r\n\r\n useEffect(() => {\r\n const getUserData = async () => {\r\n const user = await getAzureUser(context);\r\n setUser(user);\r\n };\r\n if(context.inProgress === \"none\"){\r\n getUserData();\r\n }\r\n }, [context]);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \"responsive\r\n
    \r\n
    \r\n
    \r\n

    Sorry, {user && user.name}\r\n

    \r\n

    \r\n You don't have permission to access App Maker. Please contact your administrator\r\n

    \r\n \r\n You can go to your App Workspace from here\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default NoAccess\r\n","import React, { Component } from \"react\";\r\nimport NavigationComponents from \"../../Components/Navigation/Navigation\";\r\nimport NoAccess from \"../../Components/NoAccess\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport Loader from \"../../Components/Shared/Loader/loader\";\r\n\r\nexport class NoAccessPage extends Component {\r\n static contextType = MsalContext;\r\n constructor(props) {\r\n super(props);\r\n let organizationResult = this.props.organizations.filter((org) => org.number === this.props.orgName);\r\n let isOwnerofOrg = this.props.organizations.findIndex((org) => org.roleType === \"Owner\") > -1;\r\n let createOrg = [\r\n {\r\n id: \"Create_Org\",\r\n number: \"CreateOrg\",\r\n },\r\n ];\r\n let orgs = isOwnerofOrg ? this.props.organizations : [...this.props.organizations, ...createOrg];\r\n\r\n this.state = {\r\n user: { ...this.props.user },\r\n organizations: orgs,\r\n selectedOrg: organizationResult[0],\r\n };\r\n }\r\n render() {\r\n let { context } = this;\r\n\r\n if (context.inProgress !== \"none\") {\r\n return ;\r\n }\r\n\r\n if (context.accounts.length === 0) {\r\n return ;\r\n }\r\n return (\r\n <>\r\n org.number === this.props.orgName)[0]}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import { useMsal } from '@azure/msal-react';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { BreadcrumbItem } from 'react-bootstrap';\r\nimport { useParams } from 'react-router-dom';\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport NavigationComponent from '../../Components/Navigation/Navigation';\r\nimport PricingForm from '../../Components/Pricing/PricingForm';\r\nimport Loader from '../../Components/Shared/Loader/loader';\r\nimport PricingContextProvider from '../../Context/Pricing/PricingContext';\r\nimport { NoAccessPage } from '../404/NoAccess';\r\n\r\nexport function PricingPage(props) {\r\n\r\n const { accounts } = useMsal();\r\n const params = useParams();\r\n\r\n const [state, setState] = useState({\r\n loading: true,\r\n userHasAccess: false,\r\n currentOrganization: {},\r\n userRole: \"\"\r\n })\r\n\r\n async function validateAccess() {\r\n const { organisationId } = params;\r\n const getUserOrganisationsRequest = await callApiWithAuthorization(\"/api/v0/getOrganizationUserRole/\" + accounts[0].username)\r\n const userOrganisations = await getUserOrganisationsRequest.json();\r\n const currentOrganization = userOrganisations.find(organisation => (\r\n organisation.id === organisationId\r\n ));\r\n if (currentOrganization) {\r\n setState({\r\n loading: false,\r\n userHasAccess: true,\r\n currentOrganization,\r\n userRole: currentOrganization.roleType\r\n })\r\n } else {\r\n setState({\r\n loading: false,\r\n userHasAccess: false\r\n })\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n validateAccess();\r\n }, [])\r\n\r\n if (state.loading) {\r\n return \r\n }\r\n\r\n if (state.userHasAccess === false) {\r\n return (\r\n \r\n )\r\n }\r\n \r\n return (\r\n <>\r\n \r\n \r\n { state.currentOrganization && state.currentOrganization.number }\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n )\r\n}","import React from \"react\"\r\nimport { useMsal } from \"@azure/msal-react\"\r\nimport { Navigate } from \"react-router\"\r\nimport { b2cPolicies } from \"../../Auth/AuthConfig\"\r\nimport Loader from \"../../Components/Shared/Loader/loader\"\r\n\r\nconst MobilePage = () => {\r\n\r\n const context = useMsal()\r\n\r\n if (context.inProgress !== \"none\") {\r\n return \r\n }\r\n\r\n if (context.accounts.length === 0) {\r\n context.instance.loginRedirect(b2cPolicies.authorities.signUpSignIn)\r\n return <>\r\n }\r\n\r\n return (\r\n
    \r\n \"LOGO\"\r\n
    \r\n
    \r\n
    \r\n \"responsive\r\n

    \r\n Please access the platform from your desktop\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default MobilePage","function UserDisplay(props) {\r\n const { bgColor, email, showEmail } = props;\r\n const firstName = props.firstName || \"\";\r\n const lastName = props.lastName || \"\";\r\n const displayName = props.displayName || \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n {email && email.substring(0, 2).toUpperCase()}\r\n
    \r\n
    \r\n
    \r\n {displayName !== \"\" ? displayName : firstName !== \"\" ? firstName + ' ' + lastName : email}\r\n
    \r\n {\r\n showEmail && email\r\n }\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default UserDisplay;","\r\nimport React, { useState, useRef, useEffect, forwardRef, useImperativeHandle } from \"react\";\r\nconst MultiSelectInput = forwardRef(({ isInviting, onItemAdded, placeholder, onKeyPressed, sendError, collectionUpdated }, ref) => {\r\n\r\n\r\n\tconst inputRef = useRef(null);\r\n\tconst [values, setValues] = useState([]);\r\n\tconst [text, setText] = useState([]);\r\n\tconst [error, setError] = useState();\r\n\r\n\tuseImperativeHandle(ref, () => ({\r\n\t\taddItem(val) {\r\n\t\t\tsetValues([...values, val]);\r\n\t\t\tcollectionUpdated([...values, val]);\r\n\t\t\tsetText(\"\");\r\n\t\t},\r\n\t}));\r\n\r\n\tconst handleKeyUp = (e, bypass) => {\r\n\t\tconst email = text.length === 0 ? \"\": text.trim()\r\n\t\tif (e.key === \"Enter\" || bypass) {\r\n\t\t\tconst re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\t\t\tif (re.test(String(email).toLowerCase())) {\r\n\t\t\t\tif (values.indexOf(email) === -1) {\r\n\t\t\t\t\tonItemAdded(email);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetError(`${email} is already added!`);\r\n\t\t\t\t\tsendError(`${email} is already added!`);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif ((email && email.length === 0) || e.key === undefined) {\r\n\t\t\t\t\tsetError(\"\")\r\n\t\t\t\t\tsendError(\"\")\r\n\t\t\t\t} else if (email !== \"\") {\r\n\t\t\t\t\tsetError(\"Email address is not valid!\");\r\n\t\t\t\t\tsendError(\"Email address is not valid!\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!bypass) e.preventDefault();\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tinputRef.current && inputRef.current.focus();\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t 49 ? 'Max 50 user invitations is allowed!' : placeholder}\r\n\t\t\t\t\tref={inputRef}\r\n\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\tclassName={`mb-1 form-control big-control ${error && \"is-invalid\"}`}\r\n\t\t\t\t\tvalue={text}\r\n\t\t\t\t\tdisabled={values.length > 49}\r\n\t\t\t\t\tonKeyUp={handleKeyUp}\r\n\t\t\t\t\tonBlur={() => {\r\n\t\t\t\t\t\thandleKeyUp({ key: \"Enter\" }, true);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\tsetText(e.target.value);\r\n\t\t\t\t\t\tsetError(\"\");\r\n\t\t\t\t\t\tsendError(\"\");\r\n\t\t\t\t\t\tonKeyPressed();\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t
    \r\n\r\n\r\n\t\t\t{\r\n\t\t\t\tvalues.length > 0 &&\r\n\t\t\t\tvalues.map((o, i) => (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{o}\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetValues(values.filter((o, ind) => ind !== i));\r\n\t\t\t\t\t\t\t\tcollectionUpdated(values.filter((o, ind) => ind !== i));\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t
    \r\n\t\t\t\t))\r\n\t\t\t}\r\n\r\n\t\t
    \r\n\t);\r\n});\r\n\r\nexport default MultiSelectInput;\r\n","// Importing necessary modules\r\nimport React from 'react';\r\nimport { Fragment, useState, useRef, useContext, useEffect } from 'react';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport MultiSelectInput from \"../../Shared/MultiSelect/MultiSelect\";\r\nimport { MsalContext } from '@azure/msal-react';\r\nimport { sendEmail } from \"../../../API/EmailApi\";\r\nimport InnerLoader from '../../Shared/Loader/InnerLoader';\r\nimport { OverlayLoader } from '../../Shared/Loader/OverlayLoader';\r\nimport { getAzureUser } from '../../../API/User/User';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { changeUserOrganizationRole, inviteUserToOrganization } from '../../../API/Organization/organization';\r\n\r\n// Component for inviting a user to an organization\r\nexport const InviteUsertoOrganizationForm = ({\r\n organization,\r\n orgRole,\r\n organizationUsers,\r\n showInIframe,\r\n toUpdateUser,\r\n closeDialog,\r\n updateUsers,\r\n showNotification\r\n}) => {\r\n\r\n // Get the context object from the MsalContext\r\n const context = useContext(MsalContext);\r\n const [userAzureData, setUserAzureData] = useState({});\r\n const { t, i18n } = useTranslation([\r\n \"users/invite_user_dialog\"\r\n ], {\r\n useSuspense: false\r\n }) // Translation\r\n\r\n const getRoleData = (data) => {\r\n for (let role of data) {\r\n const key = role.roleType.toLowerCase().replace(' ', '_');\r\n const roleData = t(\"roles.\" + key, { returnObjects: true });\r\n role.roleTypeText = roleData.type\r\n role.roleDescriptionText = roleData.description\r\n }\r\n return data;\r\n }\r\n\r\n const roles = getRoleData(orgRole);\r\n\r\n useEffect(() => {\r\n const getUserData = async () => {\r\n // i18n.changeLanguage(organization.platformLanguage)\r\n const user = await getAzureUser(context);\r\n setUserAzureData(user);\r\n };\r\n if (context.inProgress === \"none\") {\r\n getUserData();\r\n }\r\n }, [context]);\r\n\r\n // refs\r\n const inviteUserButton = useRef(null);// Create a reference to the inviteUserButton\r\n const emailInput = useRef(null); // Create a reference to the email input field\r\n\r\n const [selectedRole, setSelectedRole] = useState(toUpdateUser ? roles.find(role => role.roleType === toUpdateUser.roleType) : roles[1]); // Initialize selectedRole state variable with the first role from the roles prop\r\n const [invitedUser, setInvitedUser] = useState({}); // Initialize the invitedUser state variable to an empty object\r\n const [loading, setLoading] = useState(false); // Initialize the loading state variable to false\r\n const [errors, setErrors] = useState([]); // Initialize the errors state variable to an empty array\r\n\r\n // Function to render the dropdown list options with the roleType and roleDescription fields\r\n const itemRender = (li, itemProps) => {\r\n const item = itemProps.dataItem;\r\n const itemChildren = (\r\n \r\n {item.roleTypeText}\r\n

    {item.roleDescriptionText}

    \r\n \r\n );\r\n return React.cloneElement(li, li.props, itemChildren);\r\n };\r\n\r\n // This function takes an array of emails as an argument and maps a validateEmail function to each email. \r\n //It then filters out any errors that are not empty strings and sets the invitedUser state to the emails array and the errors state to the errors array.\r\n const handleUserEmail = emails => {\r\n const errors = emails.map(validateEmail).filter(error => error !== '');\r\n setInvitedUser(emails);\r\n setErrors(errors);\r\n };\r\n\r\n //This code handles the addition of an email address to an input field. \r\n //It first trims and lowercases the email address, then validates it using the validateEmail function. \r\n //If there is no error, it adds the email to the input field, otherwise it sets an error message.\r\n const handleEmailAdded = email => {\r\n email = email.trim().toLowerCase();\r\n const error = validateEmail(email);\r\n if (error === '') {\r\n emailInput.current.addItem(email);\r\n } else {\r\n setErrors([error]);\r\n }\r\n };\r\n\r\n // This function validates an email address to make sure it is a valid member of the organization. \r\n // If the organization ID matches the environment variable, it checks to make sure the email is from a modernrequirements.com or codelessone.com domain. \r\n // If either of these conditions are not met, it returns an error message.\r\n const validateEmail = email => {\r\n if (!isEmailValid(email)) {\r\n return `One of the email is Invalid`\r\n }\r\n if (isUserMemberOfOrganisation(email)) {\r\n return `${email} already exists in this workspace.`;\r\n }\r\n if (organization._id === process.env.REACT_APP_LIBRARY_ORGANIZATION_ID && !isInternalEmail(email)) {\r\n return `Must have modernrequirements.com or codelessone.com domain`;\r\n }\r\n return '';\r\n };\r\n\r\n //This code checks if a given email is a member of an organization by comparing it to the list of users in the organization.\r\n const isUserMemberOfOrganisation = email => organizationUsers.findIndex(user => user.email.toLowerCase() === email.toLowerCase()) > -1;\r\n\r\n // This function checks if an email address is internal or not.\r\n const isInternalEmail = email => email.split('@')[1].match(/modernrequirements.com|codelessone.com/i);\r\n\r\n // check wheather email is valid or not with regex\r\n const isEmailValid = email => {\r\n const emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1, 3}\\.[0-9]{1, 3}\\.[0-9]{1, 3}\\.[0-9]{1, 3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return emailRegex.test(String(email).toLowerCase());\r\n }\r\n\r\n //This function checks if the form has any errors. It returns true if the invitedUser is defined and has a length greater than 0, and all errors are empty strings. \r\n //Otherwise, it returns false.\r\n const formHasErrors = () => {\r\n if (toUpdateUser) {\r\n if (toUpdateUser.roleType !== selectedRole.roleType) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return invitedUser && invitedUser.length > 0 && errors.every(err => err === \"\")\r\n }\r\n };\r\n\r\n // This function is called when the user clicks the \"Invite\" button.\r\n const onInvite = async (event) => {\r\n event.preventDefault();\r\n const isFormValid = formHasErrors(); // Check if the form has any errors\r\n if (!isFormValid) return; // If the form has errors, return (do nothing\r\n\r\n // Set the loading state to true\r\n setLoading(true);\r\n inviteUserButton.current.disabled = true;\r\n\r\n try {\r\n let users = await inviteUsers(invitedUser)\r\n if (!showInIframe) {\r\n // order by users as same as invitedUser sequence\r\n users = invitedUser.map(email => users.find(user => user.email === email));\r\n // Add the new users to the existing users\r\n const updatedUsers = [...organizationUsers, ...users]\r\n // filter out duplicate users\r\n const uniqueUsers = updatedUsers.filter((user, index, self) => { return self.findIndex(user2 => user2.email === user.email) === index; });\r\n updateUsers(uniqueUsers); // Call the updateUsers function (passed in as a prop\r\n }\r\n let message = users.length > 1 ? `${users.length} People have been invited` : `${users[0].email} has been invited`; // Ternary operator used for string interpolation \r\n showNotification(message); // Call the showNotification function (passed in as a prop)\r\n } catch (error) {\r\n console.log(error);\r\n } finally {\r\n setLoading(false);\r\n closeDialog(); // Close the dialog\r\n }\r\n };\r\n\r\n //This function is used to invite users to an organization. It takes in an array of users as an argument.\r\n const inviteUsers = async (users) => {\r\n // Call the API to invite users to an organization\r\n let invitedUsers = await inviteUserToOrganization(organization._id, selectedRole._id, users);\r\n\r\n // Send email to each user\r\n for (let user of invitedUsers) {\r\n // create properties object for email\r\n let properties = {\r\n userName: userAzureData.name,\r\n organizationName: organization.orgName,\r\n workspaceUrl: `${process.env.REACT_APP_RUNTIME_URL}/${organization.orgUrl}`,\r\n subject: \"You have been invited to CodelessONE\",\r\n }\r\n // generate workspace url based on user's azure id\r\n if (user.azureId && user.azureId !== \"\") {\r\n properties.designerUrl = properties.workspaceUrl\r\n } else {\r\n properties.designerUrl = `${process.env.REACT_APP_DESIGNER_URL}/signup`\r\n }\r\n // send email to invited user\r\n await sendEmail(user.email, process.env.REACT_APP_SENDGRID_INVITE_KEY, properties);\r\n }\r\n // Return the users\r\n return invitedUsers || [];\r\n };\r\n\r\n //This function is called when the user clicks the \"Update\" button.\r\n const onUpdate = async (event) => {\r\n event.preventDefault(); // Prevent the default action of the button\r\n inviteUserButton.current.disabled = true; // Disable the update button\r\n const isFormValid = formHasErrors(); // Check if the form has any errors\r\n if (!isFormValid) return; // If the form has errors, return (do nothing)\r\n\r\n setLoading(true); // Set the loading state to true\r\n try {\r\n const response = await changeUserOrganizationRole(organization._id, selectedRole._id, toUpdateUser._id); // Call the API to update the user's role in the organization\r\n if (response.status === \"Success\") {\r\n const role = roles.find(role => role._id === selectedRole._id); // Find the role in the roles array that matches the roleId in the response\r\n const index = organizationUsers.findIndex(user => user._id === toUpdateUser._id); // Find the index of the user in the organizationUsers array\r\n organizationUsers[index].roleType = role.roleType; // Update the roleType of the user\r\n updateUsers(organizationUsers); // Call the updateUsers function (passed in as a prop)\r\n }\r\n } catch (error) { // Catch any errors that occur in the try block \r\n console.log(error); // Log the error to the console for debugging purposes \r\n } finally { // This code will always run regardless of whether or not an error occurs in the try block \r\n setLoading(false); // Set loading to false so the page can be updated with new data \r\n closeDialog(); // Close the dialog box when finished \r\n }\r\n }\r\n\r\n return (\r\n \r\n {loading && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {errors.map(err => (\r\n {err}\r\n ))}\r\n
    \r\n {\r\n toUpdateUser ?\r\n
    \r\n \r\n
    \r\n :\r\n setInvitedUser(e)}\r\n sendError={(e) => setErrors([e])}\r\n onKeyPressed={() => setErrors([])}\r\n onItemAdded={(e) => handleEmailAdded(e)}\r\n onChanged={(e) => handleUserEmail(e)}\r\n placeholder={t(\"email_placeholder\")}\r\n >\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n setSelectedRole(event.value)} // Set the selectedRole state variable when the user selects a role from the dropdown list\r\n data={roles} // Pass the roles prop as data to the dropdown list\r\n itemRender={itemRender}\r\n textField=\"roleTypeText\" // Use the \"roleType\" field as the display text for the dropdown list options\r\n dataItemKey=\"_id\" // Use the \"value\" field as the key for the dropdown list options\r\n value={selectedRole} // Set the default selected value to the selectedRole state variable\r\n />\r\n
    \r\n
    \r\n
    \r\n {/* Display a button to submit the form */}\r\n {loading && (\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// Component for the dialog that shows the invite form\r\nexport const InviteOrganizationUsersDailog = (props) => {\r\n\r\n const { t, i18n } = useTranslation([\r\n \"users/invite_user_dialog\"\r\n ], {\r\n useSuspense: false\r\n }) // Translation\r\n\r\n useEffect(() => {\r\n // i18n.changeLanguage(props.organization.platformLanguage)\r\n }, []);\r\n\r\n return (\r\n \r\n {/* Render the InviteUsertoOrganizationForm component inside the dialog */}\r\n \r\n \r\n );\r\n};","//import necessary modules and components\r\nimport React, { useState, useEffect, useContext, Fragment } from \"react\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { PageContainer, Content, Header } from \"../../Drawer/PageContainer\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport UserDisplay from \"../../Shared/User/UserDisplay\";\r\nimport { InviteOrganizationUsersDailog } from \"./InviteOrganizationUsers\";\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\";\r\nimport RemoveDialog from \"../../Shared/Remove/RemoveDialog\";\r\nimport Upgarde from \"../../Shared/Subscription/Upgrade\";\r\nimport { NotificationGroup, Notification } from '@progress/kendo-react-notification';\r\nimport { OverlayLoader } from \"../../Shared/Loader/OverlayLoader\";\r\nimport { sendEmail } from \"../../../API/EmailApi\";\r\nimport { getAzureUser } from \"../../../API/User/User\";\r\nimport { getOrganizationUsers, removeUserFromOrganization } from \"../../../API/Organization/organization\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { assignSubscriptionToUser, removeSubscriptionFromUser } from \"../../../API/Subscription/SubscriptionHelper\";\r\n\r\n// Define the OrganizationUsers component and accept the organization, user props\r\nconst OrganizationUsers = ({\r\n organization,\r\n user\r\n}) => {\r\n //context\r\n const context = useContext(MsalContext); // Get MsalContext\r\n const [loading, setLoading] = useState(true); // Define the loading state and set it to true\r\n const [updatingUser, setUpdatingUser] = useState(false); // Define the updatingUser state and set it to false\r\n const [selectedUser, setSelectedUser] = useState(null); // Define the selectedUser state and set it to null\r\n const [roles, setRoles] = useState([]); // Define the roles state and set it to an empty array\r\n const [organizationUsers, setOrganizationUsers] = useState([]); // Define the organizationUsers state and set it to an empty array\r\n const [listOrganizationUsers, setListOrganizationUsers] = useState([]); // Define the listOrganizationUsers state and set it to an empty array\r\n\r\n const [showInviteUserDialog, setShowInviteUserDialog] = useState(false); // Define the showInviteUserDialog state and set it to false\r\n const [showDeleteDialog, setShowDeleteDialog] = useState(false); // Define the showDeleteDialog state and set it to false\r\n const [showRemoveLicenseDialog, setShowRemoveLicenseDialog] = useState(false); // Define the showRemoveLicenseDialog state and set it to false\r\n const [showUpgradeDialog, setShowUpgradeDialog] = useState(false); // Define the showUpgradeDialog state and set it to false\r\n const [showNotification, setShowNotification] = useState(false); // Define the showNotification state and set it to false\r\n const [notificationMessage, setNotificationMessage] = useState(\"\"); // Define the notificationMessage state and set it to an empty string\r\n\r\n const { t, i18n } = useTranslation([\r\n \"users/common\",\r\n \"users/remove_user_dialog\",\r\n \"users/remove_subscription_dialog\",\r\n ], {\r\n useSuspense: false\r\n }) // Translation\r\n\r\n // Define an useEffect hook that is called when the organizationData\r\n useEffect(() => {\r\n // Define an asynchronous function that fetches the necessary data\r\n const getOrganizationUsersData = async () => {\r\n // try catch block to catch any errors\r\n try {\r\n const organizationUsers = await getOrganizationUsers(organization._id);\r\n const roles = getOrganizationRoles();\r\n setRoles(roles);\r\n setOrganizationUsers(arrangeUsers(organizationUsers));\r\n setListOrganizationUsers(arrangeUsers(organizationUsers));\r\n } catch (error) {\r\n console.log(error);\r\n } finally {\r\n // Set the loading state to false\r\n setLoading(false);\r\n }\r\n };\r\n // Call the getOrganizationUsersData function\r\n getOrganizationUsersData();\r\n }, [organization]);\r\n\r\n const getOrganizationRoles = () => {\r\n let { roles } = organization;\r\n const filteredRoles = roles.filter((role) => role.roleType !== 'Owner');\r\n const sortedRoles = filteredRoles.sort((a, b) => a.order - b.order);\r\n return sortedRoles;\r\n };\r\n\r\n // Define a function that returns the number of subscription users\r\n const getNumberofSubscriptionUser = () => {\r\n const subscriptionUsers = organizationUsers.filter(user => user.isSubscriptionUser);\r\n return subscriptionUsers.length || 0;\r\n }\r\n\r\n // Define a function that arranges the users based on their role\r\n const arrangeUsers = (users) => {\r\n // Define an array of roleTypes\r\n const roleTypes = [\"Owner\", \"Administrator\", \"Member\", \"App Participant\"];\r\n let arrangedUsers = [];\r\n\r\n // Loop through the roleTypes array and filter the users based on their roleType\r\n roleTypes.forEach(roleType => {\r\n const filteredUsers = users.filter(user => user.roleType === roleType);\r\n // Loop through the filtered users and add them to the arrangedUsers array\r\n filteredUsers.forEach(user => {\r\n user.indexId = arrangedUsers.length + 1;\r\n arrangedUsers.push(user);\r\n });\r\n });\r\n // Return the arrangedUsers array\r\n return arrangedUsers;\r\n }\r\n\r\n //define a function that filters the users based on the search value\r\n const filterUsers = (e) => {\r\n let users = [...listOrganizationUsers];\r\n const searchValue = e.target.value.trim().toLowerCase();\r\n if (searchValue !== \"\") {\r\n users = users.filter(user =>\r\n user.displayName.toLowerCase().includes(searchValue) ||\r\n user.email.toLowerCase().includes(searchValue)\r\n );\r\n }\r\n setOrganizationUsers(arrangeUsers(users));\r\n };\r\n\r\n // handle notification with settimeout\r\n const handleNotification = (message) => {\r\n setShowNotification(true);\r\n setNotificationMessage(message);\r\n setTimeout(() => {\r\n setShowNotification(false);\r\n setNotificationMessage(\"\");\r\n }, 2000); // set timeout to 2 seconds\r\n }\r\n\r\n // define a function that handle edit user\r\n const handleEditUser = (user) => {\r\n setSelectedUser(user); // Set the selectedUser state to the user\r\n setShowInviteUserDialog(true); // Set the showInviteUserDialog state to true\r\n }\r\n\r\n // define a function that handle delete user\r\n const handleDeleteUser = (user) => {\r\n setSelectedUser(user); // Set the selectedUser state to the user\r\n setShowDeleteDialog(true); // Set the showDeleteDialog state to true\r\n }\r\n\r\n // define a function that remove license from user\r\n const handleRemoveLicenseforUser = (user) => {\r\n setSelectedUser(user); // Set the selectedUser state to the user\r\n setShowRemoveLicenseDialog(true); // Set the showRemoveLicenseDialog state to true\r\n }\r\n\r\n // define a function that handle update organization users\r\n const setUsers = (users) => {\r\n const arrangedUsers = arrangeUsers(users); // Call the arrangeUsers function and pass in the users\r\n setOrganizationUsers(arrangedUsers); // Set the organizationUsers state to the arrangedUsers\r\n setListOrganizationUsers(arrangedUsers); // Set the listOrganizationUsers state to the arrangedUsers\r\n }\r\n\r\n // Delete user from organization\r\n const deleteUser = async (event) => {\r\n event.preventDefault();\r\n // Set the updatingUser state to true\r\n setUpdatingUser(true);\r\n try {\r\n // Call the removeUserFromOrganization API\r\n await removeUserFromOrganization(organization._id, selectedUser._id);\r\n const updatedUsers = listOrganizationUsers.filter(user => user.email !== selectedUser.email); // Filter out the selected user from the listOrganizationUsers state\r\n setUsers(updatedUsers); // Set the users\r\n } catch (err) {\r\n console.log(err); // Log an error message\r\n } finally {\r\n setUpdatingUser(false); // Set the updatingUser state to false\r\n setSelectedUser(null); // Set the selectedUser state to null\r\n setShowDeleteDialog(false); // Set the showDeleteDialog state to false\r\n }\r\n }\r\n\r\n // Define a funtion that handles the remove license from user\r\n const removeLicenseForUser = async (event) => {\r\n event.preventDefault();\r\n // Set the updatingUser state to true\r\n setUpdatingUser(true);\r\n try {\r\n // Call the removeUserLicense API\r\n await removeSubscriptionFromUser(organization._id, selectedUser._id)\r\n\r\n let index = organizationUsers.findIndex(dataItem => dataItem._id === selectedUser._id)\r\n if (index > -1) {\r\n organizationUsers[index].isSubscriptionUser = false\r\n }\r\n setOrganizationUsers(organizationUsers); // Set the organizationUsers state to the updated users\r\n } catch (err) {\r\n console.log(err); // Log an error message\r\n } finally {\r\n setUpdatingUser(false); // Set the updatingUser state to false\r\n setSelectedUser(null); // Set the selectedUser state to null\r\n setShowRemoveLicenseDialog(false); // Set the showDeleteDialog state to false\r\n }\r\n }\r\n\r\n // Define a funtion that handles the assign license from user\r\n const assignLicenseForUser = async (user) => {\r\n // Set the updatingUser state to true\r\n setUpdatingUser(true);\r\n setSelectedUser(user); // Set the selectedUser state to the user\r\n try {\r\n // Call the assignUserLicense API\r\n const response = await assignSubscriptionToUser(organization._id, user._id)\r\n if (response.status && response.status === \"Failure\") {\r\n setShowUpgradeDialog(true); // Set the showUpgradeDailog state to true\r\n } else {\r\n const message = \"User \" + user.email + \" has been assigned subscription\"\r\n handleNotification(message)\r\n let index = organizationUsers.findIndex(dataItem => dataItem._id === user._id)\r\n if (index > -1) {\r\n organizationUsers[index].isSubscriptionUser = true\r\n }\r\n setOrganizationUsers(organizationUsers); // Set the organizationUsers state to the updated users\r\n }\r\n } catch (err) {\r\n console.log(err); // Log an error message\r\n } finally {\r\n setUpdatingUser(false); // Set the updatingUser state to false\r\n setSelectedUser(null); // Set the selectedUser state to null\r\n }\r\n }\r\n\r\n // Define a function that resend email to user\r\n const resendInvitation = async (user) => {\r\n let data = [...organizationUsers]\r\n let index = data.findIndex(dataItem => dataItem._id === user._id)\r\n data[index].sendingEmail = true\r\n\r\n const userAzureData = await getAzureUser(context)\r\n\r\n let properties = {\r\n userName: userAzureData.name,\r\n organizationName: organization.orgName,\r\n workspaceUrl: `${process.env.REACT_APP_RUNTIME_URL}/${organization.orgUrl}`,\r\n subject: \"You have been invited to CodelessONE\"\r\n };\r\n \r\n // generate workspace url based on user's azure id\r\n if (user.azureId && user.azureId !== \"\") {\r\n properties.designerUrl = properties.workspaceUrl\r\n } else {\r\n properties.designerUrl = `${process.env.REACT_APP_DESIGNER_URL}/signup`\r\n }\r\n\r\n // generate workspace url based on user's azure id\r\n if (user.azureId && user.azureId !== \"\") {\r\n properties.designerUrl = properties.workspaceUrl\r\n } else {\r\n properties.designerUrl = `${process.env.REACT_APP_DESIGNER_URL}/signup`\r\n }\r\n\r\n await sendEmail(user.email, process.env.REACT_APP_SENDGRID_INVITE_KEY, properties);\r\n setOrganizationUsers(data);\r\n setTimeout(() => {\r\n data[index].sendingEmail = false\r\n setOrganizationUsers(data);\r\n }, 5000);\r\n };\r\n\r\n // If inProgress is not \"none\", show a Loader component\r\n if (context.inProgress !== \"none\" || loading) {\r\n return ;\r\n }\r\n\r\n // Otherwise, show the OrganizationUsers component\r\n return (\r\n \r\n setShowInviteUserDialog(true)} >\r\n \r\n {/* Organization seats available */}\r\n {t(\"header.number_of_seat_assigned\")} {getNumberofSubscriptionUser()} \\ {organization.numSeats}\r\n\r\n {/* Search Organization Users */}\r\n \r\n \r\n \r\n \r\n \r\n {/* Show the OverlayLoader component if updatingUser is true */}\r\n {updatingUser && }\r\n\r\n {/* Show notification for invite user, assign user licence, remove user licence */}\r\n {showNotification &&\r\n \r\n \r\n {notificationMessage}\r\n \r\n \r\n }\r\n\r\n {/* Invite User to Organization Dialog */}\r\n {showInviteUserDialog &&\r\n {\r\n setSelectedUser(null)\r\n setShowInviteUserDialog(false)\r\n }}\r\n />\r\n }\r\n\r\n {/* Upgrade Subscription Dialog */}\r\n {showUpgradeDialog &&\r\n setShowUpgradeDialog(false)}\r\n Type={'UserSeats'}\r\n />\r\n }\r\n\r\n {/* Remove User From Organization Dialog */}\r\n {showDeleteDialog && (\r\n {\r\n setSelectedUser(null)\r\n setShowDeleteDialog(false)\r\n }}\r\n showLoader={updatingUser}\r\n message={t(\"warning\", { email: selectedUser.email, ns: \"users/remove_user_dialog\" })}\r\n onDelete={deleteUser}\r\n Title={t(\"title\", { ns: \"users/remove_user_dialog\" })}\r\n deleteButtonText={t(\"buttons.remove_button_label\", { ns: \"users/remove_user_dialog\" })}\r\n cancelButtonText={t(\"buttons.cancel_button_label\", { ns: \"users/remove_user_dialog\" })}\r\n Reset={false}\r\n />\r\n )}\r\n\r\n {/* Remove User License Dialog */}\r\n {showRemoveLicenseDialog && (\r\n {\r\n setSelectedUser(null)\r\n setShowRemoveLicenseDialog(false)\r\n }}\r\n showLoader={updatingUser}\r\n message={t(\"warning\", { email: selectedUser.email, ns: \"users/remove_subscription_dialog\" })}\r\n onDelete={removeLicenseForUser}\r\n Title={t(\"title\", { ns: \"users/remove_subscription_dialog\" })}\r\n deleteButtonText={t(\"buttons.remove_button_label\", { ns: \"users/remove_subscription_dialog\" })}\r\n cancelButtonText={t(\"buttons.cancel_button_label\", { ns: \"users/remove_subscription_dialog\" })}\r\n Reset={false}\r\n />\r\n )}\r\n\r\n {/* Organization Users Grid */}\r\n
    \r\n \r\n \r\n {\r\n return (\r\n \r\n \r\n \r\n );\r\n }} />\r\n {\r\n return (\r\n \r\n
    \r\n {t(\"grid.role_type.\" + props.dataItem.roleType.toLowerCase().replace(\" \", \"_\"))}\r\n
    \r\n \r\n );\r\n }} />\r\n {\r\n return (\r\n \r\n \r\n {\r\n props.dataItem.invitationAccepted === \"Accepted\" ?\r\n t(\"grid.status_type.joined\")\r\n :\r\n t(\"grid.status_type.pending\")\r\n }\r\n \r\n \r\n {props.dataItem.invitationAccepted !== \"Accepted\" && (\r\n <>\r\n {!props.dataItem.sendingEmail &&\r\n resendInvitation(props.dataItem)}>\r\n {t(\"grid.resent_invitation\")}\r\n \r\n }\r\n {props.dataItem.sendingEmail &&\r\n \r\n {t(\"grid.invitation_sent\")}\r\n \r\n }\r\n \r\n )}\r\n \r\n \r\n );\r\n }}\r\n />\r\n {\r\n return (\r\n \r\n \r\n {props.dataItem.isSubscriptionUser ?\r\n t(\"grid.subscription_user\")\r\n :\r\n t(\"grid.non_subscription_user\")\r\n }\r\n \r\n \r\n )\r\n }} />\r\n {\r\n return (\r\n \r\n {(props.dataItem.roleType === \"Owner\" || props.dataItem.email === user.email) ? null :\r\n \r\n handleEditUser(props.dataItem)}\r\n className=\"me-1 btn btn-link\"\r\n >\r\n \r\n \r\n handleDeleteUser(props.dataItem)}\r\n className=\"me-1 btn btn-link\"\r\n >\r\n \r\n \r\n props.dataItem.isSubscriptionUser ? handleRemoveLicenseforUser(props.dataItem) : assignLicenseForUser(props.dataItem)}\r\n type={'button'}>\r\n {props.dataItem.isSubscriptionUser ? : }\r\n \r\n \r\n {(updatingUser && selectedUser._id === props.dataItem._id) && (\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 OrganizationUsers","import { getDatalakeImageUrl } from \"../../Helpers/DateLakeStorage\";\r\n\r\nconst NoAccessComponent = () => {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Only organization owner and administrators can manage this.\r\n
    \r\n
    \r\n Please contact them to change your subscription.\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default NoAccessComponent;","import React from \"react\";\r\nimport OrganizationUsers from \"../../Components/OrganizationSettings/UserManagement/OrganizationUsers\";\r\nimport NoAccessComponent from \"../../Components/Shared/Error/NoAccess\";\r\n\r\nconst WorkspaceUserPage = ({ organization, user, role }) => {\r\n const authorized = role.roleType === 'Owner' || role.roleType === 'Administrator';\r\n if (!authorized) {\r\n return \r\n }\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default WorkspaceUserPage; \r\n","export const PAYMENT_METHODS_LOADED = \"PAYMENT_METHODS_LOADED\";\r\n\r\nexport const PAYMENT_METHOD_SELECTED = \"PAYMENT_METHOD_SELECTED\";\r\n\r\nexport const NEW_CARD_ADDED = \"NEW_CARD_ADDED\";\r\n\r\nexport const INVOICES_LOADED = \"INVOICES_LOADED\";\r\n\r\nexport const PAYMENT_METHOD_UPDATED = \"PAYMENT_METHOD_UPDATED\";\r\n\r\nexport const SET_BILLING_INFORMATION = \"SET_BILLING_INFORMATION\";\r\n\r\nexport const SET_TAX_INFO = \"SET_TAX_INFO\";\r\n\r\nexport const CUSTOMER_INFO_LOADED = \"CUSTOMER_INFO_LOADED\";\r\n\r\nexport const PAYMENT_METHOD_REMOVED = \"PAYMENT_METHOD_REMOVED\";","import * as Events from './Events';\r\n\r\nexport default function organizationSubscriptionReducer(state, action) {\r\n switch(action.type) {\r\n case Events.PAYMENT_METHODS_LOADED:\r\n return {\r\n ...state,\r\n paymentMethods: [ ...action.payload ]\r\n }\r\n case Events.PAYMENT_METHOD_SELECTED:\r\n return {\r\n ...state,\r\n selectedPaymentMethodId: action.payload\r\n }\r\n case Events.NEW_CARD_ADDED:\r\n return {\r\n ...state,\r\n paymentMethods: [\r\n ...state.paymentMethods,\r\n { ...action.payload }\r\n ]\r\n }\r\n case Events.INVOICES_LOADED:\r\n return {\r\n ...state,\r\n invoices: [\r\n ...action.payload\r\n ]\r\n }\r\n case Events.PAYMENT_METHOD_UPDATED:\r\n return {\r\n ...state,\r\n paymentMethods: state.paymentMethods.map(paymentMethod => {\r\n debugger\r\n if (paymentMethod.id === action.payload.paymentMethodId) {\r\n return {\r\n ...paymentMethod,\r\n card: {\r\n ...paymentMethod.card,\r\n exp_month: action.payload.expiryMonth,\r\n exp_year: action.payload.expiryYear\r\n }\r\n }\r\n }\r\n\r\n return paymentMethod;\r\n })\r\n }\r\n case Events.SET_BILLING_INFORMATION:\r\n return {\r\n ...state,\r\n billingInformation: {\r\n ...action.payload\r\n }\r\n }\r\n case Events.SET_TAX_INFO:\r\n return {\r\n ...state,\r\n taxInfo: {\r\n ...action.payload\r\n }\r\n }\r\n case Events.CUSTOMER_INFO_LOADED:\r\n return {\r\n ...state,\r\n customerInfo: {\r\n ...action.payload\r\n }\r\n }\r\n case Events.PAYMENT_METHOD_REMOVED:\r\n return {\r\n ...state,\r\n paymentMethods: state.paymentMethods.filter(paymentMethod => (\r\n paymentMethod.id !== action.payload\r\n ))\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import React, { createContext, useReducer } from 'react';\r\nimport organizationSubscriptionReducer from './OrganizationSubscriptionReducer';\r\n\r\nexport const initialValue = {\r\n paymentMethods: [],\r\n invoices: [],\r\n customerInfo: {},\r\n billingInformation: {},\r\n taxInfo: {},\r\n selectedPaymentMethodId: \"\",\r\n};\r\n\r\nexport const OrganizationSubscriptionContext = createContext(initialValue);\r\n\r\nfunction OrganizationSubscriptionProvider({ children }) {\r\n\r\n const [state, dispatch] = useReducer(organizationSubscriptionReducer, initialValue);\r\n \r\n return (\r\n \r\n { children }\r\n \r\n )\r\n}\r\n\r\nexport default OrganizationSubscriptionProvider;","import React, { useEffect, useState } from 'react';\r\nimport { callApiWithAuthorization } from '../../../../API/CallApi';\r\n\r\nfunction useGetInvoices(organizationId, subscriptionId) {\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [invoices, setInvoices] = useState([]);\r\n const [error, setError] = useState(\"\");\r\n \r\n useEffect(() => {\r\n getInvoices();\r\n }, []);\r\n\r\n async function getInvoices() {\r\n try {\r\n const request = await callApiWithAuthorization(\"/api/v0/organization/\"+ organizationId +\"/subscription/\"+subscriptionId+\"/invoices?expand=data.charge\");\r\n const response = await request.json();\r\n if (response.error) {\r\n throw new Error(response.error);\r\n }\r\n setInvoices(response.invoices);\r\n } catch (e) {\r\n setError(e.message);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return { loading, invoices, error };\r\n}\r\n\r\nexport default useGetInvoices;","import { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport moment from 'moment';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { callApiWithAuthorization } from '../../../API/CallApi';\r\nimport Loader from '../../Shared/Loader/loader';\r\nimport useGetInvoices from './Hooks/useGetInvoices';\r\nimport { Menu, MenuItem } from '@progress/kendo-react-layout';\r\n\r\nfunction InvoiceList({ organizationId, gridClassName = \"w-50\", subscriptionId, currentPriceId, onPayNowClick }) {\r\n\r\n const { invoices, loading, error } = useGetInvoices(organizationId, subscriptionId);\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n if (error) {\r\n return (\r\n
    \r\n Something went wrong while getting your invoices.\r\n Please refresh and try again.\r\n
    \r\n )\r\n }\r\n\r\n function showPayNowButtonForInvoice(invoice) {\r\n const invoiceCreatedAt = invoice.created * 1000;\r\n const today = new Date().getTime();\r\n return (\r\n invoice.status === \"open\" &&\r\n currentPriceId === invoice.lines.data[0].price.id &&\r\n today - invoiceCreatedAt < 95\r\n )\r\n }\r\n\r\n function handlePayNowClick(event, invoice) {\r\n onPayNowClick(event, invoice);\r\n }\r\n\r\n function getPayNowClassName(invoice) {\r\n switch (invoice.status) {\r\n case \"paid\":\r\n return \" btn-success\";\r\n case \"uncollectible\":\r\n return \" btn-secondary\";\r\n case \"open\":\r\n return \" btn-danger\";\r\n default:\r\n return \" btn-primary\";\r\n }\r\n }\r\n\r\n function getPayNowButtonText(invoice) {\r\n switch (invoice.status) {\r\n case \"paid\":\r\n return \"Paid\";\r\n case \"uncollectible\":\r\n return \"Uncollectible\";\r\n case \"open\":\r\n return \"Open\";\r\n default:\r\n return \"Open\";\r\n }\r\n }\r\n\r\n function getReceiptPdfUrl(invoice) {\r\n const charge = invoice.charge;\r\n if (charge && charge.receipt_url && charge.receipt_url !== \"\" && charge.receipt_url !== null) {\r\n const [url, queryParams] = charge.receipt_url.split(\"?\");\r\n return url + \"/pdf?\" + queryParams;\r\n }\r\n return \"\";\r\n }\r\n\r\n return (\r\n \r\n (\r\n \r\n ${ props.dataItem[props.field] / 100 }\r\n \r\n )} />\r\n (\r\n \r\n \r\n \r\n )} />\r\n (\r\n \r\n { moment(props.dataItem[props.field] * 1000).format(\"Do MMMM YYYY\") }\r\n \r\n )} />\r\n (\r\n \r\n {\r\n showPayNowButtonForInvoice(props.dataItem) &&\r\n \r\n }\r\n \r\n )} />\r\n (\r\n \r\n e.item.data()} className=\"no-dropdown-in-menu\">\r\n\t\t\t\t\t\t\t { }}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n \r\n )} />\r\n \r\n )\r\n}\r\n\r\nexport default InvoiceList;","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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, dispatchEvent, getTabIndex, createPropsContext, usePropsContext, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the PropsContext of the `RadioButton` component.\n * Used for global configuration of all `RadioButton` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var RadioButtonPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact RadioButton component]({% slug overview_radiobutton %}).\n *\n * Accepts properties of type [RadioButtonProps]({% slug api_inputs_radiobuttonprops %}).\n * Obtaining the `ref` returns an object of type [RadioButtonHandle]({% slug api_inputs_radiobuttonhandle %}).\n */\nexport var RadioButton = React.forwardRef(function (directProps, target) {\n var _a;\n validatePackage(packageMetadata);\n var props = usePropsContext(RadioButtonPropsContext, directProps);\n var ariaDescribedBy = props.ariaDescribedBy, checked = props.checked, children = props.children, className = props.className, disabled = props.disabled, id = props.id, size = props.size, label = props.label, labelPlacement = props.labelPlacement, name = props.name, style = props.style, tabIndex = props.tabIndex, value = props.value, valid = props.valid, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, others = __rest(props, [\"ariaDescribedBy\", \"checked\", \"children\", \"className\", \"disabled\", \"id\", \"size\", \"label\", \"labelPlacement\", \"name\", \"style\", \"tabIndex\", \"value\", \"valid\", \"onChange\", \"onFocus\", \"onBlur\"]);\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var getImperativeHandle = React.useCallback(function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); }, [focusElement]);\n React.useImperativeHandle(target, getImperativeHandle);\n var calculatedId = React.useMemo(function () { return guid(); }, []);\n var handleChange = React.useCallback(function (event) {\n dispatchEvent(onChange, event, getImperativeHandle(), { value: value });\n }, [onChange, value, disabled]);\n var handleFocus = React.useCallback(function (event) {\n if (onFocus && !disabled) {\n dispatchEvent(onFocus, event, getImperativeHandle(), undefined);\n }\n }, [onFocus, disabled]);\n var handleBlur = React.useCallback(function (event) {\n if (onBlur && !disabled) {\n dispatchEvent(onBlur, event, getImperativeHandle(), undefined);\n }\n }, [onBlur, disabled]);\n var inputProps = __assign({ type: 'radio', id: id || calculatedId, name: name, className: classNames('k-radio', (_a = {},\n _a[\"k-radio-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a['k-invalid'] = valid === false,\n _a), className), ref: elementRef, disabled: disabled, tabIndex: getTabIndex(tabIndex, disabled), checked: checked, style: style, 'aria-describedby': ariaDescribedBy, value: value, onChange: handleChange, onFocus: handleFocus, onBlur: handleBlur }, others);\n var radioButtonLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: 'k-radio-label', htmlFor: id || calculatedId, style: { userSelect: 'none' }, \"aria-label\": label }, label)) : null));\n var radio = React.createElement(\"input\", __assign({}, inputProps));\n return (labelPlacement === 'before'\n ? (React.createElement(React.Fragment, null,\n radioButtonLabel,\n radio,\n children)) : (React.createElement(React.Fragment, null,\n radio,\n radioButtonLabel,\n children)));\n});\nRadioButton.propTypes = {\n ariaDescribedBy: PropTypes.string,\n checked: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n label: PropTypes.string,\n labelPlacement: PropTypes.string,\n name: PropTypes.string,\n style: PropTypes.object,\n tabIndex: PropTypes.number,\n value: PropTypes.any,\n valid: PropTypes.bool,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n};\nvar defaultProps = {\n size: 'medium'\n};\nRadioButton.displayName = 'KendoRadioButton';\nRadioButton.defaultProps = defaultProps;\n","import { Dialog } from '@progress/kendo-react-dialogs';\r\nimport { RadioButton } from '@progress/kendo-react-inputs';\r\nimport React, { useState } from 'react';\r\nimport cancellationReasons from './Reasons.json';\r\n\r\nfunction CancelSubscriptionDialog({ endDate, onConfirm, onClose }) {\r\n\r\n const [showConfirmation, setShowConfirmation] = useState(false);\r\n\r\n return (\r\n \r\n {\r\n showConfirmation ? \r\n :\r\n setShowConfirmation(true)} />\r\n }\r\n \r\n )\r\n}\r\n\r\nexport function CancellationReasonForm({ onSubmit }) {\r\n\r\n const [selectedReasonIndex, setSelectedReasonIndex] = useState(0);\r\n const [description, setDescription] = useState(\"\");\r\n\r\n function handleSubmit() {\r\n onSubmit();\r\n }\r\n\r\n return (\r\n
    \r\n
    We appreciate you giving us a chance, and we'd love to learn more about how we could have made your experience better.
    \r\n
    Why do you want to cancel?
    \r\n {\r\n cancellationReasons.map((reason, index) => (\r\n
    \r\n setSelectedReasonIndex(index)}\r\n label={reason.optionText}\r\n className=\"me-1\" />\r\n
    \r\n ))\r\n }\r\n
    \r\n \r\n min 13 characters\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport function CancellationConfirmationForm({ endDate, onConfirm, onUndo }) {\r\n return (\r\n
    \r\n

    \r\n We are sorry to see you go!\r\n

    \r\n

    \r\n Your subscription plan is paid till { endDate }. After that, we will downgrade you to the Free plan.\r\n

    \r\n

    \r\n If you would like to proceed with the cancellation, please confirm below.\r\n

    \r\n
    \r\n \r\n  \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default CancelSubscriptionDialog;","import { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport React, { useState } from 'react';\r\nimport { updateExpiry } from '../../API/Payment/Payment';\r\n\r\nfunction UpdateExpiryDialog({ organizationId, paymentMethodId, onUpdate, onClose }) {\r\n\r\n const [expiry, setExpiry] = useState('');\r\n const [isValidFormat, setIsValidFormat] = useState(true);\r\n const [isValid, setIsValid] = useState(true);\r\n\r\n function handleExpiryChange(event) {\r\n let { value } = event.target;\r\n \r\n // Auto-populate '/' when the first two characters are entered\r\n if (value.length === 2 && expiry.charAt(2) === '/') {\r\n // Remove the second character if the user attempts to remove '/'\r\n value = value.slice(0, 1);\r\n } else if (value.length === 2 && !value.includes('/')) {\r\n value += '/';\r\n } else if (value.length === 1 && parseInt(value, 10) > 1) {\r\n // If the user enters a single digit and it's greater than 1, format it to '0X/'\r\n value = `0${value}/`;\r\n }\r\n \r\n setExpiry(value);\r\n \r\n const [isValidFormat, isValidExpiry] = validateExpiry(value);\r\n setIsValidFormat(isValidFormat);\r\n setIsValid(isValidExpiry);\r\n };\r\n\r\n function validateExpiry(value) {\r\n // Validate MM/YY format using a regular expression\r\n const isValidFormat = /^(0[1-9]|1[0-2])\\/\\d{0,2}$/.test(value);\r\n \r\n let isValidExpiry = true;\r\n \r\n if (isValidFormat) {\r\n const [inputMonth, inputYear] = value.split('/');\r\n const currentYear = new Date().getFullYear() % 100;\r\n const currentMonth = new Date().getMonth() + 1;\r\n\r\n const expiryYear = parseInt(inputYear, 10);\r\n const expiryMonth = parseInt(inputMonth, 10);\r\n\r\n isValidExpiry = expiryYear > currentYear || (expiryYear === currentYear && expiryMonth >= currentMonth);\r\n }\r\n\r\n return [isValidFormat, isValidExpiry];\r\n }\r\n\r\n async function updatePaymentMethodExpiry() {\r\n const [expiryMonth, expiryYear] = expiry.split('/').map((value) => parseInt(value, 10)); // [MM, YY\r\n await updateExpiry(organizationId, paymentMethodId, expiryMonth, expiryYear);\r\n onUpdate({ paymentMethodId, expiryMonth, expiryYear });\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n \r\n {!isValidFormat &&

    Please enter a valid MM/YY format

    }\r\n {!isValid &&

    Please enter a valid expiry date

    }\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n Update\r\n \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default UpdateExpiryDialog;","export function getNextSubscriptionPeriod(subscription) {\r\n const currentPeriodEnd = subscription.current_period_end;\r\n const nextPeriod = subscription.schedule.phases.find(phase => (\r\n phase.start_date >= currentPeriodEnd\r\n ));\r\n return nextPeriod;\r\n}","import React from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport InnerLoader from \"../Loader/InnerLoader\";\r\nimport { OverlayLoader } from \"../Loader/OverlayLoader\";\r\n\r\n/* refactored - ali */\r\nconst SaveDialog = ({\r\n\ttoggleSaveDialog, onSave, onCancel,\r\n\tmessage, Title, message2,\r\n\tSaveButtonText, cancelButtonText,\r\n\tshowLoader,\r\n\twarningIconColor = \"warning\",\r\n}) => {\r\n\tfunction Save(e) {\r\n\t\t// e.target.disabled = true;\r\n\t\tonSave(e);\r\n\t}\r\n\r\n\tfunction Cancel(e) {\r\n\t\te.target.disabled = true;\r\n\t\tonCancel(e);\r\n\t}\r\n\treturn (\r\n\t\t\r\n\t\t\t{showLoader && }\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t{message}\r\n\t\t\t\t\t{message2 &&
    {message2}
    }\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t{showLoader && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default SaveDialog;\r\n","import React, { Component, useContext, useEffect, useRef, useState } from 'react'\r\nimport { Content, Header, PageContainer } from '../Drawer/PageContainer'\r\nimport Scrollable from '../Shared/Edit/Scrollable'\r\nimport { callApiWithAuthorization } from '../../API/CallApi'\r\nimport Loader from '../Shared/Loader/loader'\r\nimport InnerLoader from '../Shared/Loader/InnerLoader'\r\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs'\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns'\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { updateNode } from '../Helpers/Nodes'\r\nimport { addCustomerTaxId, cancelPlanChangeInNextPhase, cancelSeatChangeInNextPhase, chargeCustomerForInvoice, chargeCustomerForOpenInvoices, deleteCustomerPaymentMethod, deleteCustomerTaxId, getCurrentSubscriptionForOrganisation, getCurrentSubscriptionStripeDataForOrganisation, getCustomerStripeData, getNewPrice, getPaymentMethodById, updateCustomer, updateCustomerDefaultPaymentMethod, updateCustomerTaxId } from '../../API/Payment/Payment'\r\nimport CustomerCardList from '../Pricing/CustomerCardList'\r\nimport { OrganizationSubscriptionContext } from '../../Context/OrganizationSubscription/OrganizationSubscriptionContext'\r\nimport { NEW_CARD_ADDED, PAYMENT_METHOD_SELECTED, PAYMENT_METHOD_UPDATED, SET_TAX_INFO, PAYMENT_METHOD_REMOVED } from '../../Context/OrganizationSubscription/Events'\r\nimport { loadStripe } from '@stripe/stripe-js'\r\nimport { Elements } from '@stripe/react-stripe-js'\r\nimport AddNewCardDialog from '../Pricing/AddNewCardDialog'\r\nimport InvoiceList from './Invoices/InvoiceList'\r\nimport moment from 'moment'\r\nimport CancelSubscriptionDialog from './CancelSubscription/CancelSubscriptionDialog'\r\nimport UpdateExpiryDialog from '../Pricing/UpdateExpiryDialog'\r\nimport BillingInformationForm from '../Pricing/BillingInformationForm'\r\nimport { SET_BILLING_INFORMATION } from '../../Context/Pricing/Events'\r\nimport CompanyTaxInfoFields from '../Pricing/CompanyTaxInfoFields'\r\nimport { acceptedCardWithImages } from '../Pricing/AcceptedCardTypes'\r\nimport RemoveDialog from '../Shared/Remove/RemoveDialog'\r\nimport { useNavigate } from 'react-router-dom'\r\nimport { Dropdown } from 'react-bootstrap';\r\nimport { SUBSCRIPTION_PLANS } from '../Shared/Subscription/SubscriptionInfo'\r\nimport { getNextSubscriptionPeriod } from './utils'\r\nimport { postMessageToRuntime } from '../Helpers/Runtime/runtime'\r\nimport NoAccessComponent from '../Shared/Error/NoAccess'\r\nimport SaveDialog from '../Shared/Remove/SaveDialog'\r\nimport { getSubscriptions } from '../../API/Subscription/SubscriptionHelper'\r\n\r\nfunction CardRenderer({\r\n paymentMethod, defaultPaymentMethodId, showDelete,\r\n onUpdateCardClick, onSetAsPrimaryClick, onDeleteClick\r\n}) {\r\n\r\n const { state, dispatch } = useContext(OrganizationSubscriptionContext);\r\n\r\n const date = new Date();\r\n\r\n const cardType = acceptedCardWithImages.find(cardImage => (\r\n cardImage.type.toLowerCase() === paymentMethod.card.brand?.toLowerCase()\r\n ));\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {cardType?.type} ending in {paymentMethod.card.last4}\r\n
    \r\n
    \r\n {paymentMethod.card.exp_month} / {paymentMethod.card.exp_year}\r\n {\r\n defaultPaymentMethodId === paymentMethod.id &&\r\n \r\n  (Primary)\r\n \r\n }\r\n {\r\n (\r\n date.getFullYear() > paymentMethod.card.exp_year ||\r\n (\r\n date.getFullYear() === paymentMethod.card.exp_year &&\r\n date.getMonth() > paymentMethod.card.exp_month\r\n )\r\n ) &&\r\n \r\n Card expired, please update\r\n \r\n }\r\n
    \r\n
    \r\n onUpdateCardClick(paymentMethod.id)}>Edit\r\n {\r\n defaultPaymentMethodId !== paymentMethod.id &&\r\n <>\r\n  | \r\n onSetAsPrimaryClick(paymentMethod.id)}>\r\n Set as primary\r\n \r\n \r\n }\r\n {\r\n showDelete &&\r\n <>\r\n  | \r\n Delete\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nfunction Subscription(props) {\r\n\r\n const saveBtn = useRef(null);\r\n const formRef = useRef(null);\r\n\r\n const navigate = useNavigate();\r\n\r\n const { state: subscriptionState, dispatch } = useContext(OrganizationSubscriptionContext);\r\n\r\n const context = useMsal();\r\n const [state, setState] = useState({\r\n subscriptions: [],\r\n currentOrganization: {},\r\n customerStripeInfo: {},\r\n nextChargeInfo: {},\r\n showAddNewCardDialog: false,\r\n stripe: {},\r\n loading: true,\r\n showCancellationDialog: false,\r\n cardToUpdate: \"\",\r\n showUpdateAddressDialog: false,\r\n showDeleteCardDialog: false,\r\n showCancelPlanChangeDialog: false,\r\n showCancelSeatChangeDialog: false,\r\n deletingCard: false,\r\n showNoAccess: false,\r\n invoiceToPay: \"\"\r\n });\r\n\r\n let defaultData = {};\r\n\r\n async function getData() {\r\n const currentOrganization = { ...props.organization }\r\n const [\r\n subscriptions, currentSubscription, customerStripeInfo,\r\n subscriptionStripeData\r\n ] = await Promise.all([\r\n getSubscriptions(),\r\n getCurrentSubscriptionForOrganisation(currentOrganization._id),\r\n getCustomerStripeData(currentOrganization._id),\r\n getCurrentSubscriptionStripeDataForOrganisation(currentOrganization._id)\r\n ]);\r\n if (\r\n subscriptions.status === \"unauthorized\" ||\r\n currentSubscription.status === \"unauthorized\" ||\r\n customerStripeInfo.status === \"unauthorized\" ||\r\n subscriptionStripeData.status === \"unauthorized\"\r\n ) {\r\n setState(prevState => ({\r\n ...prevState,\r\n showNoAccess: true,\r\n loading: false\r\n }))\r\n return;\r\n }\r\n let priceId = subscriptionStripeData.items.data[0].price.id;\r\n let quantity = subscriptionStripeData.items.data[0].quantity;\r\n if (subscriptionStripeData.schedule) {\r\n const nextPeriod = getNextSubscriptionPeriod(subscriptionStripeData);\r\n if (nextPeriod) {\r\n priceId = nextPeriod.items[0].price;\r\n quantity = nextPeriod.items[0].quantity;\r\n }\r\n }\r\n const nextChargeInfo = await getNewPrice(\r\n subscriptionStripeData.id, priceId, quantity\r\n )\r\n defaultData = {\r\n ...currentSubscription,\r\n numSeats: Number(currentOrganization.numSeats)\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n subscriptions,\r\n currentSubscription,\r\n customerStripeInfo,\r\n numSeats: Number(currentOrganization.numSeats),\r\n currentOrganization,\r\n selectedSubscription: {},\r\n showSubscriptionChangeDailog: false,\r\n loading: false,\r\n showCancellationDialog: false,\r\n subscriptionStripeData,\r\n nextChargeInfo\r\n }));\r\n }\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (subscriptionState.paymentMethods.length > 0) {\r\n const { subscriptionStripeData } = state;\r\n dispatch({\r\n type: PAYMENT_METHOD_SELECTED,\r\n payload: subscriptionStripeData.default_payment_method\r\n })\r\n }\r\n }, [subscriptionState.paymentMethods])\r\n\r\n const setNumberofSeatsData = () => {\r\n const maxSeats = state.selectedSubscription.maxSeats\r\n let numSeats = []\r\n for (let i = 0; i < Number(maxSeats); i++) {\r\n numSeats.push(i + 1)\r\n }\r\n return numSeats\r\n }\r\n\r\n const toggleChangeSubscriptionDailog = () => {\r\n setState(prevState => ({\r\n ...prevState,\r\n showSubscriptionChangeDailog: !state.showSubscriptionChangeDailog,\r\n selectedSubscription: state.currentSubscription.length === 0 ? {} : state.currentSubscription\r\n }))\r\n }\r\n\r\n const handleSubscriptionChange = (e) => {\r\n let numSeats\r\n if (e.target.value.id !== state.currentSubscription.id) {\r\n numSeats = 1\r\n } else {\r\n numSeats = Number(defaultData.numSeats)\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n selectedSubscription: e.target.value,\r\n numSeats\r\n }))\r\n }\r\n\r\n const showAddNewCardDialog = () => {\r\n const stripe = loadStripe(process.env.REACT_APP_STRIPE_PUBLISHABLE_KEY);\r\n setState(prevState => ({\r\n ...prevState,\r\n showAddNewCardDialog: true,\r\n stripe\r\n }))\r\n }\r\n\r\n function handlePayNowClick(event, invoice) {\r\n debugger;\r\n const stripe = loadStripe(process.env.REACT_APP_STRIPE_PUBLISHABLE_KEY);\r\n setState(prevState => ({\r\n ...prevState,\r\n showAddNewCardDialog: true,\r\n invoiceToPay: invoice.id,\r\n stripe\r\n }))\r\n }\r\n\r\n const hideAddNewCardDialog = () => {\r\n setState(prevState => ({\r\n ...prevState,\r\n showAddNewCardDialog: false,\r\n stripe: {},\r\n invoiceToPay: \"\"\r\n }))\r\n }\r\n\r\n const handleNumberofSeats = (e) => {\r\n setState(prevState => ({\r\n ...prevState,\r\n numSeats: e.target.value\r\n }))\r\n }\r\n\r\n const shouldDisabled = () => {\r\n let disable = true\r\n if (state.selectedSubscription && state.selectedSubscription.id) {\r\n disable = false\r\n }\r\n if (typeof state.currentSubscription === \"object\" && state.selectedSubscription.id === state.currentSubscription.id) {\r\n disable = true\r\n }\r\n if (defaultData.numSeats !== String(state.numSeats)) {\r\n disable = false\r\n }\r\n return disable\r\n }\r\n\r\n const ChangeSubscription = async (e) => {\r\n e.preventDefault()\r\n let { currentSubscription, numSeats, currentOrganization } = state\r\n if (typeof state.currentSubscription === \"object\" && state.selectedSubscription.id !== state.currentSubscription.id) {\r\n let response = await callApiWithAuthorization(\"/api/v0/ChangeSubscription\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n orgId: currentOrganization._id,\r\n subscriptionId: state.selectedSubscription.id\r\n }),\r\n })\r\n currentSubscription = await response.json()\r\n }\r\n\r\n if (state.currentOrganization && state.currentOrganization._id && defaultData.numSeats !== String(state.numSeats)) {\r\n await updateNode(\"Organization\", state.currentOrganization._id, {\r\n numSeats: String(state.numSeats)\r\n })\r\n numSeats = state.numSeats\r\n }\r\n defaultData = {\r\n ...currentSubscription,\r\n numSeats,\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n currentSubscription,\r\n numSeats,\r\n selectedSubscription: {},\r\n showSubscriptionChangeDailog: false\r\n }))\r\n }\r\n\r\n async function handleCardAdd(setupIntent) {\r\n debugger\r\n const response = await getPaymentMethodById(\r\n state.currentOrganization._id,\r\n setupIntent.payment_method\r\n );\r\n if (state.invoiceToPay) {\r\n await chargeCustomerForInvoice(state.currentOrganization._id, state.invoiceToPay, setupIntent.payment_method);\r\n } else {\r\n await chargeCustomerForOpenInvoices(state.currentOrganization._id, setupIntent.payment_method)\r\n }\r\n dispatch({\r\n type: NEW_CARD_ADDED,\r\n payload: response\r\n })\r\n hideAddNewCardDialog();\r\n }\r\n\r\n async function cancelSubscriptionAtPeriodEnd() {\r\n const organizationId = state.currentOrganization._id;\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/organization/${organizationId}/subscription/cancel`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n subscriptionId: state.currentOrganization.stripeSubscriptionId\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n window.location.reload();\r\n }\r\n\r\n function toggleUpdateExpiryDialog(paymentMethodId) {\r\n setState(prevState => ({\r\n ...prevState,\r\n cardToUpdate: paymentMethodId\r\n }))\r\n }\r\n\r\n function hideUpdateCardDialog(updatedInfo) {\r\n const firstTwoDigitsOfCurrentYear = new Date().getFullYear().toString().slice(0, 2);\r\n dispatch({\r\n type: PAYMENT_METHOD_UPDATED,\r\n payload: {\r\n paymentMethodId: updatedInfo.paymentMethodId,\r\n expiryMonth: parseInt(updatedInfo.expiryMonth),\r\n expiryYear: parseInt(firstTwoDigitsOfCurrentYear + updatedInfo.expiryYear),\r\n }\r\n })\r\n setState(prevState => ({\r\n ...prevState,\r\n cardToUpdate: \"\"\r\n }))\r\n }\r\n\r\n async function updateCustomerPrimaryCard(cardId) {\r\n await updateCustomerDefaultPaymentMethod(\r\n state.currentOrganization._id,\r\n cardId\r\n )\r\n setState(prevState => ({\r\n ...prevState,\r\n customerStripeInfo: {\r\n ...prevState.customerStripeInfo,\r\n invoice_settings: {\r\n ...prevState.customerStripeInfo.invoice_settings,\r\n default_payment_method: cardId\r\n }\r\n }\r\n }))\r\n }\r\n\r\n async function handleBillingInformationSubmit() {\r\n const { name, ...address } = subscriptionState.billingInformation;\r\n let nameToUpdate = name;\r\n if (address.country === \"CA\") {\r\n nameToUpdate = subscriptionState.taxInfo.companyName;\r\n }\r\n const { customerStripeInfo } = state;\r\n const newStripeInfo = { ...customerStripeInfo };\r\n await updateCustomer(\r\n state.currentOrganization._id,\r\n { name: nameToUpdate, address }\r\n );\r\n newStripeInfo.address = address;\r\n if (state.customerStripeInfo.tax_ids.data.length === 0) {\r\n const newTaxId = await addCustomerTaxId(\r\n state.currentOrganization._id,\r\n subscriptionState.taxInfo.gstNumber\r\n )\r\n newStripeInfo.tax_ids.data.push(newTaxId);\r\n } else if (\r\n state.customerStripeInfo.tax_ids.data[0].value !== subscriptionState.taxInfo.gstNumber\r\n ) {\r\n const newTaxId = await updateCustomerTaxId(\r\n state.currentOrganization._id,\r\n state.customerStripeInfo.tax_ids.data[0].id,\r\n subscriptionState.taxInfo.gstNumber\r\n )\r\n newStripeInfo.tax_ids.data[0] = newTaxId;\r\n } else if (\r\n address.country !== \"CA\"\r\n ) {\r\n await deleteCustomerTaxId(\r\n state.currentOrganization._id,\r\n state.customerStripeInfo.tax_ids.data[0].id\r\n );\r\n newStripeInfo.tax_ids.data = []\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n customerStripeInfo: newStripeInfo,\r\n showUpdateAddressDialog: false\r\n }))\r\n }\r\n\r\n function toggleDeleteCardDialog() {\r\n setState(prevState => ({\r\n ...prevState,\r\n showDeleteCardDialog: !prevState.showDeleteCardDialog\r\n }));\r\n }\r\n\r\n function handleDelete(paymentMethodId) {\r\n toggleDeleteCardDialog();\r\n setState(prevState => ({\r\n ...prevState,\r\n paymentMethodToDelete: paymentMethodId\r\n }))\r\n }\r\n\r\n async function deleteCard() {\r\n setState(prevState => ({\r\n ...prevState,\r\n deletingCard: true\r\n }))\r\n const primaryCardId = state.customerStripeInfo.invoice_settings?.default_payment_method;\r\n const primaryCardIndex = subscriptionState.paymentMethods.findIndex(paymentMethod => (\r\n paymentMethod.id === primaryCardId\r\n ));\r\n await deleteCustomerPaymentMethod(state.currentOrganization._id, state.paymentMethodToDelete);\r\n toggleDeleteCardDialog();\r\n if (primaryCardId === state.paymentMethodToDelete) {\r\n const paymentMethods = subscriptionState.paymentMethods.filter(paymentMethod => paymentMethod.id !== state.paymentMethodToDelete);\r\n let nextPrimaryCardIndex = 0;\r\n if (primaryCardIndex !== 0) {\r\n nextPrimaryCardIndex = primaryCardIndex - 1;\r\n }\r\n await updateCustomerPrimaryCard(paymentMethods[nextPrimaryCardIndex].id);\r\n }\r\n dispatch({\r\n type: PAYMENT_METHOD_REMOVED,\r\n payload: state.paymentMethodToDelete\r\n })\r\n setState(prevState => ({\r\n ...prevState,\r\n paymentMethodToDelete: \"\",\r\n deletingCard: false\r\n }))\r\n }\r\n\r\n function navigateToPaymentPage() {\r\n navigate(\"/_Payment/\" + state.currentOrganization._id)\r\n }\r\n\r\n function getPlanChangeMessage() {\r\n if (state.subscriptionStripeData && state.subscriptionStripeData.schedule) {\r\n const nextPeriod = getNextSubscriptionPeriod(state.subscriptionStripeData)\r\n const isPlanChanged = nextPeriod && nextPeriod.items[0].price !== state.subscriptionStripeData.items.data[0].price.id;\r\n if (isPlanChanged) {\r\n const plan = SUBSCRIPTION_PLANS.find(plan => (\r\n plan.price.annually.stripePriceId === nextPeriod.items[0].price ||\r\n plan.price.monthly.stripePriceId === nextPeriod.items[0].price\r\n ))\r\n const planPaymentInterval = plan.price.annually.stripePriceId === nextPeriod.items[0].price ? \"Annual\" : \"Monthly\";\r\n return (\r\n \r\n (Downgrade to {plan.name} - {planPaymentInterval} when next billing cycle starts)\r\n \r\n \r\n );\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function toggleCancelPlanChangeDialog() {\r\n setState(prevState => ({\r\n ...prevState,\r\n showCancelPlanChangeDialog: !prevState.showCancelPlanChangeDialog\r\n }))\r\n }\r\n\r\n async function cancelPlanChange() {\r\n await cancelPlanChangeInNextPhase(\r\n state.currentOrganization._id,\r\n state.currentOrganization.stripeSubscriptionId\r\n );\r\n\r\n const nextSubscriptionPeriod = getNextSubscriptionPeriod(state.subscriptionStripeData);\r\n nextSubscriptionPeriod.items[0].price = state.subscriptionStripeData.items.data[0].price.id;\r\n\r\n setState(prevState => ({\r\n ...prevState,\r\n subscriptionStripeData: {\r\n ...prevState.subscriptionStripeData,\r\n schedule: {\r\n ...prevState.subscriptionStripeData.schedule,\r\n phases: [\r\n ...prevState.subscriptionStripeData.schedule.phases.filter(phase => (\r\n phase.start_date < nextSubscriptionPeriod.start_date\r\n )),\r\n nextSubscriptionPeriod\r\n ]\r\n }\r\n },\r\n showCancelPlanChangeDialog: false\r\n }))\r\n }\r\n\r\n function getSeatChangeMessage() {\r\n if (state.subscriptionStripeData && state.subscriptionStripeData.schedule) {\r\n const nextPeriod = getNextSubscriptionPeriod(state.subscriptionStripeData)\r\n const isSeatChanged = nextPeriod && nextPeriod.items[0].quantity < state.subscriptionStripeData.items.data[0].quantity;\r\n const isPlanChangedToFree = nextPeriod && (\r\n nextPeriod.items[0].price === process.env.REACT_APP_STRIPE_FREE_MONTHLY_PRICE ||\r\n nextPeriod.items[0].price === process.env.REACT_APP_STRIPE_FREE_ANNUAL_PRICE\r\n );\r\n const nextSubscriptionPlanDetails = nextPeriod && SUBSCRIPTION_PLANS.find(plan => (\r\n plan.price.annually.stripePriceId === nextPeriod.items[0].price ||\r\n plan.price.monthly.stripePriceId === nextPeriod.items[0].price\r\n ));\r\n const nextSubscription = nextSubscriptionPlanDetails && state.subscriptions.find(subscription => (\r\n subscription.stripeProductId === nextSubscriptionPlanDetails.stripeProductId\r\n ));\r\n const isNextPlanSeatLimitExceeded = nextSubscriptionPlanDetails && nextSubscription.maxSeats < state.numSeats;\r\n if (isSeatChanged) {\r\n if (isPlanChangedToFree) {\r\n \r\n (Reduce to 2 seats when next billing cycle starts)\r\n \r\n } else if (!isPlanChangedToFree && !isNextPlanSeatLimitExceeded) {\r\n return (\r\n \r\n (Reduce to {nextPeriod.items[0].quantity} when next billing cycle starts)\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function toggleCancelSeatChangeDialog() {\r\n setState(prevState => ({\r\n ...prevState,\r\n showCancelSeatChangeDialog: !prevState.showCancelSeatChangeDialog\r\n }))\r\n }\r\n\r\n async function cancelSeatChange() {\r\n await cancelSeatChangeInNextPhase(\r\n state.currentOrganization._id,\r\n state.currentOrganization.stripeSubscriptionId\r\n );\r\n\r\n const nextSubscriptionPeriod = getNextSubscriptionPeriod(state.subscriptionStripeData);\r\n nextSubscriptionPeriod.items[0].quantity = state.subscriptionStripeData.items.data[0].quantity;\r\n\r\n setState(prevState => ({\r\n ...prevState,\r\n subscriptionStripeData: {\r\n ...prevState.subscriptionStripeData,\r\n schedule: {\r\n ...prevState.subscriptionStripeData.schedule,\r\n phases: [\r\n ...prevState.subscriptionStripeData.schedule.phases.filter(phase => (\r\n phase.start_date < nextSubscriptionPeriod.start_date\r\n )),\r\n nextSubscriptionPeriod\r\n ]\r\n }\r\n },\r\n showCancelSeatChangeDialog: false\r\n }))\r\n }\r\n\r\n function sendOpenPopupMessageToRuntime() {\r\n postMessageToRuntime({\r\n eventType: \"OPEN_PRICING_POPUP\"\r\n })\r\n }\r\n\r\n if (state.showNoAccess) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n {\r\n !props.showInIframe &&\r\n
    \r\n \r\n
    \r\n }\r\n \r\n {\r\n state.showCancellationDialog &&\r\n setState(prevState => ({\r\n ...prevState,\r\n showCancellationDialog: false\r\n }))\r\n } />\r\n }\r\n {\r\n state.showUpdateAddressDialog &&\r\n { setState(prevState => ({ ...prevState, showUpdateAddressDialog: false })) }}>\r\n
    \r\n
    \r\n (\r\n dispatch({\r\n type: SET_BILLING_INFORMATION,\r\n payload: value\r\n })\r\n )}\r\n />\r\n
    \r\n {\r\n subscriptionState.billingInformation.country === \"CA\" &&\r\n 0 ?\r\n {\r\n name: state.customerStripeInfo.name,\r\n gstNumber: state.customerStripeInfo.tax_ids?.data[0]?.value\r\n }\r\n :\r\n {}\r\n }\r\n onChange={value => (\r\n dispatch({\r\n type: SET_TAX_INFO,\r\n payload: value\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 state.cardToUpdate &&\r\n \r\n }\r\n {\r\n state.showSubscriptionChangeDailog &&\r\n \r\n
    \r\n
    Select Subscription
    \r\n \r\n
    Number of seats
    \r\n \r\n \r\n \r\n {state.processingSubscription && (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n Change\r\n \r\n
    \r\n \r\n \r\n }\r\n {\r\n state.showAddNewCardDialog &&\r\n \r\n \r\n \r\n }\r\n {\r\n state.showDeleteCardDialog &&\r\n \r\n }\r\n {\r\n state.showCancelPlanChangeDialog &&\r\n \r\n }\r\n {\r\n state.showCancelSeatChangeDialog &&\r\n \r\n }\r\n {\r\n state.loading ?\r\n \r\n :\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Subscription Details

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n Update Subscription\r\n \r\n {\r\n state.currentSubscription &&\r\n state.currentSubscription.subscriptionName !== \"Free\" &&\r\n setState(prevState => ({\r\n ...prevState,\r\n showCancellationDialog: true\r\n }))}>\r\n Cancel Subscription\r\n \r\n }\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Current Plan :
    \r\n \r\n {\r\n state.currentSubscription.length === 0 ?\r\n \"No Subscription Linked\"\r\n :\r\n state.currentSubscription.subscriptionName\r\n }\r\n {\r\n state.currentSubscription.subscriptionName === \"Free\" ||\r\n state.subscriptionStripeData?.plan?.interval === \"month\" ?\r\n \" - Monthly Plan\"\r\n :\r\n \" - Annual Plan\"\r\n }\r\n \r\n {getPlanChangeMessage()}\r\n
    \r\n
    \r\n
    Number of Seats:
    \r\n \r\n {\r\n !state.currentSubscription && \"No Subscription Linked\"\r\n }\r\n {\r\n state.currentSubscription &&\r\n state.currentSubscription.subscriptionName === \"Free\" ?\r\n \"Up to 2 seats\"\r\n :\r\n `${state.numSeats} seats`\r\n }\r\n \r\n {getSeatChangeMessage()}\r\n
    \r\n {\r\n state.nextChargeInfo &&\r\n state.nextChargeInfo.next_payment_attempt &&\r\n state.nextChargeInfo.amount_due\r\n ?\r\n
    \r\n
    Next Billing:
    \r\n \r\n {\r\n moment(new Date(state.nextChargeInfo.next_payment_attempt * 1000)).format(\"Do MMMM YYYY\")\r\n }\r\n  \r\n for\r\n  \r\n $\r\n {\r\n (state.nextChargeInfo.amount_due / 100).toFixed(2)\r\n }\r\n \r\n
    \r\n :\r\n null\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n (\r\n handleDelete(itemProps.paymentMethod.id)}\r\n showDelete={subscriptionState.paymentMethods.length > 1}\r\n {...itemProps}\r\n />\r\n )} />\r\n \r\n
    \r\n {\r\n subscriptionState.paymentMethods.length > 0 &&\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Billing Information\r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n\r\n setState(prevState => ({ ...prevState, showUpdateAddressDialog: true }))}>\r\n Edit Billing\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 Subscription","import React from \"react\";\r\nimport Subscription from \"../../Components/OrganizationSettings/Subscription\";\r\nimport OrganizationSubscriptionProvider from \"../../Context/OrganizationSubscription/OrganizationSubscriptionContext\";\r\nimport NoAccessComponent from \"../../Components/Shared/Error/NoAccess\";\r\n\r\nconst WorkspaceSubscriptionPage = ({ organization, user, role }) => {\r\n const authorized = role.roleType === 'Owner' || role.roleType === 'Administrator';\r\n if (!authorized) {\r\n return ;\r\n }\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default WorkspaceSubscriptionPage; ","import React, { useState, useEffect } from \"react\";\r\nimport { useParams } from 'react-router-dom';\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport Loader from \"../Components/Shared/Loader/loader\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getLoggedInUserUsingAccessToken } from \"../API/User/User\";\r\nimport { getUserAndItsOrganizations } from \"../API/Organization/organization\";\r\n\r\nexport const WorkspaceOrganizationRouteRender = (props) => {\r\n\tconst { organizationId } = useParams();\r\n\tconst { inProgress } = useMsal(); // Destructure instance & inProgress for clarity\r\n\tconst { i18n, ready: tReady } = useTranslation();\r\n\r\n\tconst [loading, setLoading] = useState(true);\r\n\tconst [hasAccess, setHasAccess] = useState(false);\r\n\tconst [accessError, setAccessError] = useState(\"\");\r\n\tconst [loggedInUser, setLoggedInUser] = useState(null);\r\n\tconst [organizationData, setOrganizationData] = useState({\r\n\t\torganization: {},\r\n\t\tuser: {},\r\n\t\trole: {}\r\n\t});\r\n\r\n\t// Fetch logged-in user once when the component mounts\r\n\tuseEffect(() => {\r\n\t\tconst accessToken = localStorage.getItem(\"accessToken\");\r\n\r\n\t\tif (!accessToken) {\r\n\t\t\tsetLoading(false);\r\n\t\t\tsetHasAccess(false);\r\n\t\t\tsetAccessError(\"Sorry, Please login to continue.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If inProgress is not \"none\", avoid running the effect\r\n\t\tif (inProgress !== \"none\") return;\r\n\r\n\t\tconst fetchUser = async () => {\r\n\t\t\ttry {\r\n\t\t\t\tconst user = await getLoggedInUserUsingAccessToken();\r\n\t\t\t\tsetLoggedInUser(user);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tsetAccessError(\"Error fetching user data.\");\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfetchUser();\r\n\t}, [inProgress]);\r\n\r\n\t// Validate access to the organization after the user is fetched\r\n\tuseEffect(() => {\r\n\t\tif (!loggedInUser) return; // Wait until loggedInUser is available\r\n\r\n\t\tconst validateAccess = async () => {\r\n\t\t\tsetLoading(true);\r\n\t\t\ttry {\r\n\t\t\t\tconst { organizations, user } = await getUserAndItsOrganizations(loggedInUser.emails[0]);\r\n\t\t\t\tconst organization = organizations.find(org => org._id === organizationId);\r\n\r\n\t\t\t\tif (!organization) {\r\n\t\t\t\t\tsetHasAccess(false);\r\n\t\t\t\t\tsetAccessError(\"Sorry. You have not been granted access to this Organization. Please contact the Admin(s).\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst organizationUser = organization.users.find(u => u.userId === user._id);\r\n\t\t\t\t\tconst role = organization.roles.find(role => role._id === organizationUser.roleId);\r\n\r\n\t\t\t\t\tsetOrganizationData({ organization, user, role });\r\n\t\t\t\t\tsetHasAccess(true);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tsetAccessError(\"Error validating access.\");\r\n\t\t\t} finally {\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvalidateAccess();\r\n\t}, [loggedInUser, organizationId]);\r\n\r\n\t// Update the language when organization changes\r\n\tuseEffect(() => {\r\n\t\tif (tReady && organizationData.organization) {\r\n\t\t\tconst platformLanguage = organizationData.organization.platformLanguage || \"en\";\r\n\t\t\ti18n.changeLanguage(platformLanguage);\r\n\t\t}\r\n\t}, [tReady, organizationData.organization, i18n]);\r\n\r\n\tif (loading) return ;\r\n\r\n\tif (!hasAccess) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    {accessError}
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{React.Children.map(props.children, (child) =>\r\n\t\t\t\tReact.isValidElement(child)\r\n\t\t\t\t\t? React.cloneElement(child, {\r\n\t\t\t\t\t\torganization: organizationData.organization,\r\n\t\t\t\t\t\tuser: organizationData.user,\r\n\t\t\t\t\t\trole: organizationData.role,\r\n\t\t\t\t\t})\r\n\t\t\t\t\t: child\r\n\t\t\t)}\r\n\t\t\r\n\t)\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar SplitterPane = /** @class */ (function (_super) {\n __extends(SplitterPane, _super);\n function SplitterPane() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SplitterPane.prototype.render = function () {\n var _a;\n var _b = this.props, id = _b.id, size = _b.size, collapsed = _b.collapsed, overlay = _b.overlay, containsSplitter = _b.containsSplitter, collapsible = _b.collapsible, resizable = _b.resizable, scrollable = _b.scrollable, keepMounted = _b.keepMounted;\n var fixedSize = size && size.length > 0;\n var style = {\n flexBasis: size\n };\n var paneClasses = classNames('k-pane', (_a = {},\n _a['k-state-hidden'] = collapsed,\n _a['hidden'] = collapsed,\n _a['k-pane-flex'] = containsSplitter,\n _a['k-pane-static'] = !resizable && !collapsible || fixedSize,\n _a['k-scrollable'] = scrollable,\n _a));\n return (React.createElement(\"div\", { id: id, style: style, className: paneClasses },\n !collapsed || keepMounted ? this.props.children : undefined,\n overlay ? React.createElement(\"div\", { className: 'k-splitter-overlay k-overlay' }) : undefined));\n };\n return SplitterPane;\n}(React.Component));\nexport { SplitterPane };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 { classNames, Draggable, Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar SplitterBar = /** @class */ (function (_super) {\n __extends(SplitterBar, _super);\n function SplitterBar(props) {\n var _this = _super.call(this, props) || this;\n _this.draggable = null;\n _this.onDrag = function (data, isFirst, isLast) {\n var event = data.event;\n var _a = _this.props, onDrag = _a.onDrag, index = _a.index;\n var element = _this.draggable && _this.draggable.element;\n if (!isLast && event) {\n event.originalEvent.preventDefault();\n }\n if (element && !_this.isStatic && _this.isDraggable) {\n onDrag(event, element, index, isFirst, isLast);\n }\n };\n _this.onFocus = function () {\n _this.setState({\n focused: true\n });\n };\n _this.onBlur = function () {\n _this.setState({\n focused: false\n });\n };\n _this.onToggle = function (event) {\n var _a = _this.props, onToggle = _a.onToggle, index = _a.index, prev = _a.prev, next = _a.next;\n if (prev.collapsible || next.collapsible) {\n onToggle(prev.collapsible ? index : index + 1, event);\n }\n };\n _this.onPrevToggle = function (event) {\n var _a = _this.props, onToggle = _a.onToggle, index = _a.index, prev = _a.prev;\n if (prev.collapsible) {\n onToggle(index, event);\n }\n };\n _this.onNextToggle = function (event) {\n var _a = _this.props, onToggle = _a.onToggle, index = _a.index, next = _a.next;\n if (next.collapsible) {\n onToggle(index + 1, event);\n }\n };\n _this.onKeyDown = function (event) {\n var keyCode = event && event.keyCode;\n var isHorizontal = _this.isHorizontal;\n var index = _this.props.index;\n var element = _this.draggable && _this.draggable.element;\n var onKeyboardResize = function (el, idx, offset) {\n event.preventDefault();\n _this.props.onKeyboardResize(el, idx, offset, event);\n };\n if (!element) {\n return;\n }\n if (keyCode === Keys.enter) {\n event.preventDefault();\n _this.onToggle(event);\n }\n else if (_this.isDraggable) {\n if (isHorizontal && keyCode === Keys.left) {\n onKeyboardResize(element, index, -10);\n }\n else if (isHorizontal && keyCode === Keys.right) {\n onKeyboardResize(element, index, 10);\n }\n else if (!isHorizontal && keyCode === Keys.up) {\n onKeyboardResize(element, index, -10);\n }\n else if (!isHorizontal && keyCode === Keys.down) {\n onKeyboardResize(element, index, 10);\n }\n }\n };\n _this.previousArrowClass = function (isHorizontal) {\n var _a;\n var prev = _this.props.prev;\n var isCollapsible = prev.collapsible;\n var isCollapsed = prev.collapsed;\n return classNames('k-icon', (_a = {},\n _a['k-hidden'] = !isCollapsible,\n _a['k-collapse-prev'] = isCollapsible,\n _a['k-i-arrow-60-left'] = isCollapsible && isHorizontal && !isCollapsed,\n _a['k-i-arrow-60-right'] = isCollapsible && isHorizontal && isCollapsed,\n _a['k-i-arrow-60-up'] = isCollapsible && !isHorizontal && !isCollapsed,\n _a['k-i-arrow-60-down'] = isCollapsible && !isHorizontal && isCollapsed,\n _a));\n };\n _this.nextArrowClass = function (isHorizontal) {\n var _a;\n var next = _this.props.next;\n var isCollapsible = next.collapsible;\n var isCollapsed = next.collapsed;\n return classNames('k-icon', (_a = {},\n _a['k-hidden'] = !isCollapsible,\n _a['k-collapse-next'] = isCollapsible,\n _a['k-i-arrow-60-right'] = isCollapsible && isHorizontal && !isCollapsed,\n _a['k-i-arrow-60-left'] = isCollapsible && isHorizontal && isCollapsed,\n _a['k-i-arrow-60-down'] = isCollapsible && !isHorizontal && !isCollapsed,\n _a['k-i-arrow-60-up'] = isCollapsible && !isHorizontal && isCollapsed,\n _a));\n };\n _this.state = {\n focused: false\n };\n return _this;\n }\n Object.defineProperty(SplitterBar.prototype, \"isStatic\", {\n get: function () {\n var _a = this.props, prev = _a.prev, next = _a.next;\n var betweenResizablePanes = prev.resizable && next.resizable;\n var nearCollapsiblePane = prev.collapsible || next.collapsible;\n return !betweenResizablePanes && !nearCollapsiblePane;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SplitterBar.prototype, \"isDraggable\", {\n get: function () {\n var _a = this.props, prev = _a.prev, next = _a.next;\n var betweenResizablePanes = prev.resizable && next.resizable;\n var nearCollapsedPane = prev.collapsed || next.collapsed;\n return !!betweenResizablePanes && !nearCollapsedPane;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SplitterBar.prototype, \"isHorizontal\", {\n get: function () {\n return this.props.orientation === 'horizontal';\n },\n enumerable: false,\n configurable: true\n });\n SplitterBar.prototype.render = function () {\n var _a;\n var _this = this;\n var isDraggable = this.isDraggable;\n var isStatic = this.isStatic;\n var isHorizontal = this.isHorizontal;\n var barClasses = classNames('k-splitbar', (_a = {},\n _a['k-focus'] = this.state.focused,\n _a['k-splitbar-horizontal'] = isHorizontal,\n _a['k-splitbar-vertical'] = !isHorizontal,\n _a['k-splitbar-draggable-horizontal'] = isHorizontal && isDraggable,\n _a['k-splitbar-draggable-vertical'] = !isHorizontal && isDraggable,\n _a['k-splitbar-static-horizontal'] = isHorizontal && isStatic,\n _a['k-splitbar-static-vertical'] = !isHorizontal && isStatic,\n _a));\n var previousArrowClass = this.previousArrowClass(isHorizontal);\n var nextArrowClass = this.nextArrowClass(isHorizontal);\n return (React.createElement(Draggable, { onPress: function (event) { return _this.onDrag(event, true, false); }, onDrag: function (event) { return _this.onDrag(event, false, false); }, onRelease: function (event) { return _this.onDrag(event, false, true); }, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"div\", { tabIndex: isStatic ? -1 : 0, role: 'separator', className: barClasses, style: { touchAction: 'none' }, onFocus: this.onFocus, onBlur: this.onBlur, onDoubleClick: this.onToggle, onKeyDown: this.onKeyDown },\n React.createElement(\"div\", { className: previousArrowClass, onClick: this.onPrevToggle }),\n React.createElement(\"div\", { className: 'k-resize-handle' }),\n React.createElement(\"div\", { className: nextArrowClass, onClick: this.onNextToggle }))));\n };\n return SplitterBar;\n}(React.Component));\nexport { SplitterBar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { SplitterPane } from './SplitterPane';\nimport { SplitterBar } from './SplitterBar';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * @hidden\n */\nvar PANE_DEFAULTS = {\n collapsible: false,\n collapsed: false,\n resizable: true,\n scrollable: true\n};\n/**\n * @hidden\n */\nvar DOUBLE_CLICK_WAIT_TIME = 150;\n/**\n * Represents the [KendoReact Splitter component]({% slug overview_splitter %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n *
    \n * \n *
    Pane 1
    \n *
    Pane 2
    \n *
    Pane 3
    \n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * @hidden\n */\n function Splitter(props) {\n var _this = _super.call(this, props) || this;\n _this._container = null;\n _this.validatePanes = function (panesOptions) {\n var withoutSize = panesOptions.filter(function (pane) { return pane.size === undefined; });\n if (!withoutSize.length) {\n throw new Error('The Splitter should have at least one pane without a set size.');\n }\n };\n _this.mapPaneOptions = function (panes, panesContent) {\n var orientation = _this.orientation;\n var _a = _this.state, dragIndex = _a.dragIndex, isDragging = _a.isDragging;\n var paneOptions = [];\n for (var index = 0; index < panesContent.length; index++) {\n var containsSplitter = false;\n var paneContent = panesContent[index];\n if (React.isValidElement(paneContent)) {\n containsSplitter = paneContent.type.displayName === 'Splitter';\n }\n var overlay = false;\n if (isDragging && dragIndex !== undefined) {\n overlay = dragIndex === index || dragIndex + 1 === index;\n }\n paneOptions.push(__assign(__assign(__assign({}, PANE_DEFAULTS), { orientation: orientation, containsSplitter: containsSplitter, overlay: overlay }), (panes || [])[index]));\n }\n return paneOptions;\n };\n _this.mapSplitterPanes = function (panes, panesContent) {\n return panes.map(function (pane, index) {\n var splitterBar;\n var paneKey = index * 2;\n var barKey = paneKey + 1;\n if (index + 1 < panes.length) {\n var next = panes[index + 1];\n splitterBar = (React.createElement(SplitterBar, { key: barKey, index: index, orientation: pane.orientation, prev: pane, next: next, onDrag: _this.onBarDragResize, onToggle: _this.onBarToggle, onKeyboardResize: _this.onBarKeyboardResize }));\n }\n var splitterPane = (React.createElement(SplitterPane, __assign({ key: paneKey }, pane), panesContent[index]));\n return [splitterPane, splitterBar];\n });\n };\n _this.onBarToggle = function (index, event) {\n var panesOptions = _this.panesOptions(_this.panesContent);\n var updatedState = panesOptions.map(function (pane, idx) {\n var paneProps = _this.getPaneProps(pane);\n if (idx === index) {\n return __assign(__assign({}, paneProps), { collapsed: !pane.collapsed });\n }\n else {\n return __assign({}, paneProps);\n }\n });\n if (_this.props.onChange) {\n _this.props.onChange({\n newState: updatedState,\n isLast: true,\n nativeEvent: event\n });\n }\n };\n _this.onBarDragResize = function (event, barElement, index, isFirst, isLast) {\n var time = new Date().getTime();\n var pageX = event.pageX, pageY = event.pageY;\n var _a = _this.surroudingPanes(barElement), prevElement = _a.prevElement, nextElement = _a.nextElement;\n if (!prevElement || !nextElement) {\n return;\n }\n if (isFirst) {\n _this.setState({\n isDragging: true,\n dragIndex: index,\n startTime: time,\n originalX: pageX,\n originalY: pageY,\n originalPrevSize: _this.elementSize(prevElement),\n originalNextSize: _this.elementSize(nextElement)\n });\n return;\n }\n var _b = _this.state, originalPrevSize = _b.originalPrevSize, originalNextSize = _b.originalNextSize, startTime = _b.startTime, originalX = _b.originalX, originalY = _b.originalY;\n if (!isFirst && time - startTime < DOUBLE_CLICK_WAIT_TIME) {\n if (isLast) {\n _this.resetDragState();\n }\n return;\n }\n var delta;\n if (_this.orientation === 'vertical') {\n delta = pageY - originalY;\n }\n else if (_this.isRtl) {\n delta = originalX - pageX;\n }\n else {\n delta = pageX - originalX;\n }\n _this.resize(index, index + 1, originalPrevSize, originalNextSize, delta, isLast, event);\n if (isLast) {\n _this.resetDragState();\n }\n };\n _this.onBarKeyboardResize = function (barElement, index, delta, event) {\n var _a = _this.surroudingPanes(barElement), prevElement = _a.prevElement, nextElement = _a.nextElement;\n var originalPrevSize = _this.elementSize(prevElement);\n var originalNextSize = _this.elementSize(nextElement);\n _this.resize(index, index + 1, originalPrevSize, originalNextSize, delta, true, event);\n };\n _this.containerSize = function () {\n if (!_this._container) {\n return 0;\n }\n return _this.elementSize(_this._container, true);\n };\n _this.panesOptions = function (panesContent) {\n return _this.mapPaneOptions(_this.panes, panesContent);\n };\n _this.elementSize = function (el, isContainer) {\n var sizeType = isContainer ? 'client' : 'offset';\n if (_this.orientation === 'vertical') {\n return el[\"\".concat(sizeType, \"Height\")];\n }\n else {\n return el[\"\".concat(sizeType, \"Width\")];\n }\n };\n _this.clamp = function (min, max, v) { return Math.min(max, Math.max(min, v)); };\n _this.fixedSize = function (size) { return size && size.length > 0; };\n validatePackage(packageMetadata);\n _this.state = {\n isDragging: false,\n dragIndex: undefined,\n startTime: 0,\n originalX: 0,\n originalY: 0,\n originalPrevSize: 0,\n originalNextSize: 0,\n panes: props.defaultPanes || []\n };\n return _this;\n }\n Object.defineProperty(Splitter.prototype, \"isControlledState\", {\n get: function () {\n return this.props.panes !== undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Splitter.prototype, \"panes\", {\n get: function () {\n return this.panesDuringOnChange !== undefined ?\n this.panesDuringOnChange :\n (this.isControlledState ? this.props.panes : this.state.panes);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Splitter.prototype, \"orientation\", {\n get: function () {\n return this.props.orientation || 'horizontal';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Splitter.prototype, \"isRtl\", {\n get: function () {\n return this._container && (getComputedStyle(this._container).direction === 'rtl') || false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Splitter.prototype, \"panesContent\", {\n get: function () {\n return React.Children.toArray(this.props.children).filter(function (c) { return c; });\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Splitter.prototype.render = function () {\n var _this = this;\n var panesContent = this.panesContent;\n var panesOptions = this.panesOptions(panesContent);\n var className = classNames('k-widget', 'k-splitter', 'k-splitter-flex', \"k-splitter-\".concat(this.orientation), this.props.className);\n this.validatePanes(panesOptions);\n return (React.createElement(\"div\", { style: this.props.style, ref: function (ref) { return _this._container = ref; }, className: className }, this.mapSplitterPanes(panesOptions, panesContent)));\n };\n Splitter.prototype.surroudingPanes = function (barElement) {\n return {\n prevElement: barElement.previousElementSibling,\n nextElement: barElement.nextElementSibling\n };\n };\n Splitter.prototype.isPercent = function (size) {\n return /%$/.test(size);\n };\n Splitter.prototype.toPixels = function (size, splitterSize) {\n var result = parseInt(size, 10);\n if (this.isPercent(size)) {\n result = (splitterSize * result / 100);\n }\n return result;\n };\n Splitter.prototype.resetDragState = function () {\n this.setState({\n isDragging: false,\n dragIndex: undefined,\n startTime: 0,\n originalX: 0,\n originalY: 0,\n originalPrevSize: 0,\n originalNextSize: 0\n });\n };\n Splitter.prototype.resize = function (prevIndex, nextIndex, originalPrevSize, originalNextSize, delta, isLast, event) {\n var _this = this;\n var panesOptions = this.panesOptions(this.panesContent);\n var prevOptions = panesOptions[prevIndex];\n var nextOptions = panesOptions[nextIndex];\n var total = originalPrevSize + originalNextSize;\n var splitterSize = this.containerSize();\n var px = function (s) { return _this.toPixels(s, splitterSize); };\n var prevDragState = {\n index: prevIndex,\n initialSize: originalPrevSize,\n min: px(prevOptions.min) || total - px(nextOptions.max) || 0,\n max: px(prevOptions.max) || total - px(nextOptions.min) || total\n };\n var nextDragState = {\n index: nextIndex,\n initialSize: originalNextSize,\n min: px(nextOptions.min) || total - px(prevOptions.max) || 0,\n max: px(nextOptions.max) || total - px(prevOptions.min) || total\n };\n var resize = function (paneState, change) {\n var pane = panesOptions[paneState.index];\n var newSize = _this.clamp(paneState.min, paneState.max, paneState.initialSize + change);\n if (_this.isPercent(pane.size || '')) {\n return 100 * newSize / splitterSize + '%';\n }\n else {\n return newSize + 'px';\n }\n };\n var prevSize;\n var nextSize;\n if (this.fixedSize(prevOptions.size) && this.fixedSize(nextOptions.size)) {\n prevSize = resize(prevDragState, delta);\n nextSize = resize(nextDragState, -delta);\n }\n else if (nextOptions.collapsible || this.fixedSize(nextOptions.size)) {\n nextSize = resize(nextDragState, -delta);\n }\n else {\n prevSize = resize(prevDragState, delta);\n }\n var updatedState = panesOptions.map(function (pane, idx) {\n var paneProps = _this.getPaneProps(pane);\n if (idx === prevIndex) {\n return __assign(__assign({}, paneProps), { size: prevSize });\n }\n else if (idx === nextIndex) {\n return __assign(__assign({}, paneProps), { size: nextSize });\n }\n else {\n return __assign({}, paneProps);\n }\n });\n this.panesDuringOnChange = updatedState;\n if (!this.isControlledState) {\n this.setState({\n panes: updatedState\n });\n }\n if (this.props.onChange) {\n this.props.onChange({\n newState: updatedState,\n isLast: isLast,\n nativeEvent: event\n });\n }\n this.panesDuringOnChange = undefined;\n };\n Splitter.prototype.getPaneProps = function (pane) {\n var orientation = pane.orientation, overlay = pane.overlay, containsSplitter = pane.containsSplitter, others = __rest(pane, [\"orientation\", \"overlay\", \"containsSplitter\"]);\n return others;\n };\n /**\n * @hidden\n */\n Splitter.displayName = 'Splitter';\n return Splitter;\n}(React.Component));\nexport { Splitter };\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { Menu, MenuItem } from \"@progress/kendo-react-layout\";\r\nimport InnerLoader from \"../Loader/InnerLoader\";\r\nimport { useTranslation } from \"react-i18next\";\r\n/* ------------------------------- properties ------------------------------- */\r\n// header\r\n// value\r\n// valuePlaceholder\r\n// valueChanged\r\n// valueName\r\n\r\n// error\r\n/* --------------------------------- events --------------------------------- */\r\n//saveClicked\r\n//\r\n\r\nconst EditorActions = ({\r\n\theader,\r\n\tdisabled,\r\n\tvalue,\r\n\tvalueName,\r\n\tvaluePlaceholder,\r\n\tvalueChanged,\r\n\terrors,\r\n\tactive,\r\n\tdeleteText,\r\n\tdeleteClicked,\r\n\tredoClicked,\r\n\tShowMoreButtons,\r\n\tshareClicked,\r\n\tshareComments,\r\n\tsaveClicked,\r\n\tcustomButtonText,\r\n\tcustomButtonIcon,\r\n\tcustomButtonClicked,\r\n\tcustomButtonDisabled,\r\n\tdeleteDisabled,\r\n\ttransactionError,\r\n\thasErrors,\r\n\tpopupActions,\r\n\tsaving,\r\n\tchildren,\r\n}) => {\r\n\tconst anchor = useRef(null);\r\n\tconst popupContent = useRef(null);\r\n\tconst [show, setShow] = useState(false);\r\n\r\n\tconst { t } = useTranslation(\"common/editor_actions\", { useSuspense: false });\r\n\r\n\tconst handlePopup = (e) => {\r\n\t\tif (popupContent && popupContent.current && anchor && anchor.current && !anchor.current.contains(e.target) && !popupContent.current.contains(e.target)) {\r\n\t\t\tsetShow(false);\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tdocument.addEventListener(\"click\", handlePopup);\r\n\r\n\t\treturn () => {\r\n\t\t\tdocument.removeEventListener(\"click\", handlePopup);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tconst handlePopupActionClick = (e, action) => {\r\n\t\te.preventDefault();\r\n\t\tsetShow(false);\r\n\t\taction.onClick(e);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    {header}
    \r\n\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t{saving && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t{customButtonText && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t e.item.data()} className=\"no-dropdown-in-menu\">\r\n\t\t\t\t\t\t\t { }}>\r\n\t\t\t\t\t\t\t\t{deleteClicked && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{!ShowMoreButtons && popupActions && popupActions.map((action) => )}\r\n\t\t\t\t\t\t\t\t{shareClicked !== undefined && }\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t{/* error section */}\r\n\t\t\t\t{errors &&\r\n\t\t\t\t\terrors\r\n\t\t\t\t\t\t.filter((o) => o)\r\n\t\t\t\t\t\t.map((err, i) => {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{err}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t{transactionError &&\r\n\t\t\t\t\ttransactionError.map(\r\n\t\t\t\t\t\t(err, i) =>\r\n\t\t\t\t\t\t\terr && (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t {err}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t)}\r\n\t\t\t
    \r\n\t\t\r\n\t);\r\n};\r\n\r\nconst PopupAction = ({ children }) => children;\r\nPopupAction.displayName = \"PopupAction\";\r\nEditorActions.PopupAction = PopupAction;\r\n\r\nexport default EditorActions;\r\n\r\n/* --------------------------------- example -------------------------------- */\r\n{\r\n\t/*\r\n { this.Delete(this.SideData.rel_id) }}\r\n\t\t/> \r\n*/\r\n}\r\n","import { formatNumber } from '@telerik/kendo-intl'\r\nimport React, { useEffect, useRef, useState } from 'react'\r\n\r\nexport default function NumericInput(props) {\r\n\r\n const { format, disable, value, onChange, maxLength, ...otherProps } = props;\r\n\r\n const [cursor, setCursor] = useState(null);\r\n const ref = useRef(null);\r\n\r\n useEffect(() => {\r\n const input = ref.current;\r\n if (input) {\r\n input.setSelectionRange(cursor, cursor);\r\n }\r\n }, [ref, cursor, value])\r\n\r\n const previousValue = value;\r\n\r\n const handleChange = (e) => {\r\n let value = e.target.value.replace(/[^\\-\\.0-9]/g, '');\r\n let isNegative = value.startsWith(\"-\");\r\n if (isNegative && value.length === 1) {\r\n value = \"-0\";\r\n }\r\n if (value.trim() !== \"-\" && isNaN(value)) {\r\n const cursorPosition = e.target.selectionStart - 1;\r\n ref.current.setSelectionRange(cursorPosition, cursorPosition);\r\n return;\r\n }\r\n const valueBeforeDecimal = value.split('.')[0];\r\n if (\r\n valueBeforeDecimal.length === 0\r\n ) {\r\n e.target.value = \"\";\r\n onChange(e);\r\n return;\r\n }\r\n let cursorPosition = e.target.selectionStart;\r\n if (valueBeforeDecimal.length > maxLength) {\r\n cursorPosition--;\r\n ref.current.setSelectionRange(cursorPosition, cursorPosition);\r\n return;\r\n }\r\n const previousValueBeforeDecimal = previousValue.split('.')[0];\r\n if (valueBeforeDecimal.length > 1 && valueBeforeDecimal.length % 3 === 1) {\r\n if (String(previousValueBeforeDecimal).length < String(valueBeforeDecimal).length) {\r\n cursorPosition++;\r\n }\r\n }\r\n if (valueBeforeDecimal.length > 1 && previousValueBeforeDecimal.length % 3 === 1 && valueBeforeDecimal.length % 3 === 0) {\r\n cursorPosition--;\r\n }\r\n setCursor(cursorPosition);\r\n e.target.value = value;\r\n onChange(e);\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import React from 'react';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { Button } from '@progress/kendo-react-buttons';\r\nimport ErrorMessage from \"../../Shared/Error/ErrorMessage\";\r\nimport NumericInput from \"./NumericInput\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst UnitButton = (props) => {\r\n\tconst { unit } = props;\r\n\r\n\tlet symbol = unit;\r\n\r\n\tif (unit === \"percentage\") {\r\n\t\tsymbol = \r\n\t} else if (unit === \"euro\") {\r\n\t\tsymbol = \r\n\t} else if (unit === \"pound\") {\r\n\t\tsymbol = \r\n\t} else if (unit === \"dollar\") {\r\n\t\tsymbol = \r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport const NumberDefaultValueField = (props) => {\r\n\r\n\tconst { t } = useTranslation([\r\n\t\t\"attribute/number_field\"\r\n\t], {\r\n\t\tuseSuspense: false\r\n\t});\r\n\r\n\tconst { defaultValue, errors, numberType, decimalPlace, unit, unitSide, useThousandSeparator, onChange } = props;\r\n\r\n\tlet format = {};\r\n\r\n\tif (useThousandSeparator) {\r\n\t\tif (numberType === \"integer\") {\r\n\t\t\tformat = \"n0\";\r\n\t\t} else {\r\n\t\t\tformat = {\r\n\t\t\t\tstyle: \"decimal\",\r\n\t\t\t\tminimumFractionDigits: parseInt(decimalPlace),\r\n\t\t\t\tuseGrouping: true\r\n\t\t\t}\r\n\t\t}\r\n\t} else {\r\n\t\tif (numberType === \"integer\") {\r\n\t\t\tformat = \"#\";\r\n\t\t} else {\r\n\t\t\tformat = {\r\n\t\t\t\tstyle: \"decimal\",\r\n\t\t\t\tminimumFractionDigits: parseInt(decimalPlace)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tif (unitSide === \"Left\") {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t
    \r\n\t\t\t\t\t{t(\"default_value\")}\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tunit !== \"none\" && unit && unit.trim() !== \"\" &&\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t{t(\"default_value\")}\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tunit !== \"none\" && unit && unit.trim() !== \"\" &&\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t
    \r\n\t\t\r\n\t);\r\n}\r\n\r\nconst NumberField = (props) => {\r\n\r\n\tconst { t } = useTranslation([\r\n\t\t\"attribute/number_field\"\r\n\t], {\r\n\t\tuseSuspense: false\r\n\t});\r\n\r\n\tconst decimalOptions = [\r\n\t\t\"0\",\r\n\t\t\"1\",\r\n\t\t\"2\",\r\n\t\t\"3\",\r\n\t\t\"4\",\r\n\t\t\"5\"\r\n\t];\r\n\r\n\tconst sides = [\"Left\", \"Right\"];\r\n\r\n\tconst {\r\n\t\tdecimalPlace,\r\n\t\tuseThousandSeparator,\r\n\t\tunit,\r\n\t\tunitSide,\r\n\t\tonChange,\r\n\t\tnumberType\r\n\t} = props;\r\n\r\n\tfunction handleUnit(unit) {\r\n\t\tonChange({\r\n\t\t\ttarget: {\r\n\t\t\t\tname: \"unit\",\r\n\t\t\t\tvalue: unit\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tfunction handleCheckbox(e) {\r\n\t\tonChange({\r\n\t\t\ttarget: {\r\n\t\t\t\tname: \"useThousandSeparator\",\r\n\t\t\t\tvalue: e.value\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tfunction getCustomValue() {\r\n\t\tif (\r\n\t\t\tunit === \"none\" ||\r\n\t\t\tunit === \"percentage\" ||\r\n\t\t\tunit === \"dollar\" ||\r\n\t\t\tunit === \"euro\" ||\r\n\t\t\tunit === \"pound\"\r\n\t\t) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\treturn unit;\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t{t(\"format\")}\r\n\t\t\t
    \r\n\t\t\t{/* */}\r\n\t\t\t
    \r\n\t\t\t\t handleUnit(\"none\")}>\r\n\t\t\t\t\t{t(\"none\")}\r\n\t\t\t\t\r\n\t\t\t\t handleUnit(\"percentage\")}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t handleUnit(\"dollar\")}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t handleUnit(\"euro\")}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t handleUnit(\"pound\")}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{/* */}\r\n\t\t\t
    \r\n\t\t\t{\r\n\t\t\t\tunit !== \"none\" &&\r\n\t\t\t\t<>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{t(\"unit_side\")}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\t{\r\n\t\t\t\tnumberType === \"decimal\" &&\r\n\t\t\t\t<>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{t(\"decimal_places\")}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\t);\r\n};\r\nexport default NumberField;\r\n","import React from 'react';\r\nimport { RadioButton } from '@progress/kendo-react-inputs';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst DateTimeTypeField = ({ value, onChange, disabled }) => {\r\n const { t } = useTranslation([\r\n \"attribute/date_time_field\",\r\n ], {\r\n useSuspense: false\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\nexport default DateTimeTypeField;\r\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 percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\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 * @param {NumberFormatOptions} [option] ?\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, 10)) : 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 * @param {NumberFormatOptions} [option] ?\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 * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n // eslint-disable-next-line\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 var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\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 matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.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;\n// eslint-disable-next-line\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, id: id }];\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 * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n // eslint-disable-next-line\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n // eslint-disable-next-line\n var curContext = eventsArr[\"\" + i].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\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 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 val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\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 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 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 options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\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 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 function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\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 _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 { 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 response;\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') && 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 { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
    \n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.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 ?\n this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n })\n : [];\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}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\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 var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValueParse, !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' || animationMode === GlobalAnimationMode.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 * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\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 * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) { return !_this.isModuleLoaded(module.member); });\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 = '25';\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 * @returns {boolean} ?\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=MjU=&utm_source=es_license_validation_banner&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[\"\" + i] = decodeStr[\"\" + i].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 * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('pagehide', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('pagehide', 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 // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export']\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\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 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 /* eslint-disable */\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 /* eslint-enable */\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n // eslint-disable-next-line\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 var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {\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 // eslint-disable-next-line\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 * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 /* eslint-disable */\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 /* eslint-enable */\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, 10) > 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 // eslint-disable-next-line\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 ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.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 */\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 /* eslint-enable */\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 if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n }\n else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += (str[i + ''] === '\"' && !insideBraces) ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n }\n else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false') ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // eslint-disable-next-line\n var topData = '', leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n 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}\nexport function destroy() {\n targetContainer = null;\n parentDocument = null;\n}\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nimport { isNullOrUndefined } from './util';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'oncanplay',\n 'oncanplaythrough',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeypress',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onstart',\n 'onpropertychange',\n 'oncopy',\n 'ontoggle',\n 'onpointerout',\n 'onpointermove',\n 'onpointerleave',\n 'onpointerenter',\n 'onpointerrawupdate',\n 'onpointerover',\n 'onbeforecopy',\n 'onbeforecut',\n 'onbeforeinput'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n SanitizeHtmlHelper.sanitize = function (value) {\n if (isNullOrUndefined(value)) {\n return value;\n }\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n this.wrapElement = null;\n return tempEleValue.replace(/&/g, '&');\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[parseInt(j.toString(), 10)].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[parseInt(j.toString(), 10)].removeAttribute(attribute[parseInt(i.toString(), 10)].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide, destroy as collisionDestroy } 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 collisionDestroy();\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' || parentStyle.position === 'sticky') && !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","/* 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 * Defines the constant attributes for the input element container.\n */\nexport var containerAttributes = ['title', 'style', 'class'];\n/**\n * Defines the constant focus class for the input element.\n */\nexport var TEXTBOX_FOCUS = 'e-input-focus';\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 args.element.__eventHandlers = {};\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 bindFocusEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindBlurEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindInputEventHandler(args) {\n checkInputValue(args.floatLabelType, args.element);\n }\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n var focusHandler = function () { return bindFocusEventHandler(args); };\n var blurHandler = function () { return bindBlurEventHandler(args); };\n var inputHandler = function () { return bindInputEventHandler(args); };\n args.element.addEventListener('focus', focusHandler);\n args.element.addEventListener('blur', blurHandler);\n args.element.addEventListener('input', inputHandler);\n args.element.__eventHandlers[\"inputFocusHandler\"] = { focusHandler: focusHandler };\n args.element.__eventHandlers[\"inputBlurHandler\"] = { blurHandler: blurHandler };\n args.element.__eventHandlers[\"inputHandler\"] = { inputHandler: inputHandler };\n }\n Input.bindInitialEvent = bindInitialEvent;\n function unbindInitialEvent(args) {\n if (!isNullOrUndefined(args.element)) {\n if (!isNullOrUndefined(args.element.__eventHandlers)) {\n if (!isNullOrUndefined(args.element.__eventHandlers[\"inputFocusHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"inputBlurHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"inputHandler\"])) {\n var focusHandler_1 = args.element.__eventHandlers[\"inputFocusHandler\"].focusHandler;\n var blurHandler_1 = args.element.__eventHandlers[\"inputBlurHandler\"].blurHandler;\n var inputHandler_1 = args.element.__eventHandlers[\"inputHandler\"].inputHandler;\n args.element.removeEventListener('focus', focusHandler_1);\n args.element.removeEventListener('blur', blurHandler_1);\n args.element.removeEventListener('input', inputHandler_1);\n // Clean up stored bound functions\n delete args.element.__eventHandlers[\"inputFocusHandler\"];\n delete args.element.__eventHandlers[\"inputBlurHandler\"];\n delete args.element.__eventHandlers[\"inputHandler\"];\n }\n }\n }\n }\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 if (!isNullOrUndefined(element)) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n }\n function inputEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function blurEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\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 var inputFloatHandler = function () { return inputEventHandler(args); };\n var blurFloatHandler = function () { return blurEventHandler(args); };\n // Add event listeners using the defined functions\n args.element.addEventListener('input', inputFloatHandler);\n args.element.addEventListener('blur', blurFloatHandler);\n // Store the event handler functions to remove them later\n args.element.__eventHandlers[\"floatInputHandler\"] = { inputFloatHandler: inputFloatHandler };\n args.element.__eventHandlers[\"floatBlurHandler\"] = { blurFloatHandler: blurFloatHandler };\n }\n else {\n unWireFloatLabelEvents(args);\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function unWireFloatLabelEvents(args) {\n if (!isNullOrUndefined(args.element) && !isNullOrUndefined(args.element.__eventHandlers)\n && !isNullOrUndefined(args.element.__eventHandlers[\"floatInputHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"floatBlurHandler\"])) {\n var inputFloatHandler = args.element.__eventHandlers[\"floatInputHandler\"].inputFloatHandler;\n var blurFloatHandler = args.element.__eventHandlers[\"floatBlurHandler\"].blurFloatHandler;\n // Remove the event listeners using the defined functions\n args.element.removeEventListener('input', inputFloatHandler);\n args.element.removeEventListener('blur', blurFloatHandler);\n // Clean up stored event handler functions\n delete args.element.__eventHandlers[\"floatInputHandler\"];\n delete args.element.__eventHandlers[\"floatBlurHandler\"];\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 function clickHandler(event, element, button) {\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 function inputHandler(element, button) {\n updateIconState(element.value, button);\n }\n function focusHandler(element, button) {\n updateIconState(element.value, button, element.readOnly);\n }\n function blurHandler(element, button) {\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n var clickHandlerEvent = function (e) { return clickHandler(e, element, button); };\n button.addEventListener('click', clickHandlerEvent);\n element.__eventHandlers[\"clearClickHandler\"] = { clickHandlerEvent: clickHandlerEvent };\n }\n var inputHandlerEvent = function () { return inputHandler(element, button); };\n var focusHandlerEvent = function () { return focusHandler(element, button); };\n var blurHandlerEvent = function () { return blurHandler(element, button); };\n element.addEventListener('input', inputHandlerEvent);\n element.addEventListener('focus', focusHandlerEvent);\n element.addEventListener('blur', blurHandlerEvent);\n // Store the bound functions to remove them later\n element.__eventHandlers[\"clearInputHandler\"] = { inputHandlerEvent: inputHandlerEvent };\n element.__eventHandlers[\"clearFocusHandler\"] = { focusHandlerEvent: focusHandlerEvent };\n element.__eventHandlers[\"clearBlurHandler\"] = { blurHandlerEvent: blurHandlerEvent };\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function unWireClearBtnEvents(element, button) {\n if (!isNullOrUndefined(element) && !isNullOrUndefined(element.__eventHandlers)) {\n if (!isNullOrUndefined(element.__eventHandlers[\"clearClickHandler\"])) {\n var clickHandlerEvent = element.__eventHandlers[\"clearClickHandler\"].clickHandlerEvent;\n if (isBindClearAction === undefined || isBindClearAction) {\n if (!isNullOrUndefined(button)) {\n button.removeEventListener('click', clickHandlerEvent);\n }\n }\n delete element.__eventHandlers[\"clearClickHandler\"];\n }\n if (!isNullOrUndefined(element.__eventHandlers[\"clearInputHandler\"])\n && !isNullOrUndefined(element.__eventHandlers[\"clearFocusHandler\"])\n && !isNullOrUndefined(element.__eventHandlers[\"clearBlurHandler\"])) {\n var inputHandlerEvent = element.__eventHandlers[\"clearInputHandler\"].inputHandlerEvent;\n var focusHandlerEvent = element.__eventHandlers[\"clearFocusHandler\"].focusHandlerEvent;\n var blurHandlerEvent = element.__eventHandlers[\"clearBlurHandler\"].blurHandlerEvent;\n element.removeEventListener('input', inputHandlerEvent);\n element.removeEventListener('focus', focusHandlerEvent);\n element.removeEventListener('blur', blurHandlerEvent);\n // Clean up stored Event functions\n delete element.__eventHandlers[\"clearInputHandler\"];\n delete element.__eventHandlers[\"clearFocusHandler\"];\n delete element.__eventHandlers[\"clearBlurHandler\"];\n }\n }\n }\n function destroy(args, button) {\n if (button === void 0) { button = null; }\n unbindInitialEvent(args);\n if (args.floatLabelType === 'Auto') {\n unWireFloatLabelEvents(args);\n }\n if (args.properties.showClearButton) {\n unWireClearBtnEvents(args.element, button);\n }\n if (!isNullOrUndefined(args.buttons)) {\n _internalRipple(false, null, args.buttons);\n }\n unwireFloatingEvents(args.element);\n if (!isNullOrUndefined(args.element)) {\n delete args.element.__eventHandlers;\n }\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 !== 'Never') {\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 if (moduleName !== 'multiselect' && !_isElementVisible(element)) {\n return;\n }\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': '', '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 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 if (type !== 'Never') {\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 else {\n unWireFloatLabelEvents(args);\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);\n buttons[parseInt(index.toString())].removeEventListener('mouseup', _onMouseUpRipple);\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 _isElementVisible(element) {\n if (!element) {\n return false;\n }\n // Check if the element or any of its parents are hidden using display: none\n var currentElement = element;\n while (currentElement && currentElement !== document.body) {\n var style = window.getComputedStyle(currentElement);\n if (style.display === 'none') {\n return false;\n }\n currentElement = currentElement.parentElement;\n }\n // If none of the elements have display: none, the element is considered visible\n return true;\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 function updateHTMLAttributesToElement(htmlAttributes, element) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) < 0) {\n element.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n Input.updateHTMLAttributesToElement = updateHTMLAttributesToElement;\n function updateCssClass(newClass, oldClass, container) {\n setCssClass(getInputValidClassList(newClass), [container], getInputValidClassList(oldClass));\n }\n Input.updateCssClass = updateCssClass;\n function getInputValidClassList(inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n }\n Input.getInputValidClassList = getInputValidClassList;\n function updateHTMLAttributesToWrapper(htmlAttributes, container) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + htmlAttributes[\"\" + key]) :\n htmlAttributes[\"\" + key];\n container.setAttribute(key, setStyle);\n }\n else {\n container.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n Input.updateHTMLAttributesToWrapper = updateHTMLAttributesToWrapper;\n function isBlank(inputString) {\n return (!inputString || /^\\s*$/.test(inputString));\n }\n Input.isBlank = isBlank;\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})();\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 {Request} 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 {Request} 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.headers.get('Content-Type') &&\n xhr.headers.get('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.headers.get('Content-Type') &&\n xhr.headers.get('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 {Request} 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 {Request} request\n * @param {Fetch} 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.headers.set('Accept', this.options.multipartAccept);\n request.headers.set('DataServiceVersion', '2.0');\n //request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.headers.set('Accept', this.options.accept);\n }\n request.headers.set('DataServiceVersion', '2.0');\n request.headers.set('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 {Request} xhr?\n * @param {Fetch} 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.fetchRequest.headers.get('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.headers.get('Content-Type') && xhr.headers.get('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.headers.get('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 {Request} request\n * @param {Fetch} 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.headers.set('Prefer', 'return=representation');\n }\n request.headers.set('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 {Request} xhr?\n * @param {Fetch} 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 {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.headers.set('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 {Request} xhr?\n * @param {Fetch} 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.fetchRequest.headers.get('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 * Fetch Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} 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 {Request} xhr?\n * @param {Fetch} 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 {Request} request\n * @param {Fetch} 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.headers.set('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.headers.set('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 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' || ariaAttributes.itemRole === '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 var tooltipText = fieldData[fields.tooltip];\n if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\n li.setAttribute('title', tooltipText);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, 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 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 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 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 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 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 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 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 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","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Fetch } 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.fetchReqOption, request);\n }\n if (request.contentType.indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.fetchRequest, 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.fetchRequest, 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 fetch_1 = new Fetch(req);\n fetch_1.beforeSend = function () {\n _this.beforeSend(fetch_1.fetchRequest, fetch_1);\n };\n req = fetch_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(fetch_1);\n }\n else {\n this.fetchReqOption = 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].fetchRequest, _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].fetchRequest, _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].fetchRequest);\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.headers.set(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 dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var fetch_2 = new Fetch(req);\n fetch_2.beforeSend = function () {\n _this.beforeSend(fetch_2.fetchRequest, fetch_2);\n };\n fetch_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 fetch_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.fetchRequest, request, changes, args));\n };\n fetch_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n fetch_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.dofetchRequest(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 dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else {\n return this.dofetchRequest(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 dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.dofetchRequest(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 dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.dofetchRequest(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 = typeof record === 'object' ? record : 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.fetchReqOption, 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.fetchRequest, request);\n this.fetchDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.fetchDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.dofetchRequest = function (res, fetchFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.fetchDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_3 = new Fetch(res);\n fetch_3.beforeSend = function () {\n _this.beforeSend(fetch_3.fetchRequest, fetch_3);\n };\n fetch_3.onSuccess = this.successFunc.bind(this);\n fetch_3.onFailure = this.failureFunc.bind(this);\n fetch_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.fetchReqOption = res;\n fetchFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.fetchDeffered.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 { 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' && (/^[\\s]*\\[|^[\\s]*\\{(.)+:/g.test(jsonText) || jsonText.indexOf('\"') === -1)) {\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].toString().indexOf('\"') === -1)) {\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 }\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)\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","/* 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\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 Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\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 this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\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-controls');\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.getValue(date);\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.getDateObject(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(this.prevDate);\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 && (!target.classList.contains('e-dlg-overlay'))) {\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 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 var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\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 attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\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 if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobileTimePopupWrap.appendChild(dlgOverlay);\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 if (this.timeOptions && this.timeOptions.placeholder == null) {\n this.updatePlaceHolder();\n }\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})();\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject, onIntlChange } 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 isColEName = /\\]/;\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.updateProperties(this.props, false, prev);\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 * @param {Object} nextProps - Specifies the property value.\n * @returns {boolean} - Returns boolean value.\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 ComponentBase.prototype.updateProperties = function (nextProps, silent, prev) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n var prevProps = extend({}, prev || this.props);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(prevProps['statelessTemplates']) ? prevProps['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(prevProps[\"\" + 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 = prevProps[\"\" + 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' && !Object.prototype.hasOwnProperty.call(this.properties, 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 || prevProps.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 // eslint-disable-next-line\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 //let stringValue: string[] = ['autocomplete', 'dropdownlist', 'combobox'];\n var ignoreProps = ['children', 'statelessTemplates', 'immediateRender', 'isLegacyTemplate', 'delayUpdate'];\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 || (Object.keys(this.properties).indexOf(\"\" + prop) === -1 && ignoreProps.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', 'rating', 'textarea'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n if (this.type && !this.htmlattributes['type']) {\n this.htmlattributes['type'] = this.multiline ? 'hidden' : this.type;\n }\n if (this.name && !this.htmlattributes['name']) {\n this.htmlattributes['name'] = this.name;\n }\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 }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 (!Object.prototype.hasOwnProperty.call(oldProp, 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 key = '';\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 key = dKeys[parseInt(i.toString(), 10)];\n if (!Object.prototype.hasOwnProperty.call(directiveValue, 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 = getValue(changes.key + '.' + changes.index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changes.value);\n }\n else {\n extend(propInstance, 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 var hasModule = ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true);\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && hasModule && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n onIntlChange.offIntlEvents();\n };\n // tslint:disable:no-any\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 }\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 && 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' && name !== 'render') {\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 { TimePicker } from '@syncfusion/ej2-calendars';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React TimePicker Component.\n * ```html\n * \n * ```\n */\nvar TimePickerComponent = /** @class */ (function (_super) {\n __extends(TimePickerComponent, _super);\n function TimePickerComponent(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 TimePickerComponent.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 TimePickerComponent;\n}(TimePicker));\nexport { TimePickerComponent };\napplyMixins(TimePickerComponent, [ComponentBase, React.Component]);\n","import React from 'react';\r\nimport { RadioButton } from '@progress/kendo-react-inputs';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst NumberTypeField = ({ value, onChange, disabled }) => {\r\n const { t } = useTranslation([\r\n \"attribute/number_type\",\r\n ], {\r\n useSuspense: false\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\nexport default NumberTypeField;\r\n","import React, { useState, useRef, useCallback, useEffect } from \"react\";\r\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\r\nimport { DndProvider } from \"react-dnd\";\r\nimport { useDrag, useDrop } from \"react-dnd\";\r\nimport update from \"immutability-helper\";\r\nimport { ColorPicker } from \"@progress/kendo-react-inputs\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { uuidv4 } from \"../../../Hooks/Display/utils\";\r\n\r\nexport const DraggableCard = ({ id, text, color, onColorChange, showColorPicker, index, onItemDragged, onItemEdited, onItemRemoved, onEnterKeyIsPressed, isFocused, duplicate }) => {\r\n\tconst ref = useRef(null);\r\n\r\n\tconst [{ handlerId }, drop] = useDrop({\r\n\t\taccept: \"DraggableCard\",\r\n\t\tcollect(monitor) {\r\n\t\t\treturn {\r\n\t\t\t\thandlerId: monitor.getHandlerId(),\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\thover(item, monitor) {\r\n\t\t\tif (!ref.current) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst dragIndex = item.index;\r\n\t\t\tconst hoverIndex = index;\r\n\t\t\t// Don't replace items with themselves\r\n\t\t\tif (dragIndex === hoverIndex) { return; }\r\n\t\t\t// Determine rectangle on screen\r\n\t\t\tconst hoverBoundingRect = ref.current?.getBoundingClientRect();\r\n\t\t\t// Get vertical middle\r\n\t\t\tconst hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\r\n\t\t\t// Determine mouse position\r\n\t\t\tconst clientOffset = monitor.getClientOffset();\r\n\t\t\t// Get pixels to the top\r\n\t\t\tconst hoverClientY = clientOffset.y - hoverBoundingRect.top;\r\n\t\t\t// Only perform the move when the mouse has crossed half of the items height\r\n\t\t\t// When dragging downwards, only move when the cursor is below 50%\r\n\t\t\t// When dragging upwards, only move when the cursor is above 50%\r\n\t\t\t// Dragging downwards\r\n\t\t\tif (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) { return; }\r\n\t\t\t// Dragging upwards\r\n\t\t\tif (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) { return; }\r\n\t\t\t// Time to actually perform the action\r\n\t\t\tonItemDragged(dragIndex, hoverIndex);\r\n\t\t\t// Note: we're mutating the monitor item here!\r\n\t\t\t// Generally it's better to avoid mutations,\r\n\t\t\t// but it's good here for the sake of performance\r\n\t\t\t// to avoid expensive index searches.\r\n\t\t\titem.index = hoverIndex;\r\n\t\t},\r\n\t});\r\n\r\n\tconst paletteSettings = {\r\n\t\tpalette: [\r\n\t\t\t\"#222222\", \"#292e6b\", \"#009ccc\", \"#00643a\", \"#339947\", \"#fbbc3d\",\r\n\t\t\t\"#db552c\", \"#7f1725\", \"#ec008c\", \"#5c197b\", \"#51399f\", \"#444444\",\r\n\t\t\t\"#1b478b\", \"#43b4d5\", \"#207752\", \"#60af49\", \"#fbd144\", \"#e87025\",\r\n\t\t\t\"#b20b1e\", \"#ef33a3\", \"#71338d\", \"#6951aa\", \"#666666\", \"#0d60ab\",\r\n\t\t\t\"#86cdde\", \"#56987d\", \"#8dc54b\", \"#fbe74b\", \"#f58b1f\", \"#e60017\",\r\n\t\t\t\"#f266ba\", \"#9260a1\", \"#8874c2\", \"#888888\", \"#007acc\", \"#c9e7e7\",\r\n\t\t\t\"#7caf9a\", \"#a8ce4b\", \"#fbfd52\", \"#f7a24b\", \"#eb3345\", \"#f599d1\",\r\n\t\t\t\"#ae88b9\", \"#aa9cdf\", \"#aaaaaa\", \"#3f9bd8\", \"#d6eded\", \"#9cc3b2\",\r\n\t\t\t\"#c3d84c\", \"#fcfd7d\", \"#f9b978\", \"#f06673\", \"#f9cce8\", \"#c7abd0\",\r\n\t\t\t\"#c0b6e9\", \"#cccccc\", \"#7fbce5\", \"#e4f3f3\", \"#bfd8cd\", \"#d7e587\",\r\n\t\t\t\"#fcfea8\", \"#fbd0a5\", \"#f599a2\", \"#fbddef\", \"#e0cae7\", \"#dad4f7\"\r\n\t\t],\r\n\t\tcolumns: 11,\r\n\t\ttileSize: 16,\r\n\t};\r\n\r\n\tconst [{ isDragging }, drag] = useDrag({\r\n\t\ttype: \"DraggableCard\",\r\n\t\titem: () => { return { id, index }; },\r\n\t\tcollect: (monitor) => ({ isDragging: monitor.isDragging() }),\r\n\t});\r\n\r\n\tdrag(drop(ref));\r\n\r\n\tconst checkEnterKeyPressed = (e) => {\r\n\t\tif (e.key === 'Enter')\r\n\t\t\tonEnterKeyIsPressed();\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t checkEnterKeyPressed(e)}\r\n\t\t\t\tonChange={(e) => onItemEdited(e.target.value, index)}\r\n\t\t\t/>\r\n\t\t\t{showColorPicker &&\r\n\t\t\t\t\r\n\t\t\t\t\t onColorChange(e.value, index)}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t onItemRemoved(index)}>\r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport const StateFeildOptionsField = (props) => {\r\n\r\n\tconst { t } = useTranslation([\r\n\t\t\"attribute/state_field\",\r\n\t], {\r\n\t\tuseSuspense: false\r\n\t});\r\n\r\n\tconst {\r\n\t\tautoFocus,\r\n\t\tvalue,\r\n\t\tonChange,\r\n\t\tonErr,\r\n\t\tshowColorPicker\r\n\t} = props;\r\n\tconst ref = useRef(null);\r\n\r\n\tconst [collection, setCollection] = useState([]);\r\n\tconst [focus, setFocus] = useState(autoFocus);\r\n\tconst [color, setColor] = useState(\"rgba(255,255,255, 1)\");\r\n\tconst [val, setVal] = useState({\r\n\t\t\"name\": \"\",\r\n\t\t\"color\": color\r\n\t});\r\n\r\n\t//done\r\n\tuseEffect(() => {\r\n\t\tif (collection.length === 0 && value.length === 0) addToCollection()\r\n\t\tsetFocus(autoFocus);\r\n\t\tsetCollection(value);\r\n\t}, [props]);\r\n\r\n\t//done\r\n\tfunction handleChange(value) {\r\n\t\tonChange(value);\r\n\t}\r\n\r\n\t//done\r\n\tfunction addToCollection() {\r\n\t\tonErr(\"\");\r\n\t\tconst newValue = {\r\n\t\t\t\"_id\": uuidv4(),\r\n\t\t\t\"order\": collection.length > 0 ? parseInt((collection[collection.length - 1][\"order\"]) + 10000000000) : 10000000000,\r\n\t\t\t\"name\": \"\",\r\n\t\t\t\"color\": color\r\n\t\t}\r\n\t\tsetCollection([...collection, [newValue]]);\r\n\t\tsetVal(newValue);\r\n\t\thandleChange([...collection, ...[newValue]]);\r\n\t\tsetFocus(true);\r\n\t}\r\n\r\n\t//done\r\n\tfunction itemDeleted(index) {\r\n\t\tonErr(\"\");\r\n\t\tsetCollection(collection.filter((o, ix) => index !== ix));\r\n\t\thandleChange(collection.filter((o, ix) => index !== ix));\r\n\t}\r\n\r\n\t//done\r\n\tfunction itemValueChanged(val, index) {\r\n\t\tonErr(\"\");\r\n\t\tconst updatedCollection = collection.map((o, ix) => {\r\n\t\t\tif (index === ix) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...o,\r\n\t\t\t\t\tname: val\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn o;\r\n\t\t});\r\n\t\tsetCollection(updatedCollection);\r\n\t\thandleChange(updatedCollection);\r\n\t}\r\n\r\n\tconst cardDragged = useCallback(\r\n\t\t(dragIndex, hoverIndex) => {\r\n\t\t\tconst dragCard = collection[dragIndex];\r\n\t\t\tconst v = update(collection, {\r\n\t\t\t\t$splice: [\r\n\t\t\t\t\t[dragIndex, 1],\r\n\t\t\t\t\t[hoverIndex, 0, dragCard],\r\n\t\t\t\t],\r\n\t\t\t});\r\n\t\t\tsetCollection(v);\r\n\t\t\thandleChange(v);\r\n\t\t},\r\n\t\t[collection]\r\n\t);\r\n\r\n\tconst colorValueChanged = (val, index) => {\r\n\t\tconst updatedCollection = collection.map((o, ix) => {\r\n\t\t\tif (index === ix) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...o,\r\n\t\t\t\t\tcolor: val\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn o;\r\n\t\t});\r\n\t\tsetCollection(updatedCollection);\r\n\t\thandleChange(updatedCollection);\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t{collection && collection.map((o, i) => (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t x.name === o.name && x.name !== \"\").length > 1}\r\n\t\t\t\t\t\t\tisFocused={i === collection.length - 1 && focus}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n};\r\n","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function getAttributeTemplates(organizationId) {\r\n let request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/attributeTemplates\");\r\n let response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getAttributeTemplate(attributeTemplateId) {\r\n let request = await callApiWithAuthorization(\"/api/v0/attributeTemplate/\" + attributeTemplateId);\r\n let response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function createAttributeTemplate(organizationId, properties) {\r\n let request = await callApiWithAuthorization(\"/api/v0/organization/\" + organizationId + \"/attributeTemplate\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(properties)\r\n });\r\n let response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateAttributeTemplate(attributeTemplateId, properties) {\r\n let request = await callApiWithAuthorization(\"/api/v0/attributeTemplate/\" + attributeTemplateId, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(properties)\r\n });\r\n let response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function deleteAttributeTemplate(attributeTemplateId) {\r\n let request = await callApiWithAuthorization(\"/api/v0/attributeTemplate/\" + attributeTemplateId, {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n });\r\n let response = await request.json();\r\n return response;\r\n}","export const createFlatListFromTree = (tree, list) => {\r\n for (let node of tree) {\r\n list.push({\r\n id: node.id,\r\n text: node.text,\r\n parentId: node.parentId\r\n });\r\n if (node.items && node.items.length > 0) {\r\n createFlatListFromTree(node.items, list);\r\n }\r\n }\r\n return list;\r\n}\r\n\r\nexport const uuidv4 = () => {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}\r\n\r\nexport const getMaxExpandedLevel = (tree) => {\r\n let maxExpandedLevel = 0;\r\n for (let node of tree) {\r\n if (node.expandedLevel > maxExpandedLevel) {\r\n maxExpandedLevel = node.expandedLevel;\r\n }\r\n if (node.items && node.items.length > 0) {\r\n const childMaxExpandedLevel = getMaxExpandedLevel(node.items);\r\n if (childMaxExpandedLevel > maxExpandedLevel) {\r\n maxExpandedLevel = childMaxExpandedLevel;\r\n }\r\n }\r\n }\r\n return maxExpandedLevel;\r\n};\r\n\r\nexport const getIdsForTreeData = (tree, ids, expandedLevel) => {\r\n if (expandedLevel === null) return [];\r\n for (let node of tree) {\r\n if (expandedLevel.includes(node.expandedLevel)) {\r\n ids.push(node.id);\r\n }\r\n if (node.items && node.items.length > 0) {\r\n getIdsForTreeData(node.items, ids, expandedLevel);\r\n }\r\n }\r\n return ids;\r\n};\r\n\r\nexport const findElementInTree = (array, item) => {\r\n for (const node of array) {\r\n if (node.id === item.id) {\r\n return node;\r\n }\r\n\r\n if (node.items && node.items.length > 0) {\r\n const result = findElementInTree(node.items, item);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport const findElementByLevelIndex = (data, Levels) => {\r\n if (Levels.length === 0 || !Array.isArray(data)) {\r\n return null;\r\n }\r\n\r\n const index = Levels[0];\r\n\r\n if (index < 0 || index >= data.length) {\r\n return null;\r\n }\r\n\r\n const newData = data[index];\r\n\r\n if (Levels.length === 1) {\r\n return newData;\r\n }\r\n\r\n return findElementByLevelIndex(newData.items, Levels.slice(1));\r\n};\r\n\r\nexport const CheckIfTreeIsSame = (tree, defaultTree) => {\r\n if (tree.length !== defaultTree.length) return false;\r\n\r\n const compareNodes = (node1, node2) => {\r\n if (node1.text.trim() !== node2.text.trim()) return false;\r\n\r\n if (node1.items.length !== node2.items.length) return false;\r\n\r\n for (let i = 0; i < node1.items.length; i++) {\r\n if (!compareNodes(node1.items[i], node2.items[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n return compareNodes(tree[0], defaultTree[0]);\r\n};\r\n\r\n// TODO: Support translation for the following function\r\nexport const CheckErrorInTree = (tree) => {\r\n const FlatTree = createFlatListFromTree(tree, []);\r\n for (const node of FlatTree) {\r\n // check empty\r\n if (node.text.trim() === \"\") {\r\n return \"all_fields_required\";\r\n }\r\n }\r\n // check duplicate withing same level\r\n for (let i = 0; i < FlatTree.length; i++) {\r\n for (let j = i + 1; j < FlatTree.length; j++) {\r\n if (FlatTree[i].parentId === FlatTree[j].parentId && FlatTree[i].text.trim() === FlatTree[j].text.trim()) {\r\n return \"duplicate_value\";\r\n }\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport const removeExtraSpaceFromTreeElement = (tree) => {\r\n for (let node of tree) {\r\n node.text = node.text.trim();\r\n if (node.items && node.items.length > 0) {\r\n removeExtraSpaceFromTreeElement(node.items);\r\n }\r\n }\r\n return tree;\r\n}","import React, { Component } from \"react\";\r\nimport EditorActions from \"../../Shared/Edit/EditorActions\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport { Checkbox, NumericTextBox } from \"@progress/kendo-react-inputs\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport NumberField from \"../Fields/NumberField\";\r\nimport DateTimeTypeField from \"../Fields/DateTimeTypeField\";\r\nimport { TimePickerComponent } from \"@syncfusion/ej2-react-calendars\";\r\nimport NumberTypeField from \"../Fields/NumberTypeField\";\r\nimport { PicklistOptionsField } from \"../Fields/PicklistStringFields\";\r\nimport AttributeTypeField from \"../Fields/AttributeTypeField\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport ErrorMessage from \"../../Shared/Error/ErrorMessage\";\r\nimport { OverlayLoader } from \"../../Shared/Loader/OverlayLoader\";\r\nimport NumericInput from \"../Fields/NumericInput\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { StateFeildOptionsField } from \"../Fields/StateFields\";\r\nimport { updateAttributeTemplate } from \"../../../API/AttributeTemplate/AttributeTemplate\";\r\nimport { uuidv4 } from \"../Fields/TreeDropdownHelper\";\r\n\r\nclass LookupSidebar extends Component {\r\n\tsaveButton = React.createRef();\r\n\tdefaultData = {};\r\n\tinterval = [\"1\", \"5\", \"10\", \"15\", \"30\"];\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props)\r\n\t\tthis.state = {\r\n\t\t\tloading: false,\r\n\t\t\tdisabled: true,\r\n\t\t\tnameExists: false,\r\n\t\t\tnameError: {\r\n\t\t\t\tisValid: true,\r\n\t\t\t\tmessage: \"\"\r\n\t\t\t},\r\n\t\t\tshowAdditionalFields: true,\r\n\t\t\tisDescriptionFocus: false,\r\n\t\t\tLookupName: \"\",\r\n\t\t\tlookupType: \"\",\r\n\t\t\tdescription: \"\",\r\n\t\t\tmin: \"\",\r\n\t\t\tmax: \"\",\r\n\t\t\tpattern: \"\",\r\n\t\t\tdecimalPlace: \"0\",\r\n\t\t\tunit: \"none\",\r\n\t\t\tuseThousandSeparator: false,\r\n\t\t\tunitSide: \"Right\",\r\n\t\t\terrors: {\r\n\t\t\t\tisMinValid: true,\r\n\t\t\t\tisMaxValid: true,\r\n\t\t\t\tminError: \"\",\r\n\t\t\t\tmaxError: \"\",\r\n\t\t\t},\r\n\t\t\tdateError: {\r\n\t\t\t\tisDefaultValueValid: true,\r\n\t\t\t\tdefaultValueError: \"\",\r\n\t\t\t},\r\n\t\t\ttimeError: {\r\n\t\t\t\tisMinValid: true,\r\n\t\t\t\tisMaxValid: true,\r\n\t\t\t\tisDefaultValueValid: true,\r\n\t\t\t\tminError: \"\",\r\n\t\t\t\tmaxError: \"\",\r\n\t\t\t},\r\n\t\t\tstatefieldError: {\r\n\t\t\t\tisValid: true,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t},\r\n\t\t\tstatefield: [],\r\n\t\t\tisPatternValid: true,\r\n\t\t\tisPicklistProper: true,\r\n\t\t\tisPicklistEmpty: false,\r\n\t\t\tsavingAttributeTemplate: false,\r\n\t\t\tshowInIframe: this.props.showInIframe\r\n\t\t};\r\n\t}\r\n\r\n\tcomponentDidUpdate = (props) => {\r\n\t\tif (this.props.selectedAttribute._id !== props.selectedAttribute._id) {\r\n\t\t\tlet data = {};\r\n\t\t\tdata.LookupName = this.props.selectedAttribute.LookupName;\r\n\t\t\tdata.lookupType = this.props.selectedAttribute.lookupType;\r\n\t\t\tdata.typeText = this.props.selectedAttribute.typeText;\r\n\t\t\tdata.description = this.props.selectedAttribute.description;\r\n\t\t\tdata._id = this.props.selectedAttribute._id;\r\n\r\n\t\t\tif (this.props.selectedAttribute.lookupType === \"Picklist String\") {\r\n\t\t\t\tdata.picklist = this.props.selectedAttribute.picklist;\r\n\t\t\t\tdata.multiSelect = this.props.selectedAttribute.multiSelect;\r\n\t\t\t}\r\n\t\t\tif (this.props.selectedAttribute.lookupType === \"String\") {\r\n\t\t\t\tdata.min = parseInt(this.props.selectedAttribute.min) || \"\";\r\n\t\t\t\tdata.max = parseInt(this.props.selectedAttribute.max) || \"\";\r\n\t\t\t\tdata.pattern = this.props.selectedAttribute.pattern;\r\n\t\t\t}\r\n\t\t\tif (this.props.selectedAttribute.lookupType === \"Number\") {\r\n\t\t\t\tdata.min = parseInt(this.props.selectedAttribute.min) || \"\";\r\n\t\t\t\tdata.max = parseInt(this.props.selectedAttribute.max) || \"\";\r\n\t\t\t\tdata.numberType = this.props.selectedAttribute.numberType;\r\n\t\t\t\tdata.decimalPlace = this.props.selectedAttribute.decimalPlace;\r\n\t\t\t\tdata.unit = this.props.selectedAttribute.unit.replace(/\\\\\\\"/, '\"');\r\n\t\t\t\tdata.useThousandSeparator = this.props.selectedAttribute.useThousandSeparator === \"true\" ? true : false;\r\n\t\t\t\tdata.unitSide = this.props.selectedAttribute.unitSide;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.props.selectedAttribute.lookupType === \"User Identity\") {\r\n\t\t\t\tdata.showProfilePicture = this.props.selectedAttribute.showProfilePicture;\r\n\t\t\t\tdata.useDisplayName = this.props.selectedAttribute.useDisplayName;\r\n\t\t\t\tdata.multiSelect = this.props.selectedAttribute.multiSelect;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.props.selectedAttribute.lookupType === \"DateTime\") {\r\n\t\t\t\tdata.dateTimeType = this.props.selectedAttribute.dateTimeType;\r\n\t\t\t\tif (data.dateTimeType === \"date\") {\r\n\t\t\t\t\tdata.setDefaultDate = this.props.selectedAttribute.setDefaultDate === \"true\" ? true : false;\r\n\t\t\t\t\tdata.defaultDate = this.props.selectedAttribute.defaultDate;\r\n\t\t\t\t}\r\n\t\t\t\tif (data.dateTimeType === \"time\") {\r\n\t\t\t\t\tdata.interval = this.props.selectedAttribute.interval;\r\n\t\t\t\t\tdata.minTime = this.props.selectedAttribute.minTime || \"\";\r\n\t\t\t\t\tdata.maxTime = this.props.selectedAttribute.maxTime || \"\";\r\n\t\t\t\t\tdata.defaultTime = this.props.selectedAttribute.defaultTime || \"\";\r\n\t\t\t\t}\r\n\t\t\t\tif (data.dateTimeType === \"datetime\") {\r\n\t\t\t\t\tdata.setDefaultDate = this.props.selectedAttribute.setDefaultDate === \"true\" ? true : false;\r\n\t\t\t\t\tdata.defaultDate = this.props.selectedAttribute.defaultDate;\r\n\t\t\t\t\tdata.interval = this.props.selectedAttribute.interval;\r\n\t\t\t\t\tdata.minTime = this.props.selectedAttribute.minTime || \"\";\r\n\t\t\t\t\tdata.maxTime = this.props.selectedAttribute.maxTime || \"\";\r\n\t\t\t\t\tdata.defaultTime = this.props.selectedAttribute.defaultTime || \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.props.selectedAttribute.lookupType === \"State Field\") {\r\n\t\t\t\tdata.statefield = this.props.selectedAttribute.statefield;\r\n\t\t\t}\r\n\t\t\tthis.defaultData = data;\r\n\r\n\t\t\tconst newState = {\r\n\t\t\t\t...data,\r\n\t\t\t\tdisabled: true,\r\n\t\t\t\tnameExists: false,\r\n\t\t\t\tnameError: {\r\n\t\t\t\t\tisValid: true,\r\n\t\t\t\t\tmessage: \"\"\r\n\t\t\t\t},\r\n\t\t\t\terrors: {\r\n\t\t\t\t\tisMinValid: true,\r\n\t\t\t\t\tisMaxValid: true,\r\n\t\t\t\t\tminError: \"\",\r\n\t\t\t\t\tmaxError: \"\",\r\n\t\t\t\t},\r\n\t\t\t\tisPicklistProper: true,\r\n\t\t\t\tisPatternValid: true,\r\n\t\t\t\tisPicklistEmpty: false,\r\n\t\t\t\tstatefieldError: {\r\n\t\t\t\t\tisValid: true,\r\n\t\t\t\t\tmessage: \"\",\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis.setState(newState);\r\n\t\t}\r\n\t}\r\n\r\n\thasErrors = (e) => {\r\n\t\tlet errors = !this.state.disabled\r\n\t\tif (\r\n\t\t\tthis.state.isPatternValid === false ||\r\n\t\t\tthis.state.nameError.isValid === false ||\r\n\t\t\tthis.state.dateError.isDefaultValueValid === false ||\r\n\t\t\tthis.state.timeError.isDefaultValueValid === false ||\r\n\t\t\tthis.state.timeError.isMinValid === false ||\r\n\t\t\tthis.state.errors.isMaxValid === false ||\r\n\t\t\tthis.state.errors.isMinValid === false ||\r\n\t\t\tthis.state.statefieldError.isValid === false\r\n\t\t) {\r\n\t\t\terrors = true\r\n\t\t}\r\n\t\treturn errors\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { t } = this.props;\r\n\r\n\t\tif (this.state.loading) {\r\n\t\t\treturn ;\r\n\t\t}\r\n\r\n\t\tvar AdditionalData;\r\n\r\n\t\tif (this.state.lookupType === \"Picklist String\") {\r\n\t\t\tAdditionalData = [\r\n\t\t\t\t<>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t(\"fields.dropdown_values\")}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.state.isPicklistEmpty &&\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t(\"errors.dropdown_values_required\")}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t!this.state.isPicklistEmpty &&\r\n\t\t\t\t\t\t{this.state.isPicklistProper === false && t(\"errors.dropdown_values_duplicate\")}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tisPicklistProper: e.length < 0\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tautoFocus={true}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t,\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"String\") {\r\n\t\t\tAdditionalData = [\r\n\t\t\t\t<>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{t(\"fields.minimum_length\")}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{!this.state.errors.isMinValid && this.state.errors.minError}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{t(\"fields.maximum_length\")}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{!this.state.errors.isMaxValid && this.state.errors.maxError}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{t(\"fields.pattern\")}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{!this.state.isPatternValid && \"Invalid Pattern\"}\r\n\t\t\t\t\t\r\n\t\t\t\t,\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"User Identity\") {\r\n\t\t\tAdditionalData = [\r\n\t\t\t\t<>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t,\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"Number\") {\r\n\t\t\tAdditionalData = [\r\n\t\t\t\t<>\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{t(\"fields.minimum_value\")}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{!this.state.errors.isMinValid && this.state.errors.minError}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{t(\"fields.maximum_value\")}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{!this.state.errors.isMaxValid && this.state.errors.maxError}\r\n\t\t\t\t\t\r\n\t\t\t\t,\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"DateTime\") {\r\n\t\t\tif (this.state.dateTimeType === \"date\") {\r\n\t\t\t\tAdditionalData = [\r\n\t\t\t\t\t//
    \r\n\t\t\t\t\t// \t\r\n\t\t\t\t\t// \t \r\n\t\t\t\t\t// \t{this.state.dateError.isDefaultValueValid ? null : {this.state.dateError.defaultValueError}}\r\n\t\t\t\t\t// \t{this.state.setDefaultDate && }\r\n\t\t\t\t\t//
    \r\n\t\t\t\t];\r\n\t\t\t}\r\n\t\t\tif (this.state.dateTimeType === \"time\") {\r\n\t\t\t\tAdditionalData = [\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{/*
    Default Time
    \r\n\t\t\t\t\t\t{this.state.timeError.defaultValueError}\r\n\t\t\t\t\t\t */}\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{t(\"fields.internal_in_minutes\")}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{t(\"fields.earliest_time\")}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{this.state.timeError.minError}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{t(\"fields.latest_time\")}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{this.state.timeError.maxError}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t];\r\n\t\t\t}\r\n\r\n\t\t\tif (this.state.dateTimeType === \"datetime\") {\r\n\t\t\t\tAdditionalData = [\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t{this.state.dateError.isDefaultValueValid ? null : {this.state.dateError.defaultValueError}}\r\n\t\t\t\t\t\t{this.state.setDefaultDate ? (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Default Time
    \r\n\t\t\t\t\t\t\t\t{this.state.timeError.defaultValueError}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)} */}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{t(\"fields.internal_in_minutes\")}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{t(\"fields.earliest_time\")}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{this.state.timeError.minError}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{t(\"fields.latest_time\")}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{this.state.timeError.maxError}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    ,\r\n\t\t\t\t];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"State Field\") {\r\n\t\t\tAdditionalData = [\r\n\t\t\t\t<>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{t(\"fields.state_field\")}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t { this.setStateFieldError(err) }}\r\n\t\t\t\t\t\tshowColorPicker={true}\r\n\t\t\t\t\t\tTooltipPosition={'left'}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t]\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{\r\n\t\t\t\t\tthis.state.savingAttributeTemplate &&\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t< div className=\"d-flex flex-column h-100\" >\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{t(\"fields.name\")}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{t(\"fields.type\")}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{this.state.lookupType === \"DateTime\" && }\r\n\t\t\t\t\t\t\t\t{this.state.lookupType === \"Number\" && }\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t{this.state.showAdditionalFields && (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t{AdditionalData}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{t(\"fields.description\")}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{/*
    \r\n\t\t\t\t\t\t\t\t this.toggleFields(o)}>\r\n\t\t\t\t\t\t\t
    */}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tgetDisabled() {\r\n\t\treturn this.state.disabled;\r\n\t}\r\n\r\n\tcancel = () => {\r\n\t\tthis.setState({ disabled: true });\r\n\t};\r\n\r\n\t//handle\r\n\r\n\t// toggleFields = () => {\r\n\t// \tthis.setState({\r\n\t// \t\tshowAdditionalFields: !this.state.showAdditionalFields,\r\n\t// \t});\r\n\t// };\r\n\r\n\thandleName = (e) => {\r\n\t\tlet { nameError } = this.state\r\n\t\tconst { t } = this.props;\r\n\t\tlet { value } = e.target\r\n\t\tconst nameIsBlank = value.trim() === \"\"\r\n\t\tconst nameIsReserved = value.toLowerCase().replace(/[^a-zA-Z0-9]/g, \"\").trim() === \"id\"\r\n\t\tconst nameInUse = this.props.LookupData.findIndex((lookup) => lookup.LookupName.toLowerCase() === e.target.value.toLowerCase() && lookup._id !== this.props.selectedAttribute._id) >= 0;\r\n\t\tconst nameContainsSys = /^\\[SYS\\]/i.test(value.trim());\r\n\t\tconst nameStartWithNumber = value.trim().match(/^\\d/)\r\n\t\tconst hasSpecialCharacters = /[\\\\\"'\\/]/.test(value.trim());\r\n\t\tif (nameIsBlank) {\r\n\t\t\tnameError.isValid = false\r\n\t\t\tnameError.message = t(\"errors.name_required\")\r\n\t\t} else if (nameStartWithNumber) {\r\n\t\t\tnameError.isValid = false\r\n\t\t\tnameError.message = t(\"errors.name_starts_with_number\")\r\n\t\t} else if (nameInUse) {\r\n\t\t\tnameError.isValid = false\r\n\t\t\tnameError.message = t(\"errors.name_in_use\")\r\n\t\t} else if (nameContainsSys) {\r\n\t\t\tnameError.isValid = false\r\n\t\t\tnameError.message = t(\"errors.name_contains_sys\")\r\n\t\t} else if (hasSpecialCharacters) {\r\n\t\t\tnameError.isValid = false\r\n\t\t\tnameError.message = t(\"errors.name_contain_specical_character\")\r\n\t\t} else if (nameIsReserved) {\r\n\t\t\tnameError.isValid = false\r\n\t\t\tnameError.message = t(\"errors.name_is_reserved\")\r\n\t\t} else {\r\n\t\t\tnameError.isValid = true\r\n\t\t\tnameError.message = \"\";\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tlookupName: e.target.value,\r\n\t\t\tnameError: nameError\r\n\t\t});\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tLookupName: e.target.value,\r\n\t\t\t\tnameError: nameError\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleMultiSelect = (e) => {\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tmultiSelect: e.value,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleShowProfilePicture = (e) => {\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tshowProfilePicture: e.value,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleUseDisplayName = (e) => {\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tuseDisplayName: e.value,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleNumberField = (e) => {\r\n\t\tlet { format, decimalPlace, unitSide } = this.state;\r\n\t\tlet { name, value } = e.target;\r\n\t\tif (name === \"decimalPlace\") {\r\n\t\t\tformat = \"n\";\r\n\t\t\tformat += value;\r\n\t\t}\r\n\t\tif (name === \"unit\") {\r\n\t\t\tif (value === \"none\") {\r\n\t\t\t\tdecimalPlace = \"2\";\r\n\t\t\t\tformat = \"undefined\";\r\n\t\t\t\tunitSide = this.defaultData.unitSide;\r\n\t\t\t} else {\r\n\t\t\t\tdecimalPlace = \"2\";\r\n\t\t\t\tformat = \"n2\";\r\n\t\t\t}\r\n\t\t\tthis.setState({\r\n\t\t\t\tdecimalPlace,\r\n\t\t\t\tunitSide\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setState({ [name]: value, format }, () => {\r\n\t\t\tthis.setDisabled();\r\n\t\t});\r\n\t};\r\n\r\n\thandleMinLength = (e) => {\r\n\t\tconst { value } = e.target;\r\n\t\tconst { max } = this.state;\r\n\t\tconst errors = this.findMinMaxLengthErrors(value, max);\r\n\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tmin: value,\r\n\t\t\t\terrors,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleMaxlength = (e) => {\r\n\t\tconst { value } = e.target;\r\n\t\tconst { min } = this.state;\r\n\t\tconst errors = this.findMinMaxLengthErrors(min, value);\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tmax: value,\r\n\t\t\t\terrors,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleMinValue = (e) => {\r\n\t\tconst { value } = e.target;\r\n\t\tconst { max } = this.state;\r\n\t\tconst errors = this.findMinMaxValueErrors(value, max);\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tmin: value,\r\n\t\t\t\terrors,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleMaxValue = (e) => {\r\n\t\tconst { value } = e.target;\r\n\t\tconst { min } = this.state;\r\n\t\tconst errors = this.findMinMaxValueErrors(min, value);\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tmax: value,\r\n\t\t\t\terrors,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandlePattern = (e) => {\r\n\t\tlet regex = new RegExp(\"^[09#LAa&()C-]+$\");\r\n\t\tlet valid = regex.test(e.target.value);\r\n\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tisPatternValid: e.target.value === \"\" ? true : valid,\r\n\t\t\t\tpattern: e.target.value,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tfindMinMaxLengthErrors = (min, max) => {\r\n\r\n\t\tconst errors = {\r\n\t\t\tisMinValid: true,\r\n\t\t\tisMaxValid: true,\r\n\t\t\tminError: \"\",\r\n\t\t\tmaxError: \"\",\r\n\t\t};\r\n\r\n\t\tconst minValue = parseInt(min);\r\n\t\tconst maxValue = parseInt(max);\r\n\r\n\t\tif (errors.isMinValid && minValue < 1) {\r\n\t\t\terrors.isMinValid = false;\r\n\t\t\terrors.minError = \"Minimum length cannot be negative or zero\";\r\n\t\t}\r\n\r\n\t\tif (errors.isMaxValid && maxValue < 1) {\r\n\t\t\terrors.isMaxValid = false;\r\n\t\t\terrors.maxError = \"Maximum length cannot be negative or zero\";\r\n\t\t}\r\n\r\n\t\tif (errors.isMaxValid && maxValue > 256) {\r\n\t\t\terrors.isMaxValid = false;\r\n\t\t\terrors.maxError = \"Maximum length cannot exceed 256\";\r\n\t\t}\r\n\r\n\t\tif (errors.isMaxValid && errors.isMinValid && minValue > maxValue) {\r\n\t\t\terrors.isMinValid = false;\r\n\t\t\terrors.minError = \"Min length cannot exceed max length\";\r\n\t\t}\r\n\r\n\t\treturn errors;\r\n\t};\r\n\r\n\tfindMinMaxValueErrors = (min, max) => {\r\n\t\tconst errors = {\r\n\t\t\tisMinValid: true,\r\n\t\t\tisMaxValid: true,\r\n\t\t\tminError: \"\",\r\n\t\t\tmaxError: \"\",\r\n\t\t};\r\n\r\n\t\tconst minValue = parseInt(min);\r\n\t\tconst maxValue = parseInt(max);\r\n\r\n\t\tif (minValue > 2147483647) {\r\n\t\t\terrors.isMinValid = false;\r\n\t\t\terrors.minError = \"Min value must not be bigger than 2,147,483,647\";\r\n\t\t}\r\n\t\tif (maxValue > 2147483647) {\r\n\t\t\terrors.isMaxValid = false;\r\n\t\t\terrors.maxError = \"Max value must not be bigger than 2,147,483,647\";\r\n\t\t}\r\n\r\n\t\tif (errors.isMaxValid && errors.isMinValid && minValue > maxValue) {\r\n\t\t\terrors.isMinValid = false;\r\n\t\t\terrors.minError = \"Min value cannot exceed max value\";\r\n\t\t}\r\n\r\n\t\treturn errors;\r\n\t}\r\n\r\n\tsetStateFieldError = (err) => {\r\n\t\tconst { statefieldError } = this.state;\r\n\t\tif (err.lengt > 0) {\r\n\t\t\tstatefieldError.isValid = false;\r\n\t\t} else {\r\n\t\t\tstatefieldError.isValid = true;\r\n\t\t}\r\n\t\tstatefieldError.message = err;\r\n\t\tthis.setState(statefieldError);\r\n\t};\r\n\r\n\thandleStateFieldChange = (data) => {\r\n\t\tconst { t } = this.props;\r\n\t\tconst isStatefieldDuplicated = this.checkStateFieldIsDuplicated(data);\r\n\t\tconst { statefieldError } = this.state;\r\n\t\tif (isStatefieldDuplicated) {\r\n\t\t\tstatefieldError.isValid = false;\r\n\t\t\tstatefieldError.message = t(\"errors.duplicate_state_field\");\r\n\t\t} else {\r\n\t\t\tstatefieldError.isValid = true;\r\n\t\t\tstatefieldError.message = \"\";\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tstatefield: data,\r\n\t\t\tstatefieldError: statefieldError\r\n\t\t}, () => {\r\n\t\t\tthis.setDisabled();\r\n\t\t})\r\n\t}\r\n\r\n\tcheckStateFieldIsDuplicated = (data) => {\r\n\t\tconst statefieldValues = data.map((option) => option.name);\r\n\t\tconst statefieldValuesMap = {};\r\n\t\tlet isStatefieldDuplicated = false;\r\n\r\n\t\tfor (const value of statefieldValues) {\r\n\t\t\tstatefieldValuesMap[value] = statefieldValuesMap[value] ? ++statefieldValuesMap[value] : 1;\r\n\t\t\tif (statefieldValuesMap[value] > 1) {\r\n\t\t\t\tisStatefieldDuplicated = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn isStatefieldDuplicated;\r\n\t}\r\n\r\n\thandlePicklist = (e) => {\r\n\t\tvar ePicklistData = \"\";\r\n\t\tvar listData = e.target.value.split(\"\\n\");\r\n\t\tif (listData[listData.length - 1] === \"\") {\r\n\t\t\tlistData.splice(listData.length - 1, 1);\r\n\t\t}\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tpicklist: e.target.value,\r\n\t\t\t\tCommaPicklist: listData.join(),\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleDropdownChange = (e) => {\r\n\t\tlet isPicklistProper = this.isPicklistProper(e.target.value);\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tpicklist: e.target.value,\r\n\t\t\t\tisPicklistProper: isPicklistProper,\r\n\t\t\t\tisPicklistEmpty: e.target.value === \"\" ? true : false\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tisPicklistProper = (data) => {\r\n\t\tconst picklistValues = data\r\n\t\t\t.split(\"ɖ\")\r\n\t\t\t.filter((option) => option.trim() !== \"\")\r\n\t\t\t.map((option) => option.trim());\r\n\t\tconst picklistValuesMap = {};\r\n\t\tlet isPicklistValid = true;\r\n\r\n\t\tif (picklistValues.length === 0) return false;\r\n\r\n\t\tfor (const value of picklistValues) {\r\n\t\t\tpicklistValuesMap[value] = picklistValuesMap[value] ? ++picklistValuesMap[value] : 1;\r\n\t\t\tif (picklistValuesMap[value] > 1) {\r\n\t\t\t\tisPicklistValid = false;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn isPicklistValid;\r\n\t};\r\n\r\n\thandleDefaultDateCheckbox = (e) => {\r\n\t\tlet { defaultDate } = this.state;\r\n\t\tif (!e.value) {\r\n\t\t\tdefaultDate = \"\";\r\n\t\t} else {\r\n\t\t\tdefaultDate = \"Today_+_0_Days\";\r\n\t\t}\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tsetDefaultDate: e.value,\r\n\t\t\t\tdefaultDate,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleDateChange = (e) => {\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tdefaultDate: e.target.value,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleMinTime = (e) => {\r\n\t\tconst { text } = e;\r\n\t\tlet { minTime, maxTime, defaultTime } = this.state;\r\n\t\tminTime = text;\r\n\t\tconst timeError = this.findErrorsInTimeConfiguration(minTime, maxTime, defaultTime);\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tminTime,\r\n\t\t\t\ttimeError,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleMaxTime = (e) => {\r\n\t\tconst { text } = e;\r\n\t\tlet { minTime, maxTime, defaultTime } = this.state;\r\n\t\tmaxTime = text;\r\n\t\tconst timeError = this.findErrorsInTimeConfiguration(minTime, maxTime, defaultTime);\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tmaxTime,\r\n\t\t\t\ttimeError,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleDefaultTime = (e) => {\r\n\t\tconst { text } = e;\r\n\t\tlet { minTime, maxTime, defaultTime } = this.state;\r\n\t\tdefaultTime = text;\r\n\t\tconst timeError = this.findErrorsInTimeConfiguration(minTime, maxTime, defaultTime);\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tdefaultTime,\r\n\t\t\t\ttimeError,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tfindErrorsInTimeConfiguration = (minTime, maxTime, defaultTime) => {\r\n\t\tconst { timeError } = this.state;\r\n\t\t// let min, max, DefaultTime\r\n\r\n\t\tlet min = minTime;\r\n\t\tlet max = maxTime;\r\n\t\tlet DefaultTime = defaultTime\r\n\r\n\t\tif (min !== \"\") {\r\n\t\t\tmin = new Date('2020-01-01 ' + minTime);\r\n\t\t}\r\n\t\tif (max !== \"\") {\r\n\t\t\tmax = new Date('2020-01-01 ' + maxTime);\r\n\t\t}\r\n\t\tif (defaultTime !== \"\") {\r\n\t\t\tDefaultTime = new Date('2020-01-01 ' + defaultTime)\r\n\t\t}\r\n\r\n\t\tif (min && max && min > max) {\r\n\t\t\ttimeError.isMinValid = false;\r\n\t\t\ttimeError.minError = \"Earliest time cannot be later than latest time\";\r\n\t\t} else {\r\n\t\t\ttimeError.isMinValid = true;\r\n\t\t\ttimeError.minError = \"\";\r\n\t\t}\r\n\r\n\t\tif (defaultTime === \"\") {\r\n\t\t\ttimeError.isDefaultValueValid = false;\r\n\t\t\ttimeError.defaultValueError = \"Default time cannot be blank\";\r\n\t\t} else if (DefaultTime && min && DefaultTime < min) {\r\n\t\t\ttimeError.isDefaultValueValid = false;\r\n\t\t\ttimeError.defaultValueError = \"Default time cannot be earlier than earliest time\";\r\n\t\t} else if (DefaultTime && max && DefaultTime > max) {\r\n\t\t\ttimeError.isDefaultValueValid = false;\r\n\t\t\ttimeError.defaultValueError = \"Default time cannot be later than latest time\";\r\n\t\t} else {\r\n\t\t\ttimeError.isDefaultValueValid = true;\r\n\t\t\ttimeError.defaultValueError = \"\";\r\n\t\t}\r\n\t\treturn timeError;\r\n\t};\r\n\r\n\thandleInterval = (e) => {\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tinterval: e.target.value,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleDescription = (e) => {\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tdescription: e.target.value,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.setDisabled();\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleDescriptionFocus = () => {\r\n\t\tthis.setState({\r\n\t\t\tisDescriptionFocus: !this.state.isDescriptionFocus,\r\n\t\t});\r\n\t};\r\n\r\n\thandlebDescriptionblur = () => {\r\n\t\tthis.setState({\r\n\t\t\tisDescriptionFocus: !this.state.isDescriptionFocus,\r\n\t\t});\r\n\t};\r\n\r\n\thandleDelete = (e) => {\r\n\t\t//e.preventDefault();\r\n\t\tthis.props.Delete(this.props.selectedAttribute._id);\r\n\t};\r\n\r\n\tsetDisabled = () => {\r\n\t\tlet condition =\r\n\t\t\tthis.defaultData.LookupName !== this.state.LookupName ||\r\n\t\t\tthis.defaultData.description !== this.state.description\r\n\r\n\t\tif (this.state.lookupType === \"User Identity\") {\r\n\t\t\tcondition = condition || this.defaultData.multiSelect !== this.state.multiSelect || this.defaultData.showProfilePicture !== this.state.showProfilePicture || this.defaultData.useDisplayName !== this.state.useDisplayName;\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"Number\") {\r\n\t\t\tcondition =\r\n\t\t\t\tcondition ||\r\n\t\t\t\tthis.defaultData.min !== this.state.min ||\r\n\t\t\t\tthis.defaultData.max !== this.state.max ||\r\n\t\t\t\tthis.defaultData.unit !== this.state.unit ||\r\n\t\t\t\tthis.defaultData.numberType !== this.state.numberType ||\r\n\t\t\t\tthis.defaultData.unitSide !== this.state.unitSide ||\r\n\t\t\t\tthis.defaultData.decimalPlace !== this.state.decimalPlace ||\r\n\t\t\t\tthis.defaultData.useThousandSeparator !== this.state.useThousandSeparator;\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"String\") {\r\n\t\t\tcondition = condition || this.defaultData.min !== this.state.min || this.defaultData.max !== this.state.max || this.defaultData.pattern !== this.state.pattern;\r\n\t\t\tif (!this.state.isPatternValid || !this.state.errors.isMinValid || !this.state.errors.isMaxValid) {\r\n\t\t\t\tcondition = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"Picklist String\") {\r\n\r\n\t\t\tcondition = condition || this.defaultData.picklist !== this.state.picklist || this.defaultData.multiSelect !== this.state.multiSelect;\r\n\t\t\tif (!this.state.isPicklistProper) {\r\n\t\t\t\tcondition = false;\r\n\t\t\t}\r\n\t\t\tif (this.state.isPicklistEmpty) {\r\n\t\t\t\tcondition = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"DateTime\") {\r\n\r\n\t\t\tif (this.state.dateTimeType === \"date\") {\r\n\t\t\t\tcondition = condition || this.defaultData.defaultDate !== this.state.defaultDate || this.defaultData.setDefaultDate !== this.state.setDefaultDate;\r\n\t\t\t\tif (!this.state.dateError.isDefaultValueValid) {\r\n\t\t\t\t\tcondition = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.state.dateTimeType === \"time\") {\r\n\t\t\t\tcondition = condition;\r\n\r\n\t\t\t\tif (this.state.defaultTime && this.defaultData.defaultTime && this.state.defaultTime !== this.defaultData.defaultTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.defaultTime && !this.defaultData.defaultTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.minTime && this.defaultData.minTime && this.state.minTime !== this.defaultData.minTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.minTime && !this.defaultData.minTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.maxTime && this.defaultData.maxTime && this.state.maxTime !== this.defaultData.maxTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.maxTime && !this.defaultData.maxTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.interval !== this.defaultData.interval) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.state.timeError.isMinValid || !this.state.timeError.isMaxValid || !this.state.timeError.isDefaultValueValid) {\r\n\t\t\t\t\tcondition = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.state.dateTimeType === \"datetime\") {\r\n\r\n\t\t\t\tcondition = condition || this.defaultData.defaultDate !== this.state.defaultDate || this.defaultData.setDefaultDate !== this.state.setDefaultDate;\r\n\r\n\t\t\t\tif (this.state.defaultTime && this.defaultData.defaultTime && this.state.defaultTime !== this.defaultData.defaultTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.defaultTime && !this.defaultData.defaultTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.minTime && this.defaultData.minTime && this.state.minTime !== this.defaultData.minTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.minTime && !this.defaultData.minTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.maxTime && this.defaultData.maxTime && this.state.maxTime !== this.defaultData.maxTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.maxTime && !this.defaultData.maxTime) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t} else if (this.state.interval !== this.defaultData.interval) {\r\n\t\t\t\t\tcondition = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.state.timeError.isMinValid || !this.state.timeError.isMaxValid || !this.state.timeError.isDefaultValueValid) {\r\n\t\t\t\t\tcondition = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.state.dateError.isDefaultValueValid) {\r\n\t\t\t\t\tcondition = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"State Field\") {\r\n\t\t\tconst statefieldValues = this.state.statefield\r\n\t\t\tconst defaultStatefieldValues = this.defaultData.statefield\r\n\r\n\t\t\tlet isStatefieldValid = true;\r\n\r\n\t\t\tif (statefieldValues.length === 0 || statefieldValues.length !== defaultStatefieldValues.length) {\r\n\t\t\t\tisStatefieldValid = false;\r\n\t\t\t} else {\r\n\t\t\t\t// check if statefield values are empty or not\r\n\t\t\t\tfor (let i = 0; i < statefieldValues.length; i++) {\r\n\t\t\t\t\tif (statefieldValues[i].name === \"\" || statefieldValues[i].color === \"\") {\r\n\t\t\t\t\t\tisStatefieldValid = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// compare object name and color with default statefield values\r\n\t\t\t\tfor (let i = 0; i < statefieldValues.length; i++) {\r\n\t\t\t\t\tif (statefieldValues[i].name !== defaultStatefieldValues[i].name || statefieldValues[i].color !== defaultStatefieldValues[i].color) {\r\n\t\t\t\t\t\tisStatefieldValid = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcondition = condition || !isStatefieldValid;\r\n\t\t}\r\n\r\n\t\tif (this.state.nameError.isValid === false || this.state.statefieldError.isValid === false) {\r\n\t\t\tcondition = false;\r\n\t\t}\r\n\r\n\t\tif (condition) {\r\n\t\t\tthis.setState({ disabled: false });\r\n\t\t} else {\r\n\t\t\tthis.setState({ disabled: true });\r\n\t\t}\r\n\t};\r\n\r\n\thandleSubmit = (e) => {\r\n\t\te.preventDefault();\r\n\t\tthis.Save();\r\n\t};\r\n\r\n\tSave = async () => {\r\n\t\tthis.setState({\r\n\t\t\tsavingAttributeTemplate: true\r\n\t\t})\r\n\t\tlet propertiesData = {\r\n\t\t\tLookupName: this.state.LookupName.trim(),\r\n\t\t\tdescription: this.state.description,\r\n\t\t};\r\n\r\n\t\tif (this.state.lookupType === \"User Identity\") {\r\n\t\t\tpropertiesData.showProfilePicture = this.state.showProfilePicture;\r\n\t\t\tpropertiesData.useDisplayName = this.state.useDisplayName;\r\n\t\t\tpropertiesData.multiSelect = this.state.multiSelect;\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"Number\") {\r\n\t\t\tpropertiesData.min = this.state.min;\r\n\t\t\tpropertiesData.max = this.state.max;\r\n\t\t\tpropertiesData.numberType = this.state.numberType;\r\n\t\t\tpropertiesData.unit = this.state.unit;\r\n\t\t\tpropertiesData.unitSide = this.state.unitSide;\r\n\t\t\tpropertiesData.decimalPlace = this.state.decimalPlace;\r\n\t\t\tpropertiesData.useThousandSeparator = this.state.useThousandSeparator ? \"true\" : \"false\";\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"String\") {\r\n\t\t\tpropertiesData.min = this.state.min;\r\n\t\t\tpropertiesData.max = this.state.max;\r\n\t\t\tpropertiesData.pattern = this.state.pattern;\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"Picklist String\") {\r\n\t\t\tpropertiesData.multiSelect = this.state.multiSelect;\r\n\r\n\t\t\t// clear empty item from picklist - ali\r\n\t\t\tlet values = this.state.picklist.split('ɖ')\r\n\t\t\tvalues = values.filter(o => o.length > 0)\r\n\t\t\tvalues = values.join('ɖ');\r\n\r\n\t\t\tpropertiesData.picklist = values;\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"DateTime\") {\r\n\t\t\tif (this.state.dateTimeType === \"date\") {\r\n\r\n\t\t\t\tpropertiesData.defaultDate = this.state.defaultDate;\r\n\t\t\t\tpropertiesData.setDefaultDate = this.state.setDefaultDate ? \"true\" : \"false\";\r\n\t\t\t}\r\n\t\t\tif (this.state.dateTimeType === \"time\") {\r\n\t\t\t\tconst { minTime, maxTime, defaultTime } = this.state;\r\n\t\t\t\tpropertiesData.minTime = minTime;\r\n\t\t\t\tpropertiesData.maxTime = maxTime;\r\n\t\t\t\tpropertiesData.interval = this.state.interval;\r\n\t\t\t\tpropertiesData.defaultTime = defaultTime;\r\n\t\t\t}\r\n\t\t\tif (this.state.dateTimeType === \"datetime\") {\r\n\t\t\t\tconst { minTime, maxTime, defaultTime, defaultDate, setDefaultDate } = this.state;\r\n\t\t\t\tpropertiesData.defaultDate = defaultDate;\r\n\t\t\t\tpropertiesData.setDefaultDate = setDefaultDate ? \"true\" : \"false\";\r\n\t\t\t\tpropertiesData.minTime = minTime;\r\n\t\t\t\tpropertiesData.maxTime = maxTime;\r\n\t\t\t\tpropertiesData.interval = this.state.interval;\r\n\t\t\t\tpropertiesData.defaultTime = defaultTime;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.state.lookupType === \"State Field\") {\r\n\t\t\tlet values = this.state.statefield\r\n values = values.filter(o => o.name.trim().length > 0)\r\n for (let i = 0; i < values.length; i++) {\r\n\t\t\t\tif(values[i]._id === undefined){\r\n\t\t\t\t\tvalues[i]._id = uuidv4()\r\n\t\t\t\t}\r\n values[i].name = values[i].name.trim()\r\n values[i].order = parseInt((i + 1) * 10000000000);\r\n }\r\n propertiesData['statefield'] = values\r\n\t\t}\r\n\r\n\t\tawait updateAttributeTemplate(this.state._id, propertiesData);\r\n\r\n\t\tthis.setState({\r\n\t\t\tdisabled: true,\r\n\t\t\tnameExists: false,\r\n\t\t\tsavingAttributeTemplate: false,\r\n\t\t\tvalidName: true,\r\n\t\t\terrors: {\r\n\t\t\t\tisMinValid: true,\r\n\t\t\t\tisMaxValid: true,\r\n\t\t\t\tminError: \"\",\r\n\t\t\t\tmaxError: \"\",\r\n\t\t\t},\r\n\t\t\tisPicklistProper: true,\r\n\t\t});\r\n\r\n\t\tconst updatedAttributeTemplate = {\r\n\t\t\t...this.props.selectedAttribute,\r\n\t\t\t...propertiesData\r\n\t\t};\r\n\t\tthis.defaultData = { ...updatedAttributeTemplate }\r\n\t\tthis.props.updateAttribute(this.state._id, updatedAttributeTemplate);\r\n\t};\r\n\r\n\tsetDefault = (e) => {\r\n\t\tlet data = this.defaultData\r\n\t\tconst newState = {\r\n\t\t\t...data,\r\n\t\t\tdisabled: true,\r\n\t\t\tnameExists: false,\r\n\t\t\tnameError: {\r\n\t\t\t\tisValid: true,\r\n\t\t\t\tmessage: \"\"\r\n\t\t\t},\r\n\r\n\t\t\terrors: {\r\n\t\t\t\tisMinValid: true,\r\n\t\t\t\tisMaxValid: true,\r\n\t\t\t\tminError: \"\",\r\n\t\t\t\tmaxError: \"\",\r\n\t\t\t},\r\n\t\t\tisPicklistProper: true,\r\n\t\t\tisPatternValid: true,\r\n\t\t\tisPicklistEmpty: false\r\n\t\t};\r\n\t\tthis.setState(newState)\r\n\t};\r\n}\r\n\r\nexport default withTranslation([\r\n\t\"property_template/look_up_detail\"\r\n], {\r\n\twithRef: true\r\n})(LookupSidebar);\r\n","const ServerError = (props) => {\r\n return (\r\n
    \r\n

    Something went wrong on our side. Please try again later.

    \r\n {\r\n process.env.REACT_APP_NODE_ENV=\"dev\" &&

    { props.error }

    \r\n }\r\n
    \r\n )\r\n}\r\n\r\nexport default ServerError;","import { Dialog } from '@progress/kendo-react-dialogs';\r\nimport React from 'react';\r\nimport { ATTRIBUTE_LABEL } from '../Helpers/Labels/AttributeLabel';\r\nimport AttributeTypes from './AttributeTypes';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nfunction AttributeTypePopup(props) {\r\n let { excludedTypes } = props;\r\n let attributeTypes = AttributeTypes.Types.filter(type => !excludedTypes.includes(type.value));\r\n return (\r\n \r\n
    \r\n
    \r\n {\r\n attributeTypes.map((type, index) => (\r\n props.onSelect(type)} />\r\n ))\r\n }\r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nfunction AttributeBox(props) {\r\n const { t } = useTranslation(\"attribute/common\");\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 {props.type.text}\r\n

    \r\n
    \r\n
    \r\n

    \r\n {props.type.description}\r\n

    \r\n
    \r\n \r\n {t(\"buttons.select\", { ns: \"attribute/common\" })}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default AttributeTypePopup;","import React, { Component } from \"react\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport { PageContainer, Content, Header } from \"../../Drawer/PageContainer\";\r\nimport Alice from \"../../Display/Alice\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport LookupSidebar from \"./LookupSidebar\";\r\nimport DateTimeTypeField from \"../Fields/DateTimeTypeField\";\r\nimport AttributeTypes from \"../AttributeTypes\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport Scrollable from \"../../Shared/Edit/Scrollable\";\r\nimport RemoveDialog from \"../../Shared/Remove/RemoveDialog\";\r\nimport NumberTypeField from \"../Fields/NumberTypeField\";\r\nimport { PicklistOptionsField } from \"../Fields/PicklistStringFields\";\r\nimport SaveDialog from \"../../Shared/Remove/SaveDialog\";\r\nimport ErrorMessage from \"../../Shared/Error/ErrorMessage\";\r\nimport ServerError from \"../../Shared/Error/ServerError\";\r\nimport AttributeTypePopup from \"../AttributeTypePopup\";\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { StateFeildOptionsField } from \"../Fields/StateFields\";\r\nimport { createAttributeTemplate, deleteAttributeTemplate, getAttributeTemplates } from \"../../../API/AttributeTemplate/AttributeTemplate\";\r\nimport { uuidv4 } from \"../Fields/TreeDropdownHelper\";\r\n\r\nclass Lookup extends Component {\r\n createLookupButton = React.createRef();\r\n createAndNewLookupButton = React.createRef();\r\n Icons = AttributeTypes.Icons;\r\n\r\n attributeTypeRender = (li, itemProps) => {\r\n const itemChildren = (\r\n
    \r\n
    \r\n \r\n
    \r\n {itemProps.dataItem.text}\r\n
    \r\n );\r\n return React.cloneElement(li, { tabIndex: 0 }, itemChildren);\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.DataTypes = AttributeTypes.getTranslatedTypes(props.t);\r\n this.state = {\r\n loading: true,\r\n DataTypes: this.DataTypes,\r\n panes: [\r\n { collapsible: false },\r\n { size: \"475px\", min: \"475px\", collapsible: false },\r\n ],\r\n selectedAttribute: {},\r\n nextAttributeId: \"\",\r\n data: [],\r\n showCreateAttributeTemplate: false,\r\n showServerError: false,\r\n nameError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n numberType: \"integer\",\r\n lookupName: \"\",\r\n lookupType: this.DataTypes[0],\r\n visible: false,\r\n picklist: \"\",\r\n isPicklistProper: true,\r\n dateTimeType: \"date\",\r\n description: \"\",\r\n showInIframe: this.props.showInIframe,\r\n deletingAttributeTemplate: false,\r\n creatingAttributeTemplate: false,\r\n statefieldError: {\r\n isValid: true,\r\n message: \"\",\r\n },\r\n statefield: []\r\n };\r\n this.LookupSidebar = React.createRef();\r\n }\r\n\r\n render() {\r\n if (this.state.showServerError) return \r\n const { t } = this.props;\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {this.state.data.length === 0 && (\r\n \r\n {t(\"no_records.message1\")}\r\n

    \r\n {t(\"no_records.message2\")}\r\n \r\n )}\r\n {this.state.showCreateAttributeTemplate === true && (\r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"fields.name\", { ns: \"property_template/create_dialog\" })}\r\n
    \r\n \r\n (this.attributeTemplateName = rf)}\r\n value={this.state.lookupName}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {t(\"fields.type\", { ns: \"property_template/create_dialog\" })}\r\n
    \r\n \r\n {t(\"fields.type_link\", { ns: \"property_template/create_dialog\" })}\r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {this.state.lookupType.value ===\r\n \"DateTime\" && (\r\n \r\n )}\r\n {this.state.lookupType.value ===\r\n \"Number\" && (\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n {this.state.lookupType.value === \"State Field\" && (\r\n
    \r\n
    \r\n {t(\"fields.state_field\", { ns: \"property_template/create_dialog\" })}\r\n {this.state.statefieldError.isValid === false && {this.state.statefieldError.message}}\r\n
    \r\n
    \r\n {\r\n let { statefieldError } = this.state;\r\n statefieldError.isValid = e.length < 0;\r\n this.setState({\r\n statefieldError: statefieldError,\r\n });\r\n }}\r\n autoFocus={true}\r\n showColorPicker={false}\r\n TooltipPosition={'left'}\r\n />\r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n {this.state.lookupType.value ===\r\n \"Picklist String\" ? (\r\n <>\r\n
    \r\n \r\n {t(\"fields.dropdown_values\", { ns: \"property_template/create_dialog\" })}\r\n  \r\n {!this.state.isPicklistProper && (\r\n \r\n {t(\"errors.dropdown_values_duplicate\", { ns: \"property_template/create_dialog\" })}\r\n \r\n )}\r\n
    \r\n {\r\n this.setState({\r\n isPicklistProper:\r\n e.length < 0,\r\n });\r\n }}\r\n autoFocus={true}\r\n />\r\n \r\n ) : null}\r\n
    \r\n\r\n
    \r\n
    \r\n {t(\"fields.description\", { ns: \"property_template/create_dialog\" })}\r\n
    \r\n \r\n
    \r\n \r\n {this.state.creatingAttributeTemplate &&\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n \r\n {t(\"buttons.cancel\", { ns: \"property_template/create_dialog\" })}\r\n \r\n \r\n {t(\"buttons.create_and_new\", { ns: \"property_template/create_dialog\" })}\r\n \r\n \r\n {t(\"buttons.create\", { ns: \"property_template/create_dialog\" })}\r\n \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n {\r\n this.state.showAttributeTypePopup &&\r\n \r\n }\r\n\r\n {this.state.data.length !== 0 && (\r\n <>\r\n {this.state.visible && (\r\n \r\n )}\r\n {this.state.DeletePopup && (\r\n \r\n )}\r\n \r\n
    \r\n \r\n ({\r\n ...item,\r\n selected: item._id === this.state.selectedAttribute._id,\r\n }))}\r\n onRowClick={this.rowClick}\r\n selectedField=\"selected\"\r\n >\r\n \r\n \r\n {props.dataItem.indexId}\r\n \r\n } />\r\n \r\n (\r\n \r\n \r\n {t(\"attribute_type_label.\" + props.dataItem.lookupType.toLowerCase().split(\" \").join(\"_\"), { ns: \"attribute/attribute_type\" })}\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n
    \r\n
    \r\n {this.state.data.length > 0 && (\r\n \r\n )}\r\n
    \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n onSplitterSizeChange = (e) => {\r\n this.setState({ panes: e.newState });\r\n };\r\n\r\n toggleAttributeTypesPopup = () => {\r\n this.setState({ showAttributeTypePopup: !this.state.showAttributeTypePopup });\r\n }\r\n\r\n selectAttributeTypeAndTogglePopup = (value) => {\r\n this.set_value({ target: { value } });\r\n this.toggleAttributeTypesPopup();\r\n }\r\n\r\n getDataTypes = () => {\r\n return this.state.DataTypes.filter((item) => item.value !== \"Shared Lookup\" && item.value !== \"Mirror\");\r\n }\r\n\r\n componentDidMount = async () => {\r\n try {\r\n const attributes = await this.getAttributeTemplate()\r\n this.setState({\r\n data: attributes,\r\n loading: false\r\n }, () => {\r\n if (attributes.length > 0) {\r\n if (this.props.selectedAttributeTemplate) {\r\n let attribute = this.state.data.find((item) => item.sysName === this.props.selectedAttributeTemplate)\r\n this.rowClick(attribute._id)\r\n } else {\r\n this.rowClick(attributes[0]._id)\r\n }\r\n }\r\n })\r\n } catch (error) {\r\n console.error(error)\r\n this.setState({\r\n showServerError: true\r\n })\r\n }\r\n }\r\n\r\n getAttributeTemplate = async () => {\r\n let result = await getAttributeTemplates(this.props.organization._id);\r\n const sortedAttributes = result.slice().sort((a, b) => a.LookupName.localeCompare(b.LookupName));\r\n for (let i = 0; i < sortedAttributes.length; i++) {\r\n sortedAttributes[i].indexId = i + 1;\r\n sortedAttributes[i].typeText = this.DataTypes.find((type) => type.value === sortedAttributes[i].lookupType).text;\r\n }\r\n return sortedAttributes\r\n };\r\n\r\n rowClick = (value) => {\r\n var _id = \"\";\r\n\r\n if (value[\"dataItem\"]) {\r\n _id = value.dataItem._id;\r\n } else {\r\n _id = value;\r\n }\r\n\r\n let attributePropertiesAreSame = this.LookupSidebar.current.getDisabled();\r\n let isAttributeDeleted = this.state.data.find((attribute) => attribute._id === this.LookupSidebar.current.defaultData._id) === undefined;\r\n\r\n if (attributePropertiesAreSame || isAttributeDeleted) {\r\n let nextAttribute = this.state.data.find((attribute) => attribute._id === _id);\r\n this.setState({\r\n visible: false,\r\n nextAttributeId: \"\",\r\n selectedAttribute: nextAttribute\r\n });\r\n } else {\r\n this.setState({\r\n visible: true,\r\n nextAttributeId: _id\r\n });\r\n }\r\n };\r\n\r\n //handle\r\n\r\n toggleCreateAttributeDialog = () => {\r\n this.setState({\r\n showCreateAttributeTemplate: !this.state.showCreateAttributeTemplate,\r\n showError: false,\r\n error: \"\",\r\n lookupName: \"\",\r\n picklist: \"\",\r\n description: \"\",\r\n lookupType: this.DataTypes[0],\r\n nameError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n isPicklistProper: true,\r\n dateTimeType: \"date\",\r\n });\r\n };\r\n\r\n toggleDialog = (e) => {\r\n this.setState({\r\n showCreateAttributeTemplate: false,\r\n lookupName: \"\",\r\n picklist: \"\",\r\n description: \"\",\r\n lookupType: this.DataTypes[0],\r\n nameError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n dateTimeType: \"date\",\r\n });\r\n };\r\n\r\n handleName = (e) => {\r\n let { nameError } = this.state\r\n let { value } = e.target\r\n const { t } = this.props;\r\n const nameIsReserved = value.toLowerCase().replace(/[^a-zA-Z0-9]/g, \"\").trim() === \"id\"\r\n const nameIsBlank = value.trim() === \"\"\r\n const nameInUse = this.state.data.findIndex((item) => item.LookupName.trim().toLowerCase() === e.target.value.trim().toLowerCase()) > -1;\r\n const nameContainsSys = /^\\[SYS\\]/i.test(value.trim());\r\n const nameStartWithNumber = value.trim().match(/^\\d/)\r\n const hasSpecialCharacters = /[\\\\\"'\\/]/.test(value.trim());\r\n if (nameIsBlank) {\r\n nameError.isValid = false\r\n nameError.message = t(\"errors.name_required\", { ns: \"property_template/create_dialog\" })\r\n } else if (nameStartWithNumber) {\r\n nameError.isValid = false\r\n nameError.message = t(\"errors.name_starts_with_number\", { ns: \"property_template/create_dialog\" })\r\n } else if (nameInUse) {\r\n nameError.isValid = false\r\n nameError.message = t(\"errors.name_in_use\", { ns: \"property_template/create_dialog\" })\r\n } else if (nameContainsSys) {\r\n nameError.isValid = false\r\n nameError.message = t(\"errors.name_contains_sys\", { ns: \"property_template/create_dialog\" });\r\n } else if (hasSpecialCharacters) {\r\n nameError.isValid = false\r\n nameError.message = t(\"errors.name_contain_specical_character\", { ns: \"property_template/create_dialog\" });\r\n } else if (nameIsReserved) {\r\n nameError.isValid = false\r\n nameError.message = t(\"errors.name_is_reserved\", { ns: \"property_template/create_dialog\" });\r\n } else {\r\n nameError.isValid = true\r\n nameError.message = \"\";\r\n }\r\n\r\n this.setState({\r\n lookupName: e.target.value,\r\n nameError: nameError\r\n });\r\n };\r\n\r\n handleType = (event) => {\r\n let { DataTypes } = this;\r\n\r\n if (event.filter.value.trim() !== \"\") {\r\n DataTypes = DataTypes.filter((x) =>\r\n x.text\r\n .toLowerCase()\r\n .startsWith(event.filter.value.toLowerCase())\r\n );\r\n }\r\n\r\n this.setState({\r\n DataTypes: DataTypes,\r\n });\r\n };\r\n\r\n handleStateFieldChange = (data) => {\r\n let statefieldError = this.CheckStateFieldisProper(data);\r\n this.setState({\r\n statefield: data,\r\n statefieldError: statefieldError,\r\n });\r\n };\r\n\r\n CheckStateFieldisProper = (data) => {\r\n const { t } = this.props;\r\n const statefieldValues = data\r\n .filter((option) => option.name.trim() !== \"\")\r\n .map((option) => option.name.trim());\r\n\r\n const statefieldValuesMap = {};\r\n let statefieldError = {\r\n isValid: true,\r\n message: \"\",\r\n };\r\n\r\n if (statefieldValues.length === 0) {\r\n statefieldError.isValid = false\r\n return statefieldError;\r\n }\r\n for (const value of statefieldValues) {\r\n statefieldValuesMap[value] = statefieldValuesMap[value] ? ++statefieldValuesMap[value] : 1;\r\n if (statefieldValuesMap[value] > 1) {\r\n statefieldError.isValid = false;\r\n statefieldError.message = t(\"errors.duplicate_state_field\", { ns: \"property_template/create_dialog\" });\r\n break;\r\n }\r\n }\r\n return statefieldError;\r\n };\r\n\r\n set_value = (e) => {\r\n if (e.target.value === null) {\r\n this.setState({ lookupType: this.DataTypes[0] });\r\n } else {\r\n this.setState({ lookupType: e.target.value });\r\n }\r\n if (e.target.value !== \"Picklist String\") {\r\n this.setState({\r\n isPicklistProper: true,\r\n picklist: \"\",\r\n });\r\n }\r\n if (e.target.value !== \"State Field\") {\r\n this.setState({\r\n statefield: [],\r\n statefieldError: {\r\n isValid: true,\r\n message: \"\",\r\n }\r\n })\r\n }\r\n };\r\n\r\n handleDropdownChange = (e) => {\r\n let isPicklistProper = this.isPicklistProper(e.target.value);\r\n this.setState({\r\n picklist: e.target.value,\r\n isPicklistProper: isPicklistProper,\r\n });\r\n };\r\n\r\n isPicklistProper = (data) => {\r\n const picklistValues = data\r\n .split(\"ɖ\")\r\n .filter((option) => option.trim() !== \"\")\r\n .map((option) => option.trim());\r\n const picklistValuesMap = {};\r\n let isPicklistValid = true;\r\n\r\n // if (picklistValues.length === 0) return false;\r\n\r\n for (const value of picklistValues) {\r\n picklistValuesMap[value] = picklistValuesMap[value]\r\n ? ++picklistValuesMap[value]\r\n : 1;\r\n if (picklistValuesMap[value] > 1) {\r\n isPicklistValid = false;\r\n break;\r\n }\r\n }\r\n return isPicklistValid;\r\n };\r\n\r\n handleDateTimeType = (e) => {\r\n this.setState({ dateTimeType: e.value });\r\n };\r\n\r\n handleNumberType = (e) => {\r\n this.setState({\r\n numberType: e.value,\r\n });\r\n };\r\n\r\n shouldCreateBeDisabled = () => {\r\n if (this.state.lookupName.trim() === \"\") {\r\n return true;\r\n }\r\n if (!this.state.nameError.isValid) {\r\n return true;\r\n }\r\n\r\n if (this.state.lookupType.value === \"Picklist String\") {\r\n if (!this.state.isPicklistProper) {\r\n return true;\r\n }\r\n\r\n if (this.state.picklist.length === 0) {\r\n return true;\r\n }\r\n }\r\n\r\n if (this.state.lookupType.value === \"State Field\") {\r\n if (!this.state.statefieldError.isValid) {\r\n return true;\r\n }\r\n\r\n if (this.state.statefield !== undefined && this.state.statefield.length === 0) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n setDescription = (e) => {\r\n this.setState({ description: e.target.value });\r\n };\r\n\r\n //Crud\r\n\r\n add = async (e, keepFormVisible) => {\r\n const { createLookupButton, createAndNewLookupButton } = this;\r\n createLookupButton.current.disabled = true;\r\n createAndNewLookupButton.current.disabled = true;\r\n this.setState({ creatingAttributeTemplate: true })\r\n e.preventDefault();\r\n var value = this.state.lookupName\r\n .trim()\r\n .replace(/\\s\\s+/g, \" \")\r\n .toLowerCase();\r\n\r\n let sysName = this.state.lookupName\r\n .replace(/[^a-zA-Z0-9]/g, \"\")\r\n .toLowerCase();\r\n\r\n if (sysName.trim() === \"\") {\r\n sysName = \"attributeTemplate\";\r\n }\r\n\r\n let pattern = \"^\" + sysName + \"(\\\\d+)?$\";\r\n let regex = new RegExp(pattern, \"g\");\r\n\r\n let similarNames = this.state.data\r\n .filter((x) => {\r\n if (x.sysName && x.sysName.match(regex)) {\r\n return x;\r\n }\r\n })\r\n .sort((a, b) => a.sysName > b.sysName);\r\n\r\n if (similarNames.length > 0) {\r\n sysName = similarNames[similarNames.length - 1].sysName + \"1\";\r\n }\r\n\r\n let order =\r\n this.state.data.length > 0\r\n ? parseInt(\r\n this.state.data[this.state.data.length - 1][\"order\"]\r\n ) + 10000000000\r\n : 0;\r\n\r\n let propertiesData = {\r\n LookupName: this.state.lookupName.trim(),\r\n sysName: sysName,\r\n label: this.state.lookupName.trim(),\r\n lookupType: this.state.lookupType.value,\r\n typeText: this.DataTypes.find(\r\n (type) => type.value === this.state.lookupType.value\r\n ).text,\r\n description: this.state.description,\r\n order: order + 10000000000,\r\n };\r\n\r\n if (propertiesData.lookupType === \"String\") {\r\n propertiesData.min = \"1\";\r\n propertiesData.max = \"128\";\r\n propertiesData.pattern = \"\";\r\n }\r\n\r\n if (propertiesData.lookupType === \"Picklist String\") {\r\n\r\n // clear empty item from picklist - ali\r\n let values = this.state.picklist.split('ɖ')\r\n values = values.filter(o => o.length > 0)\r\n values = values.join('ɖ');\r\n\r\n propertiesData.picklist = values;\r\n propertiesData.multiSelect = false;\r\n }\r\n\r\n if (propertiesData.lookupType === \"Number\") {\r\n propertiesData.numberType = this.state.numberType;\r\n propertiesData.unit = \"none\";\r\n propertiesData.min = \"\";\r\n propertiesData.max = \"\";\r\n propertiesData.useThousandSeparator = false;\r\n propertiesData.unitSide = \"Right\";\r\n propertiesData.decimalPlace = \"2\";\r\n }\r\n\r\n if (propertiesData.lookupType === \"User Identity\") {\r\n propertiesData.showProfilePicture = true;\r\n propertiesData.useDisplayName = false;\r\n propertiesData.multiSelect = false;\r\n }\r\n\r\n if (propertiesData.lookupType === \"DateTime\") {\r\n propertiesData.dateTimeType = this.state.dateTimeType;\r\n if (this.state.dateTimeType === \"date\") {\r\n propertiesData.defaultDate = \"Today_+_0_Days\";\r\n propertiesData.setDefaultDate = true;\r\n propertiesData.defaultTime = \"10:00 AM\";\r\n } else if (this.state.dateTimeType === \"time\") {\r\n propertiesData.defaultDate = \"Today_+_0_Days\";\r\n propertiesData.setDefaultDate = true;\r\n propertiesData.defaultTime = \"10:00 AM\";\r\n propertiesData.interval = \"15\";\r\n propertiesData.minTime = \"\";\r\n propertiesData.maxTime = \"\";\r\n } else {\r\n propertiesData.defaultDate = \"Today_+_0_Days\";\r\n propertiesData.setDefaultDate = true;\r\n propertiesData.defaultTime = \"10:00 AM\";\r\n propertiesData.interval = \"15\";\r\n propertiesData.minTime = \"\";\r\n propertiesData.maxTime = \"\";\r\n }\r\n }\r\n\r\n if (propertiesData.lookupType === \"State Field\") {\r\n let values = this.state.statefield\r\n values = values.filter(o => o.name.trim().length > 0)\r\n for (let i = 0; i < values.length; i++) {\r\n values[i]._id = uuidv4()\r\n values[i].name = values[i].name.trim()\r\n values[i].order = parseInt((i + 1) * 10000000000);\r\n }\r\n propertiesData['statefield'] = values\r\n }\r\n await this.postAdd(propertiesData, keepFormVisible);\r\n };\r\n\r\n postAdd = async (propertiesData, keepFormVisible) => {\r\n let AttributeTemplate = await createAttributeTemplate(this.props.organization._id, propertiesData);\r\n\r\n let { data } = this.state;\r\n AttributeTemplate.indexId = this.state.data.length + 1;\r\n data.push(AttributeTemplate);\r\n data = data.slice().sort((a, b) => a.LookupName.localeCompare(b.LookupName));\r\n for (let i = 0; i < data.length; i++) {\r\n data[i].indexId = i + 1;\r\n data[i].typeText = this.DataTypes.find(\r\n (type) => type.value === data[i].lookupType\r\n ).text;\r\n }\r\n this.setState({\r\n data: data,\r\n showCreateAttributeTemplate: keepFormVisible,\r\n lookupName: \"\",\r\n picklist: \"\",\r\n description: \"\",\r\n lookupType: this.DataTypes[0],\r\n nameError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n dateTimeType: \"date\",\r\n numberType: \"integer\",\r\n statefield: [],\r\n statefieldError: {\r\n isValid: true,\r\n message: \"\",\r\n },\r\n creatingAttributeTemplate: false,\r\n }, () => {\r\n if (data.length > 1) {\r\n this.rowClick(AttributeTemplate._id);\r\n } else {\r\n this.setState({\r\n selectedAttribute: AttributeTemplate\r\n })\r\n }\r\n });\r\n };\r\n\r\n addandNew = (e) => {\r\n this.add(e, true);\r\n this.attributeTemplateName.focus();\r\n };\r\n\r\n Delete = (e) => {\r\n const _id = e.currentTarget === undefined ? e : e.currentTarget.value;\r\n let element = this.state.data.find((x) => x._id === _id);\r\n this.setState({\r\n DeletePopup: true,\r\n toDeleteId: element._id,\r\n });\r\n };\r\n\r\n toggleDeleteDialog = (e) => {\r\n this.setState({\r\n DeletePopup: false,\r\n });\r\n };\r\n\r\n DeleteConfirmation = async (e) => {\r\n e.target.disabled = true;\r\n const _id = this.state.toDeleteId;\r\n this.setState({\r\n deletingAttributeTemplate: true,\r\n })\r\n let element = this.state.data.find((x) => x._id === _id);\r\n await this.remove(element);\r\n this.setState({\r\n deletingAttributeTemplate: false,\r\n DeletePopup: !this.state.DeletePopup,\r\n toDeleteId: \"\",\r\n });\r\n };\r\n\r\n remove = async (dataItem) => {\r\n await deleteAttributeTemplate(dataItem._id);\r\n const data = [...this.state.data];\r\n let index = data.findIndex((p) => p === dataItem || (dataItem._id && p._id === dataItem._id));\r\n let toGet = 0;\r\n if (index >= 0) {\r\n data.splice(index, 1);\r\n }\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n data[i].indexId = i + 1;\r\n }\r\n this.setState({ data });\r\n\r\n if (index === 0) {\r\n if (data.length > 0) {\r\n this.rowClick(data[toGet]._id);\r\n } else {\r\n this.setState({ selectedAttribute: {}, showCreateAttributeTemplate: false });\r\n }\r\n } else {\r\n toGet = index - 1;\r\n if (this.state.selectedAttribute._id === dataItem._id) {\r\n this.rowClick(data[toGet]._id);\r\n }\r\n }\r\n };\r\n\r\n Save = () => {\r\n this.LookupSidebar.current.Save();\r\n };\r\n\r\n Discard = () => {\r\n var { data } = this.state;\r\n this.LookupSidebar.current.cancel();\r\n var nextAttribute = data.find((item) => item._id === this.state.nextAttributeId);\r\n this.setState({\r\n visible: false,\r\n selectedAttribute: nextAttribute,\r\n nextAttributeId: \"\"\r\n })\r\n };\r\n\r\n onSideAttributeChange = (_id, sidedata) => {\r\n var { data, selectedAttribute } = this.state;\r\n var index = data.findIndex((item) => item._id === _id)\r\n var element = data.find((item) => item._id === _id);\r\n sidedata.indexId = element.indexId;\r\n data[index] = sidedata;\r\n\r\n const sortedAttributes = data.slice().sort((a, b) => a.LookupName.localeCompare(b.LookupName));\r\n\r\n for (let i = 0; i < sortedAttributes.length; i++) {\r\n sortedAttributes[i].indexId = i + 1;\r\n sortedAttributes[i].typeText = this.DataTypes.find((type) => type.value === sortedAttributes[i].lookupType).text\r\n }\r\n\r\n if (this.state.nextAttributeId !== \"\") {\r\n var nextAttribute = data.find((item) => item._id === this.state.nextAttributeId);\r\n selectedAttribute = { ...nextAttribute }\r\n }\r\n\r\n this.setState({\r\n data: sortedAttributes,\r\n visible: false,\r\n selectedAttribute,\r\n nextAttributeId: \"\"\r\n })\r\n };\r\n}\r\n\r\nexport default withTranslation([\r\n \"property_template/common\",\r\n \"property_template/create_dialog\",\r\n \"attribute/attribute_type\"\r\n], {\r\n withRef: true\r\n})(Lookup);\r\n","import React from \"react\";\r\nimport Lookup from \"../../Components/Attributes/AttributeTemplate/Lookup\";\r\n\r\nconst WorkspacePropertyTemplatesPage = ({ organization, user, role }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default WorkspacePropertyTemplatesPage; ","import React, { Component } from \"react\";\r\nimport { PageContainer, Content } from \"../Drawer/PageContainer\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport RemoveDialog from \"../Shared/Remove/RemoveDialog\";\r\nimport NoRecord from \"../../Components/Display/NoRecord\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { deleteDirectory } from \"../Helpers/DateLakeStorage\";\r\nimport {\r\n enabledisableOnRuntime,\r\n deleteOnRuntime,\r\n} from \"../Helpers/DisableDeleteRuntime\";\r\nimport SaveDialog from \"../Shared/Remove/SaveDialog\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport Upgarde from \"../Shared/Subscription/Upgrade\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { postMessageToRuntime } from \"../Helpers/Runtime/runtime\";\r\nimport { deleteProject, getOrganisationProjects, updateProject } from \"../../API/Project/project\";\r\nimport { getAppUserAndRoles } from \"../../API/Project/project\";\r\nimport { getOrganizationUsers } from \"../../API/Organization/organization\";\r\nimport NoAccessComponent from \"../Shared/Error/NoAccess\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getSubscriptionAndProjects } from \"../../API/Subscription/SubscriptionHelper\";\r\nimport moment from \"moment\";\r\n\r\nclass RecycleBin extends Component {\r\n\r\n static contextType = MsalContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n redirect: false,\r\n showDeletePopup: false,\r\n toDeleteProject: {},\r\n toRestoreProject: {},\r\n showRestorePopup: false,\r\n ProjectDeleting: false,\r\n projects: [],\r\n AllProjects: [],\r\n ProjectRestoring: false,\r\n showUpgradeDailog: false,\r\n showNoAccess: false,\r\n errorMessage: {\r\n status: \"\",\r\n message: \"\",\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n await this.getProject();\r\n };\r\n\r\n render() {\r\n const { t } = this.props;\r\n if (this.state.redirect) return \r\n\r\n if (this.state.loading) return \r\n\r\n if (this.state.showNoAccess) return \r\n\r\n return (\r\n \r\n
    \r\n
    \r\n {t(\"header.description\")}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {\r\n this.state.showUpgradeDailog && (\r\n more apps? '}\r\n toggleDialog={this.toggleUpgradeDailog}\r\n Type={'Pro'}\r\n />\r\n )\r\n }\r\n {this.state.showRestorePopup && (\r\n \r\n )}\r\n {this.state.showDeletePopup && (\r\n \r\n )}\r\n {this.state.projects.length === 0 && (\r\n \r\n )}\r\n {this.state.projects.length > 0 && (\r\n \r\n \r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.dataItem.name}\r\n \r\n \r\n );\r\n }}\r\n />\r\n {\r\n return props.dataItem.deletedByUser ? (\r\n \r\n
    \r\n \r\n {`${props.dataItem.deletedByUser.firstName.substr(0, 1).toUpperCase()}${props.dataItem.deletedByUser.lastName.substr(0, 1).toUpperCase()}`}\r\n
    \r\n
    \r\n
    {props.dataItem.deletedByUser.displayName}
    \r\n {props.dataItem.deletedByUser.email}\r\n
    \r\n
    \r\n \r\n ) : ()\r\n }}\r\n />\r\n \r\n {\r\n return (\r\n \r\n {props.dataItem.runtimeRights.roleName}\r\n \r\n );\r\n }}\r\n />\r\n {\r\n return (props.dataItem.runtimeRights.appGeneralSettings) ? (\r\n \r\n this.handleShowRestoreDataPopup(props.dataItem)}\r\n className=\"me-2 btn btn-primary\"\r\n >\r\n {t(\"grid.buttons.restore_button_label\")}\r\n \r\n\r\n this.handleShowDeletePopup(props.dataItem)}\r\n className=\"btn btn-secondary\">\r\n {t(\"grid.buttons.delete_button_label\")}\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 getProject = async () => {\r\n let result = await getOrganisationProjects(this.props.organization._id);\r\n let runtimeResponse = await getAppUserAndRoles(this.props.organization._id);\r\n let runtimeRights = runtimeResponse.data\r\n result = this.filterProjectsBasedonRuntimeRights(result, runtimeRights);\r\n const organizationUsers = await getOrganizationUsers(this.props.organization._id);\r\n if (organizationUsers.status === \"unauthorized\") {\r\n this.setState({ showNoAccess: true, loading: false })\r\n return;\r\n }\r\n for (let i = 0; i < result.length; i++) {\r\n result[i].deleteOn = moment(result[i].deletedOn).format(\"LLL\");\r\n }\r\n let deletedProjects = result.filter(project => project.isActive === false);\r\n for (let i = 0; i < deletedProjects.length; i++) {\r\n const deletedByOrgUser = organizationUsers.find(user => user._id === deletedProjects[i].deletedBy);\r\n if (deletedByOrgUser) {\r\n deletedByOrgUser.firstName = deletedByOrgUser.firstName || \"\";\r\n deletedByOrgUser.lastName = deletedByOrgUser.lastName || \"\";\r\n deletedByOrgUser.displayName = deletedByOrgUser.displayName || \"\";\r\n }\r\n deletedProjects[i].indexId = i + 1;\r\n deletedProjects[i].deletedByUser = deletedByOrgUser || null;\r\n }\r\n this.setState({\r\n AllProjects: result,\r\n projects: deletedProjects,\r\n loading: false,\r\n });\r\n };\r\n\r\n filterProjectsBasedonRuntimeRights = (projects, runtimeRights) => {\r\n let filteredProjects = [];\r\n for (let i = 0; i < projects.length; i++) {\r\n let project = projects[i];\r\n let instances = project.instances;\r\n let runtimeProject = runtimeRights.find(data => instances.find(instance => instance._id === data.appId));\r\n let userBelongsToProject = runtimeProject && runtimeProject.userRoles.find(userRole => userRole.userId === this.props.user.azureId);\r\n if (userBelongsToProject) {\r\n filteredProjects.push({\r\n ...project,\r\n runtimeRights: userBelongsToProject\r\n });\r\n }\r\n }\r\n return filteredProjects;\r\n }\r\n\r\n toggleUpgradeDailog = () => {\r\n this.setState({\r\n showUpgradeDailog: !this.state.showUpgradeDailog\r\n })\r\n }\r\n\r\n handleShowDeletePopup = (dataItem) => {\r\n this.setState({\r\n showDeletePopup: !this.state.showDeletePopup,\r\n toDeleteProject: !this.state.showDeletePopup ? dataItem : {},\r\n });\r\n };\r\n\r\n handleShowRestoreDataPopup = (dataItem) => {\r\n this.setState({\r\n ProjectRestoring: false,\r\n errorMessage: {\r\n status: \"\",\r\n message: \"\",\r\n },\r\n showRestorePopup: !this.state.showRestorePopup,\r\n toRestoreProject: !this.state.showRestorePopup ? dataItem : {},\r\n });\r\n };\r\n\r\n handleCloseShowRestoreDataPopup = () => {\r\n this.setState({\r\n errorMessage: {\r\n status: \"\",\r\n message: \"\",\r\n },\r\n ProjectRestoring: false,\r\n showRestorePopup: false,\r\n toRestoreProject: {},\r\n });\r\n };\r\n\r\n UpdateProjects = async () => {\r\n let response = await getSubscriptionAndProjects(this.props.organization._id);\r\n if (response.numberofApps && response.numberofApps.low >= parseInt(response.maxApps)) {\r\n this.setState({\r\n showRestorePopup: false,\r\n errorMessage: {\r\n status: \"\",\r\n message: \"\",\r\n },\r\n ProjectRestoring: false,\r\n toRestoreProject: {},\r\n showUpgradeDailog: true\r\n });\r\n } else {\r\n this.setState({\r\n errorMessage: {\r\n status: \"\",\r\n message: \"\",\r\n },\r\n ProjectRestoring: true,\r\n });\r\n\r\n let { errorMessage } = this.state;\r\n\r\n for (let instance of this.state.toRestoreProject.instances) {\r\n let url = this.state.toRestoreProject.name.replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\") + \"_\" + instance._id.slice(0, 5);\r\n let result = await enabledisableOnRuntime(\r\n this.context,\r\n \"Application\",\r\n url,\r\n this.props.organization._id,\r\n instance._id,\r\n null,\r\n false\r\n );\r\n\r\n if (result.status === undefined) {\r\n errorMessage.status = \"Failure\";\r\n errorMessage.message = result.message;\r\n this.setState({\r\n errorMessage: errorMessage,\r\n ProjectRestoring: false,\r\n });\r\n return;\r\n }\r\n }\r\n\r\n await updateProject(this.state.toRestoreProject._id, { isActive: true });\r\n\r\n if (this.props.isAccessedInIframe) {\r\n const projectUrl = this.state.toRestoreProject.name.replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\") + \"_\" + this.state.toRestoreProject.instances[0]._id.slice(0, 5);\r\n postMessageToRuntime({\r\n reload: true,\r\n projectUrl: projectUrl,\r\n })\r\n const projects = this.state.projects.filter(project => project._id !== this.state.toRestoreProject._id)\r\n this.setState({\r\n ProjectRestoring: false,\r\n showRestorePopup: false,\r\n toRestoreProject: {},\r\n projects: projects,\r\n AllProjects: projects\r\n })\r\n } else {\r\n this.setState({\r\n redirect: true,\r\n });\r\n }\r\n }\r\n };\r\n\r\n DeleteProject = async () => {\r\n this.setState({\r\n errorMessage: {\r\n status: \"\",\r\n message: \"\",\r\n },\r\n ProjectDeleting: true,\r\n });\r\n\r\n let { errorMessage } = this.state;\r\n\r\n for (let instance of this.state.toDeleteProject.instances) {\r\n let url = this.state.toDeleteProject.name.replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\") + \"_\" + instance._id.slice(0, 5);\r\n let result = await deleteOnRuntime(\r\n \"Application\",\r\n url,\r\n this.props.organization._id,\r\n instance._id,\r\n null,\r\n );\r\n\r\n if (result.status === undefined) {\r\n errorMessage.status = \"Failure\";\r\n errorMessage.message = result.message;\r\n this.setState({\r\n errorMessage: errorMessage,\r\n ProjectDeleting: false,\r\n });\r\n return;\r\n }\r\n }\r\n\r\n let projectDeleteResponse = await deleteProject(this.state.toDeleteProject._id);\r\n\r\n let projects = this.state.projects;\r\n\r\n projects = projects.filter((project) => project._id !== this.state.toDeleteProject._id);\r\n\r\n for (let i = 0; i < projects.length; i++) {\r\n projects[i].indexId = i + 1;\r\n }\r\n if (projectDeleteResponse.status === \"Success\") {\r\n let path = this.props.organization._id + \"/\" + this.state.toDeleteProject._id;\r\n deleteDirectory(path, this.state.toDeleteProject._id);\r\n this.setState({\r\n ProjectDeleting: false,\r\n projects: [...projects],\r\n showDeletePopup: false,\r\n toDeleteProject: {},\r\n });\r\n } else {\r\n alert(\"Something Went Wrong\");\r\n }\r\n };\r\n}\r\n\r\nexport default withTranslation([\r\n \"recyclebin/common\",\r\n], {\r\n withRef: true\r\n})(RecycleBin);\r\n","import React from \"react\";\r\nimport RecycleBin from \"../../Components/OrganizationSettings/RecycleBin\";\r\n\r\nconst WorkspaceRecyclebinPage = ({ organization, user }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default WorkspaceRecyclebinPage; ","/**\n * @hidden\n */\nexport var EMPTY_ID = '';\n/**\n * @hidden\n */\nexport var ZERO_LEVEL_ZERO_NODE_ID = '0';\n/**\n * @hidden\n */\nexport var SEPARATOR = '_';\n/**\n * @hidden\n */\nexport function getItemById(itemId, items, childrenField) {\n if (isIdZeroLevel(itemId)) {\n return items[Number(itemId)];\n }\n else {\n var rootParentItem = items[Number(getRootParentId(itemId))];\n var subItems = (rootParentItem && rootParentItem[childrenField]) || [];\n return subItems.length ?\n getItemById(getIdWithoutRootParentId(itemId), subItems, childrenField) : undefined;\n }\n}\n/**\n * @hidden\n */\nexport function getRootParentId(itemId) {\n return isIdEmptyOrZeroLevel(itemId) ? itemId : itemId.split(SEPARATOR)[0];\n}\n/**\n * @hidden\n */\nexport function getIdWithoutRootParentId(itemId) {\n if (isIdEmptyOrZeroLevel(itemId)) {\n return itemId;\n }\n else {\n var firstSeparatorIndex = itemId.indexOf(SEPARATOR);\n return itemId.substring(firstSeparatorIndex + 1);\n }\n}\n/**\n * @hidden\n */\nexport function getFirstChildId(itemId) {\n return createId('0', itemId);\n}\n/**\n * @hidden\n */\nexport function createId(childId, parentId) {\n childId = childId.toString();\n return parentId ? parentId + SEPARATOR + childId : childId;\n}\n/**\n * @hidden\n */\nexport function getDirectParentId(itemId) {\n var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);\n return lastSeparatorIndex < 0 ? EMPTY_ID : itemId.substring(0, lastSeparatorIndex);\n}\n/**\n * @hidden\n */\nexport function isIdEmptyOrZeroLevel(itemId) {\n return itemId === EMPTY_ID || itemId.indexOf(SEPARATOR) < 0;\n}\n/**\n * @hidden\n */\nexport function isIdZeroLevel(itemId) {\n return itemId !== EMPTY_ID && itemId.indexOf(SEPARATOR) < 0;\n}\n/**\n * @hidden\n */\nexport function getAllShortIds(itemId) {\n return itemId.split(SEPARATOR);\n}\n/**\n * @hidden\n */\nexport function getShortId(itemId) {\n var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);\n return lastSeparatorIndex < 0 ? itemId : itemId.substring(lastSeparatorIndex + 1);\n}\n/**\n * @hidden\n */\nexport function isItemFirstFromSiblings(itemId) {\n return getShortId(itemId) === ZERO_LEVEL_ZERO_NODE_ID;\n}\n/**\n * @hidden\n */\nexport function getDecrementedItemIdAfterRemoval(removedItemId, itemId) {\n var preservedItemId = itemId;\n removedItemId = 'r' + SEPARATOR + removedItemId;\n itemId = 'r' + SEPARATOR + itemId;\n var itemSharedPath = getDirectParentId(removedItemId) + SEPARATOR;\n if (itemId.startsWith(itemSharedPath)) {\n var itemNotSharedPath = itemId.substring(itemSharedPath.length);\n if (itemNotSharedPath) {\n var siblingShortId = getRootParentId(itemNotSharedPath);\n if (Number(getShortId(removedItemId)) < Number(siblingShortId)) {\n var decrementedId = itemSharedPath +\n (Number(siblingShortId) - 1).toString() +\n itemNotSharedPath.substring(siblingShortId.length);\n return getIdWithoutRootParentId(decrementedId);\n }\n }\n }\n return preservedItemId;\n}\n","var PROPS_COUNT_LIMIT = 50000;\n/**\n * @hidden\n */\n// An alternative is to use array.sort() and\n// implement a binary search function.\nvar SortedPublicItemIds = /** @class */ (function () {\n function SortedPublicItemIds() {\n this.objects = [];\n }\n SortedPublicItemIds.prototype.init = function (publicItemIds) {\n var currentObj;\n for (var i = 0; i < publicItemIds.length; i++) {\n if (i % PROPS_COUNT_LIMIT === 0) {\n currentObj = {};\n this.objects.push(currentObj);\n }\n currentObj[publicItemIds[i]] = true;\n }\n };\n SortedPublicItemIds.prototype.hasId = function (publicItemId) {\n return this.objects.some(function (obj) { return obj[publicItemId]; });\n };\n return SortedPublicItemIds;\n}());\nexport default SortedPublicItemIds;\n","/**\n * @hidden\n */\nexport function getNestedValue(fieldName, dataItem) {\n var path = (fieldName || '').split('.');\n var data = dataItem;\n path.forEach(function (p) {\n data = data ? data[p] : undefined;\n });\n return data;\n}\n/**\n * @hidden\n */\nexport function isArray(operation) {\n return operation.length !== undefined;\n}\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 { EMPTY_ID, isIdZeroLevel, createId, getRootParentId, getIdWithoutRootParentId, getAllShortIds } from './itemIdUtils';\nimport SortedPublicItemIds from './SortedPublicItemIds';\nimport { getNestedValue } from './misc';\n/**\n * @hidden\n */\nexport function hasChildren(item, childrenField) {\n var children = getNestedValue(childrenField, item);\n return Boolean(children && children.length);\n}\n/**\n * @hidden\n */\nexport function isItemExpandedAndWithChildren(item, fieldsSvc) {\n return fieldsSvc.expanded(item) && hasChildren(item, fieldsSvc.getChildrenField());\n}\n/**\n * @hidden\n */\nexport function resolveItemId(publicId, idField, items, childrenField) {\n var resolvedIds = resolveItemsIds([publicId], idField, items, childrenField);\n return resolvedIds.length ? resolvedIds[0] : undefined;\n}\n/**\n * @hidden\n */\nexport function resolveItemsIds(publicIds, idField, items, childrenField) {\n var result = [];\n var sortedIds = new SortedPublicItemIds();\n sortedIds.init(publicIds);\n resolveItemsIdsHelper(sortedIds, idField, items, EMPTY_ID, result, childrenField);\n return result;\n}\n/**\n * @hidden\n */\nexport function updateItem(items, itemId, update, cloneField, childrenField) {\n var _a;\n var itemIndex = Number(getRootParentId(itemId));\n if (itemIndex >= items.length) {\n return items;\n }\n var result = items;\n var item = items[itemIndex];\n // Clone the item before updating it.\n if (!item[cloneField]) {\n result = items.slice();\n item = result[itemIndex] = Object.assign({}, item, (_a = {}, _a[cloneField] = true, _a));\n }\n // Directly update the item.\n if (isIdZeroLevel(itemId)) {\n update(item);\n }\n else if (item[childrenField]) {\n item[childrenField] = updateItem(item[childrenField], getIdWithoutRootParentId(itemId), update, cloneField, childrenField);\n }\n return result;\n}\n/**\n * @hidden\n */\nexport function isEnabledAndAllParentsEnabled(itemId, items, fieldsSvc) {\n var ids = getAllShortIds(itemId);\n var currentItems = items;\n for (var i = 0; i < ids.length; i++) {\n var currentItem = currentItems[Number(ids[i])];\n if (fieldsSvc.disabled(currentItem)) {\n return false;\n }\n else {\n currentItems = currentItem[fieldsSvc.getChildrenField()];\n }\n }\n return true;\n}\n/**\n * @hidden\n */\nexport function getAllDirectIndirectChildrenIds(item, itemId, childrenField, idField) {\n return idField ? getChildrenPublicIds(item) : getChildrenHierarchicalIndices(item, itemId);\n function getChildrenHierarchicalIndices(startItem, startItemId) {\n var result = [];\n var children = startItem[childrenField] || [];\n for (var i = 0; i < children.length; i++) {\n var id = createId(i, startItemId);\n result.push(id);\n result = result.concat(getChildrenHierarchicalIndices(children[i], id));\n }\n return result;\n }\n function getChildrenPublicIds(startItem) {\n var result = [];\n var children = startItem[childrenField] || [];\n for (var i = 0; i < children.length; i++) {\n result.push(getNestedValue(idField, children[i]));\n result = result.concat(getChildrenPublicIds(children[i]));\n }\n return result;\n }\n}\n/**\n * @hidden\n */\nexport function areAllDirectChildrenChecked(item, itemId, idField, childrenField, check) {\n var children = item[childrenField] || [];\n return children.every(function (child, index) {\n return check.indexOf(idField ? getNestedValue(idField, child) : createId(index, itemId)) > -1;\n });\n}\n/**\n * @hidden\n */\nexport function getAllParents(itemId, childrenField, items) {\n var result = [];\n var ids = getAllShortIds(itemId);\n var currentItems = items;\n for (var i = 0; i < ids.length - 1; i++) {\n if (!currentItems) {\n break;\n }\n var currentItem = currentItems[Number(ids[i])];\n result.push(currentItem);\n currentItems = currentItem[childrenField];\n }\n return result;\n}\n/**\n * @hidden\n */\nexport function removeItem(itemId, childrenField, items) {\n var result = items.slice();\n if (isIdZeroLevel(itemId)) {\n result.splice(Number(itemId), 1);\n }\n else {\n var rootParentIndex = Number(getRootParentId(itemId));\n var rootParent = result[rootParentIndex] = __assign({}, result[rootParentIndex]);\n rootParent[childrenField] = removeItem(getIdWithoutRootParentId(itemId), childrenField, rootParent[childrenField]);\n }\n return result;\n}\n/**\n * @hidden\n */\nexport function addItem(item, operation, childrenField, targetItemId, items) {\n var result = items.slice();\n if (isIdZeroLevel(targetItemId)) {\n if (operation === 'child') {\n var targetItem = result[Number(targetItemId)] = __assign({}, result[Number(targetItemId)]);\n if (targetItem[childrenField]) {\n targetItem[childrenField] = targetItem[childrenField].slice();\n targetItem[childrenField].push(item);\n }\n else {\n targetItem[childrenField] = [item];\n }\n }\n else {\n result.splice(Number(targetItemId) + (operation === 'after' ? 1 : 0), 0, item);\n }\n }\n else {\n var rootParentIndex = Number(getRootParentId(targetItemId));\n var rootParent = result[rootParentIndex] = __assign({}, result[rootParentIndex]);\n rootParent[childrenField] = addItem(item, operation, childrenField, getIdWithoutRootParentId(targetItemId), rootParent[childrenField]);\n }\n return result;\n}\nfunction resolveItemsIdsHelper(publicItemIds, idField, items, parentItemId, resolvedIds, childrenField) {\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var id = createId(i, parentItemId);\n if (publicItemIds.hasId(getNestedValue(idField, item))) {\n resolvedIds.push(id);\n }\n if (hasChildren(item, childrenField)) {\n resolveItemsIdsHelper(publicItemIds, idField, getNestedValue(childrenField, item), id, resolvedIds, childrenField);\n }\n }\n}\n","import { Keys } from '@progress/kendo-react-common';\nimport * as idUtils from './itemIdUtils';\nimport { isItemExpandedAndWithChildren, isEnabledAndAllParentsEnabled } from './itemUtils';\n/**\n * @hidden\n */\nexport default function getItemIdUponKeyboardNavigation(item, itemId, items, keyCode, fieldsSvc) {\n switch (keyCode) {\n case Keys.left:\n return getIdUponLeftKey();\n case Keys.right:\n return getIdUponRightKey();\n case Keys.up:\n return getIdUponUpKey();\n case Keys.down:\n return getIdUponDownKey();\n case Keys.home:\n return idUtils.ZERO_LEVEL_ZERO_NODE_ID;\n case Keys.end:\n return getIdUponEndKey();\n default:\n return itemId;\n }\n function getIdUponLeftKey() {\n return idUtils.isIdZeroLevel(itemId)\n // For expanded disabled items, navigate directly to the parent.\n // Collapse cannot happen because an event is not fired to the client.\n || (fieldsSvc.expanded(item) && isEnabledAndAllParentsEnabled(itemId, items, fieldsSvc)) ?\n itemId : idUtils.getDirectParentId(itemId);\n }\n function getIdUponRightKey() {\n return isItemExpandedAndWithChildren(item, fieldsSvc) ? idUtils.getFirstChildId(itemId) : itemId;\n }\n function getIdUponUpKey() {\n var index = Number(idUtils.getShortId(itemId));\n var parentId = idUtils.getDirectParentId(itemId);\n return index ? getLastNotOpenedChildId(idUtils.createId(index - 1, parentId), items, fieldsSvc) :\n idUtils.isIdZeroLevel(itemId) ? itemId : parentId;\n }\n function getIdUponDownKey() {\n if (isItemExpandedAndWithChildren(item, fieldsSvc)) {\n return idUtils.getFirstChildId(itemId);\n }\n else {\n return getNextItemId(itemId, items, fieldsSvc) || itemId;\n }\n }\n function getIdUponEndKey() {\n var result = (items.length - 1).toString();\n var currentItem = items[items.length - 1];\n var children;\n while (isItemExpandedAndWithChildren(currentItem, fieldsSvc)) {\n children = currentItem[fieldsSvc.getChildrenField()];\n result = idUtils.createId(children.length - 1, result);\n currentItem = children[children.length - 1];\n }\n return result;\n }\n}\nfunction getNextItemId(itemId, items, fieldsSvc) {\n var parentId = idUtils.getDirectParentId(itemId);\n var parent = parentId ? idUtils.getItemById(parentId, items, fieldsSvc.getChildrenField()) : undefined;\n var siblings = parent ? parent[fieldsSvc.getChildrenField()] : items;\n var index = Number(idUtils.getShortId(itemId));\n return index < siblings.length - 1 ?\n idUtils.createId(index + 1, parentId) :\n parent ? getNextItemId(parentId, items, fieldsSvc) : undefined;\n}\nfunction getLastNotOpenedChildId(itemId, items, fieldsSvc) {\n var item = idUtils.getItemById(itemId, items, fieldsSvc.getChildrenField());\n if (isItemExpandedAndWithChildren(item, fieldsSvc)) {\n return getLastNotOpenedChildId(idUtils.createId(item[fieldsSvc.getChildrenField()].length - 1, itemId), items, fieldsSvc);\n }\n else {\n return itemId;\n }\n}\n","/**\n * @hidden\n */\nexport var EXPAND_FIELD = 'expanded';\n/**\n * @hidden\n */\nexport var TEXT_FIELD = 'text';\n/**\n * @hidden\n */\nexport var DISABLED_FIELD = 'disabled';\n/**\n * @hidden\n */\nexport var CHILDREN_FIELD = 'items';\n/**\n * @hidden\n */\nexport var HAS_CHILDREN_FIELD = 'hasChildren';\n/**\n * @hidden\n */\nexport var SELECT_FIELD = 'selected';\n/**\n * @hidden\n */\nexport var CHECK_FIELD = 'checked';\n/**\n * @hidden\n */\nexport var CHECK_INDETERMINATE_FIELD = 'checkIndeterminate';\n/**\n * @hidden\n */\nexport var DOM_KENDO_ITEM_ID_FIELD = '_kendoItemId';\n/**\n * @hidden\n */\nexport var DOM_KENDO_TREEVIEW_GUID_FIELD = '_kendoTreeViewGuid';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames, guid, Draggable, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { createId } from './utils/itemIdUtils';\nimport { isItemExpandedAndWithChildren, hasChildren } from './utils/itemUtils';\nimport { Reveal } from '@progress/kendo-react-animation';\nimport { DOM_KENDO_ITEM_ID_FIELD, DOM_KENDO_TREEVIEW_GUID_FIELD } from './utils/consts';\nvar sizeMap = kendoThemeMaps.sizeMap;\n/**\n * @hidden\n */\nexport var TreeViewItemPropsContext = React.createContext(function (props) { return props; });\n/**\n * @hidden\n */\nvar TreeViewItemWithoutContext = /** @class */ (function (_super) {\n __extends(TreeViewItemWithoutContext, _super);\n function TreeViewItemWithoutContext() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.itemGuid = guid();\n _this.onCheckChange = function (e) {\n _this.props.onCheckChange(e, _this.item, _this.itemId);\n };\n _this.onExpandChange = function (e) {\n _this.props.onExpandChange(e, _this.item, _this.itemId);\n };\n _this.onItemClick = function (e) {\n _this.props.onItemClick(e, _this.item, _this.itemId);\n };\n _this.onPress = function (e) {\n _this.props.onPress(e.event, _this.item, _this.itemId);\n };\n _this.onDrag = function (e) {\n _this.props.onDrag(e.event, _this.item, _this.itemId);\n };\n _this.onRelease = function (e) {\n _this.props.onRelease(e.event, _this.item, _this.itemId);\n };\n _this.assignDraggableMeta = function (element) {\n if (element) {\n element[DOM_KENDO_ITEM_ID_FIELD] = _this.props.itemId;\n element[DOM_KENDO_TREEVIEW_GUID_FIELD] = _this.props.treeGuid;\n }\n };\n return _this;\n }\n TreeViewItemWithoutContext.prototype.render = function () {\n var _this = this;\n var subitems = this.renderSubitemsIfApplicable();\n var itemInPart = this.renderItemInPart();\n return (React.createElement(\"li\", { className: this.getRootClassName(), tabIndex: this.tabIndex, role: \"treeitem\", \"aria-expanded\": this.ariaExpanded, \"aria-selected\": this.ariaSelected, \"aria-checked\": this.ariaChecked, \"aria-disabled\": this.fieldsSvc.disabled(this.item) ? true : undefined, ref: function (el) { return _this.itemElement = el; } },\n React.createElement(\"div\", { className: \"k-treeview-\".concat(this.props.position), ref: this.assignDraggableMeta },\n this.renderExpandIcon(),\n this.renderCheckbox(),\n this.props.draggable ?\n React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease }, itemInPart) : itemInPart),\n this.props.animate ?\n React.createElement(Reveal, { transitionEnterDuration: 200, transitionExitDuration: 200, style: { display: 'block' }, children: subitems }) : subitems));\n };\n TreeViewItemWithoutContext.prototype.componentDidMount = function () {\n var focusedItemId = this.props.focusedItemId;\n var currentItemId = this.itemId;\n if (focusedItemId && focusedItemId === currentItemId) {\n this.props.onFocusDomElNeeded(this.itemElement);\n }\n if (this.checkboxElement) {\n this.checkboxElement.indeterminate = this.fieldsSvc.checkIndeterminate(this.item);\n }\n };\n TreeViewItemWithoutContext.prototype.componentDidUpdate = function (prevProps) {\n var focusedItemId = this.props.focusedItemId;\n if (focusedItemId &&\n focusedItemId !== prevProps.focusedItemId &&\n focusedItemId === this.itemId) {\n this.props.onFocusDomElNeeded(this.itemElement);\n }\n if (this.checkboxElement) {\n var indeterminate = this.fieldsSvc.checkIndeterminate(this.item);\n if (indeterminate !== prevProps.fieldsService.checkIndeterminate(prevProps.item)) {\n this.checkboxElement.indeterminate = indeterminate;\n }\n }\n };\n TreeViewItemWithoutContext.prototype.renderCheckbox = function () {\n var _a;\n var _this = this;\n if (this.props.checkboxes) {\n var size = this.props.size;\n return (React.createElement(\"div\", { className: \"k-checkbox-wrap\" },\n React.createElement(\"input\", { type: \"checkbox\", className: classNames('k-checkbox k-rounded-md', (_a = {},\n _a[\"k-checkbox-\".concat(sizeMap[size] || size)] = size,\n _a)), checked: Boolean(this.fieldsSvc.checked(this.item)), id: this.itemGuid, tabIndex: -1, onChange: this.onCheckChange, ref: function (el) { return _this.checkboxElement = el; } }),\n React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: this.itemGuid })));\n }\n else {\n return undefined;\n }\n };\n TreeViewItemWithoutContext.prototype.renderExpandIcon = function () {\n var renderExpand = this.props.expandIcons &&\n // If it is explicitly said that the item has children (even not loaded yet)\n // or if the item actually has children, then render the icon.\n (this.fieldsSvc.hasChildren(this.item) || hasChildren(this.item, this.fieldsSvc.getChildrenField()));\n return renderExpand && (React.createElement(\"span\", { className: \"k-treeview-toggle\" },\n React.createElement(\"span\", { className: this.getIconClassName(), onClick: this.onExpandChange })));\n };\n TreeViewItemWithoutContext.prototype.renderSubitemsIfApplicable = function () {\n var _this = this;\n var data = this.fieldsSvc.children(this.item);\n return isItemExpandedAndWithChildren(this.item, this.fieldsSvc) ?\n (React.createElement(\"ul\", { className: \"k-treeview-group\", role: \"group\" }, data.map(function (item, index) {\n return (React.createElement(TreeViewItem, { item: item, position: index === 0 ? 'top' : index === data.length - 1 ? 'bot' : 'mid', itemId: createId(index, _this.itemId), treeGuid: _this.props.treeGuid, animate: _this.props.animate, focusedItemId: _this.props.focusedItemId, tabbableItemId: _this.props.tabbableItemId, fieldsService: _this.props.fieldsService, itemUI: _this.props.itemUI, checkboxes: _this.props.checkboxes, ariaMultiSelectable: _this.props.ariaMultiSelectable, onItemClick: _this.props.onItemClick, onFocusDomElNeeded: _this.props.onFocusDomElNeeded, draggable: _this.props.draggable, onPress: _this.props.onPress, onDrag: _this.props.onDrag, onRelease: _this.props.onRelease, expandIcons: _this.props.expandIcons, onExpandChange: _this.props.onExpandChange, onCheckChange: _this.props.onCheckChange, key: index, size: _this.props.size }));\n }))) : undefined;\n };\n TreeViewItemWithoutContext.prototype.renderItemInPart = function () {\n return (React.createElement(\"span\", { className: this.getContentClassName(), style: { touchAction: 'none' }, onClick: this.onItemClick },\n React.createElement(\"span\", { className: \"k-treeview-leaf-text\" }, this.props.itemUI ?\n React.createElement(this.props.itemUI, { item: this.item, itemHierarchicalIndex: this.itemId }) :\n this.fieldsSvc.text(this.item))));\n };\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"fieldsSvc\", {\n get: function () {\n return this.props.fieldsService;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"itemId\", {\n get: function () {\n return this.props.itemId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"item\", {\n get: function () {\n return this.props.item;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"tabIndex\", {\n get: function () {\n return (this.props.focusedItemId || this.props.tabbableItemId) === this.itemId ? 0 : -1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"ariaExpanded\", {\n get: function () {\n return this.fieldsSvc.hasChildren(this.item) || hasChildren(this.item, this.fieldsSvc.getChildrenField()) ?\n Boolean(this.fieldsSvc.expanded(this.item)) : undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"ariaChecked\", {\n get: function () {\n if (this.props.checkboxes) {\n if (this.fieldsSvc.checked(this.item)) {\n return 'true';\n }\n else {\n return this.fieldsSvc.checkIndeterminate(this.item) ? 'mixed' : 'false';\n }\n }\n else {\n return undefined;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"ariaSelected\", {\n get: function () {\n if (this.fieldsSvc.selected(this.item)) {\n return true;\n }\n else if (this.props.ariaMultiSelectable) {\n return this.fieldsSvc.disabled(this.item) ? undefined : false;\n }\n else {\n return undefined;\n }\n },\n enumerable: false,\n configurable: true\n });\n TreeViewItemWithoutContext.prototype.getIconClassName = function () {\n var expanded = this.fieldsSvc.expanded(this.item);\n return classNames('k-icon', {\n 'k-i-expand': !expanded,\n 'k-i-collapse': expanded,\n 'k-i-loading': expanded && !hasChildren(this.item, this.fieldsSvc.getChildrenField())\n });\n };\n TreeViewItemWithoutContext.prototype.getRootClassName = function () {\n return classNames('k-treeview-item', { 'k-disabled': this.fieldsSvc.disabled(this.item) });\n };\n TreeViewItemWithoutContext.prototype.getContentClassName = function () {\n return classNames('k-treeview-leaf', {\n 'k-focus': this.props.focusedItemId === this.itemId,\n 'k-selected': this.fieldsSvc.selected(this.item)\n });\n };\n TreeViewItemWithoutContext.defaultProps = {\n position: 'top'\n };\n return TreeViewItemWithoutContext;\n}(React.Component));\n/**\n * @hidden\n */\nexport var TreeViewItem = React.forwardRef(function (props, ref) {\n var contextPropsCallback = React.useContext(TreeViewItemPropsContext);\n var treeViewItemProps = contextPropsCallback.call(undefined, props);\n return (React.createElement(TreeViewItemWithoutContext, __assign({ ref: ref }, treeViewItemProps)));\n});\nTreeViewItem.displayName = 'TreeViewItem';\n","import { getNestedValue } from './misc';\n/**\n * @hidden\n */\nvar FieldsService = /** @class */ (function () {\n function FieldsService(treeViewProps) {\n this.expandField = treeViewProps.expandField;\n this.selectField = treeViewProps.selectField;\n this.hasChildrenField = treeViewProps.hasChildrenField;\n this.childrenField = treeViewProps.childrenField;\n this.textField = treeViewProps.textField;\n this.disableField = treeViewProps.disableField;\n this.checkField = treeViewProps.checkField;\n this.checkIndeterminateField = treeViewProps.checkIndeterminateField;\n this.focusIdField = treeViewProps.focusIdField;\n }\n FieldsService.prototype.expanded = function (item) {\n return getNestedValue(this.expandField, item);\n };\n FieldsService.prototype.selected = function (item) {\n return getNestedValue(this.selectField, item);\n };\n FieldsService.prototype.text = function (item) {\n return getNestedValue(this.textField, item);\n };\n FieldsService.prototype.disabled = function (item) {\n return getNestedValue(this.disableField, item);\n };\n FieldsService.prototype.hasChildren = function (item) {\n return getNestedValue(this.hasChildrenField, item);\n };\n FieldsService.prototype.children = function (item) {\n var children = getNestedValue(this.childrenField, item);\n return children ? children : [];\n };\n FieldsService.prototype.checked = function (item) {\n return getNestedValue(this.checkField, item);\n };\n FieldsService.prototype.checkIndeterminate = function (item) {\n return getNestedValue(this.checkIndeterminateField, item);\n };\n FieldsService.prototype.focusId = function (item) {\n return this.focusIdField && getNestedValue(this.focusIdField, item);\n };\n FieldsService.prototype.getChildrenField = function () {\n return this.childrenField;\n };\n return FieldsService;\n}());\nexport default FieldsService;\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-treeview',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1656667477,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * as PropTypes from 'prop-types';\nimport { Keys, dispatchEvent, guid, kendoThemeMaps, classNames } from '@progress/kendo-react-common';\nimport nav from './utils/getItemIdUponKeyboardNavigation';\nimport { resolveItemId, isEnabledAndAllParentsEnabled, hasChildren } from './utils/itemUtils';\nimport { TreeViewItem } from './TreeViewItem';\nimport { ZERO_LEVEL_ZERO_NODE_ID, getItemById } from './utils/itemIdUtils';\nimport FieldsService from './utils/FieldsService';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { CHECK_FIELD, CHECK_INDETERMINATE_FIELD, CHILDREN_FIELD, DISABLED_FIELD, EXPAND_FIELD, HAS_CHILDREN_FIELD, SELECT_FIELD, TEXT_FIELD } from './utils/consts';\nvar sizeMap = kendoThemeMaps.sizeMap;\n/**\n * Represents the [KendoReact TreeView component]({% slug overview_treeview %}).\n *\n * @example\n * ```jsx\n * const data = [{\n * text: 'Furniture', expanded: true, items: [\n * { text: 'Tables & Chairs' }, { text: 'Sofas' }, { text: 'Occasional Furniture' }]\n * }, {\n * text: 'Decor', expanded: true, items: [\n * { text: 'Bed Linen' }, { text: 'Curtains & Blinds' }, { text: 'Carpets' }]\n * }];\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = { focusedItemId: undefined, focusedItemPublicId: undefined, tabbableItemId: ZERO_LEVEL_ZERO_NODE_ID };\n _this.fieldsSvc = null;\n // When there is a change in state.focusedItemId, calling focus() on the dom element of the focused item\n // is most often not needed, because the browser focuses the element on its own.\n // https://github.com/telerik/kendo-react/issues/190\n _this.allowExplicitFocus = false;\n _this.treeGuid = guid();\n _this._element = null;\n _this.onFocusDomElNeeded = function (domItem) {\n if (_this.allowExplicitFocus) {\n _this.focusDomItem(domItem);\n }\n };\n _this.onCheckChange = function (event, item, itemId) {\n _this.setFocus(itemId);\n _this.dispatchCheckChange(event, item, itemId);\n };\n _this.onExpandChange = function (event, item, itemId) {\n _this.setFocus(itemId);\n _this.dispatchExpandChange(event, item, itemId);\n };\n _this.onPress = function (_event, item, itemId) {\n if (_this.props.onItemDragStart) {\n _this.props.onItemDragStart.call(undefined, { target: _this, item: item, itemHierarchicalIndex: itemId });\n }\n };\n _this.onDrag = function (event, item, itemId) {\n var pageX = event.pageX, pageY = event.pageY, clientX = event.clientX, clientY = event.clientY;\n if (_this.props.onItemDragOver) {\n _this.props.onItemDragOver.call(undefined, {\n target: _this,\n item: item,\n itemHierarchicalIndex: itemId,\n pageX: pageX,\n pageY: pageY,\n clientX: clientX,\n clientY: clientY\n });\n }\n };\n _this.onRelease = function (event, item, itemId) {\n var pageX = event.pageX, pageY = event.pageY, clientX = event.clientX, clientY = event.clientY;\n if (_this.props.onItemDragEnd) {\n _this.props.onItemDragEnd.call(undefined, {\n target: _this,\n item: item,\n itemHierarchicalIndex: itemId,\n pageX: pageX,\n pageY: pageY,\n clientX: clientX,\n clientY: clientY\n });\n }\n };\n _this.onItemClick = function (event, item, itemId) {\n _this.setFocus(itemId);\n _this.dispatchItemClick(event, item, itemId);\n };\n _this.onFocus = function () {\n clearTimeout(_this.blurRequest);\n if (_this.state.focusedItemId === undefined && _this.data.length) {\n _this.setFocus(_this.state.tabbableItemId);\n }\n };\n _this.onBlur = function () {\n clearTimeout(_this.blurRequest);\n _this.blurRequest = window.setTimeout(function () { return _this.setFocus(undefined); }, 0);\n };\n _this.onKeyDown = function (event) {\n var focusedItem = _this.getFocusedItem();\n if (focusedItem && _this.fieldsSvc) {\n var newItemId = nav(focusedItem, _this.state.focusedItemId, _this.data, event.keyCode, _this.fieldsSvc);\n if (newItemId !== _this.state.focusedItemId) {\n // This disables the auto-scroll. The scroll is achieved via item focusing.\n event.preventDefault();\n _this.allowExplicitFocus = true;\n _this.setFocus(newItemId);\n }\n _this.dispatchEventsOnKeyDown(event, focusedItem);\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(TreeView.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TreeView.prototype.render = function () {\n var _a;\n var _this = this;\n this.fieldsSvc = new FieldsService(this.props);\n var _b = this.props, size = _b.size, className = _b.className;\n return (React.createElement(\"div\", { className: classNames('k-treeview', (_a = {},\n _a[\"k-treeview-\".concat(sizeMap[size] || size)] = size,\n _a), className), onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, role: \"tree\", \"aria-multiselectable\": this.ariaMultiSelectable ? true : undefined, \"aria-label\": this.props['aria-label'], \"aria-labelledby\": this.props['aria-labelledby'], ref: function (element) { return _this._element = element; }, tabIndex: this.props.tabIndex },\n React.createElement(\"ul\", { className: \"k-treeview-lines k-treeview-group\", role: \"group\" }, this.data.map(function (item, index) {\n return (React.createElement(TreeViewItem, { item: item, position: index === 0 ? 'top' : index === _this.data.length - 1 ? 'bot' : 'mid', itemId: index.toString(), treeGuid: _this.treeGuid, animate: _this.props.animate, focusedItemId: _this.state.focusedItemId, tabbableItemId: _this.state.tabbableItemId, fieldsService: _this.fieldsSvc, itemUI: _this.props.item, checkboxes: _this.props.checkboxes, ariaMultiSelectable: _this.ariaMultiSelectable, onItemClick: _this.onItemClick, onFocusDomElNeeded: _this.onFocusDomElNeeded, draggable: _this.props.draggable, onPress: _this.onPress, onDrag: _this.onDrag, onRelease: _this.onRelease, expandIcons: _this.props.expandIcons, onExpandChange: _this.onExpandChange, onCheckChange: _this.onCheckChange, key: index, size: size }));\n }))));\n };\n /**\n * @hidden\n */\n TreeView.prototype.componentDidUpdate = function () {\n this.allowExplicitFocus = false;\n this.refocusDueToFocusIdField();\n };\n TreeView.prototype.dispatchEventsOnKeyDown = function (event, focusedItem) {\n var _this = this;\n if (this.fieldsSvc === null) {\n return;\n }\n // isEnabled is the most expensive op and that is why is left last.\n var isEnabled = function () {\n return _this.fieldsSvc && isEnabledAndAllParentsEnabled(_this.state.focusedItemId, _this.data, _this.fieldsSvc);\n };\n if (event.keyCode === Keys.left && this.fieldsSvc.expanded(focusedItem) && isEnabled()) {\n this.dispatchExpandChange(event, focusedItem, this.state.focusedItemId);\n }\n else if (event.keyCode === Keys.right && !this.fieldsSvc.expanded(focusedItem) &&\n (this.fieldsSvc.hasChildren(focusedItem) || hasChildren(focusedItem, this.props.childrenField)) && isEnabled()) {\n this.dispatchExpandChange(event, focusedItem, this.state.focusedItemId);\n }\n else if (event.keyCode === Keys.enter && isEnabled()) {\n this.dispatchItemClick(event, focusedItem, this.state.focusedItemId);\n }\n else if (event.keyCode === Keys.space && isEnabled()) {\n // W/o preventDefault() long TreeViews gets incorrectly scrolled.\n event.preventDefault();\n this.dispatchCheckChange(event, focusedItem, this.state.focusedItemId);\n }\n };\n TreeView.prototype.setFocus = function (focusedItemId) {\n if (focusedItemId && this.fieldsSvc) {\n if (this.fieldsSvc.focusIdField) {\n var item = this.getItemById(focusedItemId);\n this.setState({ focusedItemId: focusedItemId, focusedItemPublicId: this.fieldsSvc.focusId(item) });\n }\n else {\n this.setState({ focusedItemId: focusedItemId });\n }\n }\n else {\n this.setState(function (state) {\n return {\n focusedItemId: undefined,\n focusedItemPublicId: undefined,\n tabbableItemId: state.focusedItemId\n };\n });\n }\n };\n TreeView.prototype.getFocusedItem = function () {\n return this.state.focusedItemId ? this.getItemById(this.state.focusedItemId) : undefined;\n };\n TreeView.prototype.getItemById = function (itemId) {\n return getItemById(itemId, this.data, this.props.childrenField || CHILDREN_FIELD);\n };\n TreeView.prototype.dispatchCheckChange = function (dispatchedEvent, item, itemId) {\n dispatchEvent(this.props.onCheckChange, dispatchedEvent, this, { item: item, itemHierarchicalIndex: itemId });\n };\n TreeView.prototype.dispatchExpandChange = function (dispatchedEvent, item, itemId) {\n dispatchEvent(this.props.onExpandChange, dispatchedEvent, this, { item: item, itemHierarchicalIndex: itemId });\n };\n TreeView.prototype.dispatchItemClick = function (dispatchedEvent, item, itemId) {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, { item: item, itemHierarchicalIndex: itemId });\n };\n TreeView.prototype.refocusDueToFocusIdField = function () {\n if (this.fieldsSvc && this.fieldsSvc.focusIdField) {\n var focusedItemPublicId = this.state.focusedItemPublicId;\n if (focusedItemPublicId) {\n var focusedItemId = this.props.getFocusHierarchicalIndex ?\n this.props.getFocusHierarchicalIndex(focusedItemPublicId) :\n resolveItemId(focusedItemPublicId, this.fieldsSvc.focusIdField, this.data, this.props.childrenField);\n if (focusedItemId !== this.state.focusedItemId) {\n this.allowExplicitFocus = true;\n this.setState({ focusedItemId: focusedItemId });\n }\n }\n }\n };\n Object.defineProperty(TreeView.prototype, \"ariaMultiSelectable\", {\n get: function () {\n return this.props['aria-multiselectable'] === true || this.props['aria-multiselectable'] === 'true';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeView.prototype, \"data\", {\n get: function () {\n return this.props.data || [];\n },\n enumerable: false,\n configurable: true\n });\n TreeView.prototype.focusDomItem = function (domItem) {\n domItem.focus();\n };\n Object.defineProperty(TreeView.prototype, \"guid\", {\n /**\n * Returns the `guid` which is associated with the TreeView.\n */\n get: function () {\n return this.treeGuid;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TreeView.propTypes = {\n data: PropTypes.arrayOf(PropTypes.any),\n animate: PropTypes.bool,\n tabIndex: PropTypes.number,\n focusIdField: PropTypes.string,\n getHierarchicalIndexById: PropTypes.func,\n onExpandChange: PropTypes.func,\n onItemClick: PropTypes.func,\n expandField: PropTypes.string,\n selectField: PropTypes.string,\n childrenField: PropTypes.string,\n hasChildrenField: PropTypes.string,\n textField: PropTypes.string,\n disableField: PropTypes.string,\n item: PropTypes.any,\n 'aria-multiselectable': function (props, propName, componentName) {\n if (props[propName] !== undefined\n && props[propName] !== true\n && props[propName] !== false\n && props[propName] !== 'true'\n && props[propName] !== 'false') {\n return new Error('Invalid prop `' + propName + '` supplied to' +\n ' `' + componentName + '`. Validation failed.');\n }\n return null;\n },\n 'aria-label': PropTypes.string,\n 'aria-labelledby': PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large'])\n };\n /**\n * @hidden\n */\n TreeView.defaultProps = {\n animate: true,\n expandField: EXPAND_FIELD,\n selectField: SELECT_FIELD,\n hasChildrenField: HAS_CHILDREN_FIELD,\n childrenField: CHILDREN_FIELD,\n textField: TEXT_FIELD,\n disableField: DISABLED_FIELD,\n checkField: CHECK_FIELD,\n checkIndeterminateField: CHECK_INDETERMINATE_FIELD,\n size: 'medium'\n };\n return TreeView;\n}(React.Component));\nexport { TreeView };\n","import { TreeView } from \"@progress/kendo-react-treeview\";\r\n\r\nfunction CustomTreeBranch(props) {\r\n const pageTypeToIconMap = {\r\n \"Entity Specific\": ,\r\n \"Entity Group\": ,\r\n \"Folder\": \r\n }\r\n\r\n function handleContextMenu(e) {\r\n props.handleContextMenu(e, props.item);\r\n };\r\n\r\n function getItemType() {\r\n return props.item.pageType || \"Folder\";\r\n }\r\n\r\n return (\r\n \r\n \r\n {pageTypeToIconMap[getItemType()]}\r\n \r\n  \r\n {props.item.text}\r\n \r\n );\r\n}\r\n\r\nfunction PagesTreeView(treeViewProps) {\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n )\r\n}\r\n\r\nexport default PagesTreeView;","const EntityGroupTemplates = [\r\n {\r\n text: \"Split View\",\r\n value: \"Split View\",\r\n pageTemplates: []\r\n },\r\n {\r\n text: \"Gantt Chart\",\r\n value: \"Gantt Chart\",\r\n pageTemplates: []\r\n },\r\n {\r\n text: \"Table\",\r\n value: \"Table\",\r\n pageTemplates: []\r\n },\r\n {\r\n text: \"Cards\",\r\n value: \"Cards\",\r\n pageTemplates: []\r\n },\r\n {\r\n text: \"Kanban\",\r\n value: \"Kanban\",\r\n pageTemplates: []\r\n },\r\n {\r\n text: \"Calendar\",\r\n value: \"Calendar\",\r\n pageTemplates: []\r\n },\r\n {\r\n text: \"List\",\r\n value: \"List\",\r\n pageTemplates: []\r\n },\r\n {\r\n text: \"Search\",\r\n value: \"Search\",\r\n pageTemplates: []\r\n },\r\n];\r\n\r\nconst EntitySpecificTemplates = [\r\n {\r\n text: \"Record Details\",\r\n value: \"Single Record\",\r\n pageTemplates: [\r\n \"Layout 1\", \"Layout 2\"\r\n ]\r\n },\r\n {\r\n text: \"New Record\",\r\n value: \"New Record\",\r\n pageTemplates: []\r\n },\r\n {\r\n text: \"Edit Record\",\r\n value: \"Edit Record\",\r\n pageTemplates: []\r\n },\r\n];\r\n\r\nconst LinkedRecordTemplates = [\r\n {\r\n text: \"Linked Record Reference\",\r\n value: \"Linked Record Reference\",\r\n pageTemplates: [\r\n \"Cards\", \"Table\", \"Calendar\", \"Gantt Chart\"\r\n ]\r\n },\r\n {\r\n text: \"Linked Record All Records Table\",\r\n value: \"Linked Record All Records\",\r\n pageTemplates: [\r\n \"Table\"\r\n ]\r\n },\r\n {\r\n text: \"Link Records\",\r\n value: \"Link Record Table\",\r\n pageTemplates: []\r\n },\r\n];\r\n\r\nconst PageDataTypes = [\r\n {\r\n text: \"Multiple Record\",\r\n value: \"Entity Group\",\r\n subPageTypes: EntityGroupTemplates,\r\n },\r\n {\r\n text: \"Single Record\",\r\n value: \"Entity Specific\",\r\n subPageTypes: EntitySpecificTemplates\r\n },\r\n {\r\n text: \"Linked Record\",\r\n value: \"Linked Record\",\r\n subPageTypes: LinkedRecordTemplates\r\n },\r\n];\r\n\r\nexport default PageDataTypes;","// React and libraries imports\r\nimport { useState, useRef, useMemo, useEffect } from \"react\";\r\n\r\n// Context and hooks imports\r\nimport usePages from \"../../../Hooks/Display/usePages\";\r\nimport { usePropsStoreState } from \"../../../Hooks/PropStore/usePropsStore\";\r\n// Components imports\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { ComboBox, DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\";\r\n\r\n// Util and other imports\r\nimport PageDataTypes from \"./PageTypes\";\r\nimport { checkDuplicatePageName, getFlatPages, getHighestPageOrder } from \"../utils\";\r\nimport { createPage } from \"../../../API/Display/Display\";\r\nimport { ADD_PAGE, TOGGLE_ADD_NEW_PAGE_DIALOG } from \"../../../Context/Display/Pages/PagesContextEvents\";\r\nimport { getPortals } from \"../../../API/Portal/Portal\";\r\n\r\nfunction NewPageDialog({\r\n onClose\r\n}) {\r\n\r\n const props = usePropsStoreState();\r\n const [{ pages }, dispatchPageEvent] = usePages();\r\n\r\n const [pageType, setPageType] = useState(PageDataTypes[0]);\r\n const [subPageType, setSubPageType] = useState(pageType.subPageTypes[0]);\r\n const [pageTemplate, setPageTemplate] = useState(\"\");\r\n const [pageName, setPageName] = useState(\"\");\r\n const [folder, setFolder] = useState(\"\");\r\n const [creatingPage, setCreatingPage] = useState(false);\r\n\r\n const allPages = useMemo(() => getFlatPages(pages), [pages])\r\n\r\n const createPageButton = useRef(null);\r\n\r\n const isPageNameUsed = checkDuplicatePageName(allPages, pageName);\r\n const pageNameHasSpecialCharacters = pageName.match(/[^a-zA-Z0-9 ]/g);\r\n\r\n function handleChange(event) {\r\n const { name, value } = event.target;\r\n debugger\r\n switch (name) {\r\n case \"Page Type\":\r\n setPageType(value);\r\n setSubPageType(value.subPageTypes[0]);\r\n if (value.value === \"Linked Record\") {\r\n setPageTemplate(value.subPageTypes[0].pageTemplates[0])\r\n } else {\r\n setPageTemplate(\"\");\r\n }\r\n break;\r\n case \"Sub Page Type\":\r\n setSubPageType(value);\r\n setPageTemplate(value.pageTemplates[0]);\r\n setPageName(value.text);\r\n break;\r\n case \"Page Template\":\r\n setPageTemplate(value);\r\n break;\r\n case \"Page Name\":\r\n setPageName(value);\r\n break;\r\n case \"Folder\":\r\n setFolder(value);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function isSubmitDisabled() {\r\n return (\r\n pageName.trim().length === 0 ||\r\n pageNameHasSpecialCharacters ||\r\n isPageNameUsed ||\r\n !folder ||\r\n !folder.id ||\r\n creatingPage ||\r\n (pageType.value === \"Linked Record Reference\" && !pageTemplate)\r\n )\r\n }\r\n\r\n async function handleSubmit(event) {\r\n event.preventDefault();\r\n debugger;\r\n\r\n const { entityId, projectId } = props;\r\n\r\n const properties = {\r\n pageType: pageType.value,\r\n subPageType: subPageType.value,\r\n pageTemplate: pageTemplate,\r\n pageName: pageName.trim(),\r\n useAsReference: subPageType.value.startsWith(\"Link\"),\r\n order: getHighestPageOrder(folder.items) + 10000000000,\r\n parentId: folder.id,\r\n portalId: folder.id,\r\n entityId,\r\n projectId\r\n }\r\n\r\n if (properties.pageType !== \"Entity Specific\") {\r\n properties.pageType = \"Entity Group\";\r\n\r\n if (properties.subPageType === \"Link Record Table\") {\r\n properties.subPageType = \"Link Record\";\r\n } else if (pageType.value === \"Linked Record\") {\r\n properties.useAsReference = true;\r\n properties.subPageType = properties.pageTemplate.trim();\r\n }\r\n\r\n if (\r\n properties.subPageType ===\r\n \"Linked Record All Records Table\"\r\n ) {\r\n properties.showsRecordDetails = true;\r\n }\r\n }\r\n const page = await createPage(entityId, properties);\r\n\r\n dispatchPageEvent({\r\n type: ADD_PAGE,\r\n payload: {\r\n id: page.pageId,\r\n ...properties,\r\n components: []\r\n }\r\n })\r\n\r\n resetProperties()\r\n\r\n closeDialog();\r\n }\r\n\r\n function resetProperties() {\r\n setPageType(PageDataTypes[0]);\r\n setSubPageType(pageType.subPageTypes[0]);\r\n setPageTemplate(\"\");\r\n setPageName(\"\");\r\n setFolder(\"\");\r\n setCreatingPage(false);\r\n }\r\n\r\n function closeDialog() {\r\n dispatchPageEvent({\r\n type: TOGGLE_ADD_NEW_PAGE_DIALOG\r\n });\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    Page Type
    \r\n \r\n
    \r\n
    \r\n
    Sub Page Type
    \r\n \r\n
    \r\n {subPageType.pageTemplates.length > 0 && (\r\n
    \r\n
    Page Template
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n Name\r\n {isPageNameUsed && This name is already in use}\r\n {pageNameHasSpecialCharacters && This name is not allowed}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Folder\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {creatingPage && (\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 Create\r\n \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default NewPageDialog;","// React import\r\nimport { useCallback, useEffect, useRef } from \"react\";\r\n\r\n// Context and hooks imports\r\nimport usePages from \"../../../Hooks/Display/usePages\";\r\n\r\n// Component imports\r\nimport { Popup } from \"@progress/kendo-react-popup\";\r\nimport { Menu, MenuItem } from \"@progress/kendo-react-layout\";\r\n\r\n// Events import\r\nimport { TOGGLE_CONTEXT_MENU, TOGGLE_DELETE_PAGE_DIALOG, TOGGLE_EDIT_PAGE_DIALOG } from \"../../../Context/Display/Pages/PagesContextEvents\";\r\n\r\nfunction ContextMenu() {\r\n\r\n const [{ showContextMenu, contextMenuOffset, contextMenuItemIndex }, dispatchPageEvent] = usePages();\r\n\r\n const popup = useRef(null);\r\n useEffect(() => {\r\n function checkOutsideClick(e) {\r\n if (popup.current !== null && !popup.current.contains(e.target)) {\r\n if (showContextMenu) {\r\n toggleContextMenu()\r\n }\r\n }\r\n }\r\n\r\n document.addEventListener(\"click\", checkOutsideClick);\r\n\r\n return () => {\r\n document.removeEventListener(\"click\", checkOutsideClick);\r\n }\r\n }, [showContextMenu])\r\n\r\n function showDeleteOption() {\r\n return true\r\n }\r\n\r\n function showCopyOption() {\r\n return true;\r\n }\r\n\r\n function handleEdit() {\r\n dispatchPageEvent({\r\n type: TOGGLE_EDIT_PAGE_DIALOG,\r\n payload: contextMenuItemIndex\r\n })\r\n }\r\n\r\n function handleDelete() {\r\n dispatchPageEvent({\r\n type: TOGGLE_DELETE_PAGE_DIALOG,\r\n payload: contextMenuItemIndex\r\n })\r\n }\r\n\r\n function handleCopy() {\r\n console.log(\"Copy\");\r\n }\r\n\r\n function handlePaste() {\r\n console.log(\"Paste\");\r\n }\r\n\r\n function handleMenuItemSelect(event) {\r\n switch(event.itemId) {\r\n case '0':\r\n handleEdit();\r\n break;\r\n case '1':\r\n handleDelete();\r\n break;\r\n case '2':\r\n handleCopy();\r\n break;\r\n case '3':\r\n handlePaste();\r\n break;\r\n default:\r\n break;\r\n }\r\n toggleContextMenu();\r\n }\r\n\r\n function toggleContextMenu() {\r\n dispatchPageEvent({\r\n type: TOGGLE_CONTEXT_MENU,\r\n payload: {}\r\n })\r\n }\r\n\r\n return (\r\n \r\n
    popup.current = menu}>\r\n \r\n \r\n {\r\n showDeleteOption() &&\r\n \r\n }\r\n {\r\n showCopyOption() ?\r\n : null\r\n }\r\n {\r\n showCopyOption() &&\r\n localStorage.getItem(\"copiedPageInformation\") !== null &&\r\n localStorage.getItem(\"copiedPageInformation\") !== \"\" ?\r\n : null\r\n }\r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default ContextMenu;","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport usePages from \"../../../Hooks/Display/usePages\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { TOGGLE_EDIT_PAGE_DIALOG, UPDATE_PAGE } from \"../../../Context/Display/Pages/PagesContextEvents\";\r\nimport { updatePage } from \"../../../API/Display/Display\";\r\nimport { getPageByProperty } from \"../utils\";\r\n\r\nfunction EditPageDialog() {\r\n\r\n const [{ pages, editPageIndex }, dispatchPageEvent] = usePages();\r\n\r\n const index = editPageIndex.split(\"_\").map(i => parseInt(i));\r\n const page = pages[index[0]].items[index[1]];\r\n\r\n const [pageName, setPageName] = useState(page.pageName);\r\n const [error, setError] = useState(null);\r\n\r\n useEffect(() => {\r\n if (isPageNameUsed()) {\r\n setError(\"Page name is already used.\");\r\n } else {\r\n setError(null);\r\n }\r\n }, [pageName])\r\n\r\n function handlePageNameChange(event) {\r\n setPageName(event.target.value);\r\n }\r\n\r\n function isPageNameUsed() {\r\n const pageWithSameName = getPageByProperty(pages, \"pageName\", pageName);\r\n debugger\r\n return pageWithSameName !== null && pageWithSameName._id !== page._id;\r\n }\r\n\r\n function handleCancel() {\r\n dispatchPageEvent({\r\n type: TOGGLE_EDIT_PAGE_DIALOG,\r\n payload: null\r\n })\r\n }\r\n\r\n async function handleUpdatePage() {\r\n await updatePage(page._id, { pageName });\r\n dispatchPageEvent({\r\n type: UPDATE_PAGE,\r\n payload: {\r\n parentId: page.parentId,\r\n pageId: page._id,\r\n pageName\r\n }\r\n })\r\n toggleEditDialog();\r\n }\r\n\r\n function toggleEditDialog() {\r\n dispatchPageEvent({\r\n type: TOGGLE_EDIT_PAGE_DIALOG,\r\n payload: null\r\n })\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 Cancel\r\n \r\n \r\n Update\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default EditPageDialog;","import { useEffect, useState } from \"react\";\r\nimport { DELETE_PAGE, SELECT_PAGE, TOGGLE_DELETE_PAGE_DIALOG } from \"../../../Context/Display/Pages/PagesContextEvents\";\r\nimport usePages from \"../../../Hooks/Display/usePages\";\r\nimport { deletePage } from \"../../Helpers/DisplayConfig/DisplayConfig\";\r\nimport RemoveDialog from \"../../Shared/Remove/RemoveDialog\";\r\n\r\nfunction DeletePageDialog() {\r\n\r\n const [{ pages, deletePageIndex }, dispatchPageEvent] = usePages();\r\n\r\n const [page, setPage] = useState({});\r\n\r\n useEffect(() => {\r\n if (!deletePageIndex) {\r\n setPage({});\r\n return;\r\n }\r\n debugger\r\n const pagePosition = deletePageIndex.split(\"_\").map(x => parseInt(x));\r\n const page = pages[pagePosition[0]].items[pagePosition[1]];\r\n setPage(page);\r\n }, [deletePageIndex])\r\n\r\n function toggleDeleteDialog() {\r\n dispatchPageEvent({\r\n type: TOGGLE_DELETE_PAGE_DIALOG\r\n })\r\n }\r\n\r\n async function handleDelete() {\r\n await deletePage(page._id || page.id);\r\n dispatchPageEvent({\r\n type: DELETE_PAGE,\r\n payload: {\r\n parentId: page.parentId,\r\n pageId: page._id\r\n }\r\n })\r\n const newPageIndex = deletePageIndex.split(\"_\")[0] + \"_\" + (deletePageIndex.split(\"_\")[1] - 1);\r\n\r\n dispatchPageEvent({\r\n type: SELECT_PAGE,\r\n payload: newPageIndex\r\n })\r\n\r\n toggleDeleteDialog();\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default DeletePageDialog;","import { DOM_KENDO_ITEM_ID_FIELD, DOM_KENDO_TREEVIEW_GUID_FIELD } from './utils/consts';\nvar DROPZONE_BOUNDARY_DELTA = 6;\n/**\n * A class which provides an API for analyzing the `drag` events\n * of the TreeView.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * dragClue;\n * state = { tree };\n *\n * render() {\n * return (\n *
    \n * \n * this.dragClue = dragClue} />\n *
    \n * );\n * }\n *\n * onItemDragOver = (event) => {\n * this.dragClue.show(event.pageY + 10, event.pageX, event.item.text, this.getClueClassName(event));\n * }\n * onItemDragEnd = (event) => {\n * this.dragClue.hide();\n * const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\n *\n * if (eventAnalyzer.isDropAllowed) {\n * const updatedTree = moveTreeViewItem(\n * event.itemHierarchicalIndex,\n * this.state.tree,\n * eventAnalyzer.getDropOperation(),\n * eventAnalyzer.destinationMeta.itemHierarchicalIndex,\n * );\n *\n * this.setState({ tree: updatedTree });\n * }\n * }\n * getClueClassName(event) {\n * const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\n * const itemIndex = eventAnalyzer.destinationMeta.itemHierarchicalIndex;\n *\n * if (eventAnalyzer.isDropAllowed) {\n * switch (eventAnalyzer.getDropOperation()) {\n * case 'child':\n * return 'k-i-plus';\n * case 'before':\n * return itemIndex === '0' || itemIndex.endsWith(`${SEPARATOR}0`) ?\n * 'k-i-insert-up' : 'k-i-insert-middle';\n * case 'after':\n * const siblings = getSiblings(itemIndex, this.state.tree);\n * const lastIndex = Number(itemIndex.split(SEPARATOR).pop());\n *\n * return lastIndex < siblings.length - 1 ? 'k-i-insert-middle' : 'k-i-insert-down';\n * default:\n * break;\n * }\n * }\n *\n * return 'k-i-cancel';\n * }\n * }\n *\n * function getSiblings(itemIndex, data) {\n * let result = data;\n *\n * const indices = itemIndex.split(SEPARATOR).map(index => Number(index));\n * for (let i = 0; i < indices.length - 1; i++) {\n * result = result[indices[i]].items;\n * }\n *\n * return result;\n * }\n *\n * const SEPARATOR = '_';\n * const tree = [{\n * text: 'Furniture', expanded: true, items: [\n * { text: 'Tables & Chairs', expanded: true },\n * { text: 'Sofas', expanded: true },\n * { text: 'Occasional Furniture', expanded: true }]\n * }, {\n * text: 'Decor', expanded: true, items: [\n * { text: 'Bed Linen', expanded: true },\n * { text: 'Curtains & Blinds', expanded: true },\n * { text: 'Carpets', expanded: true }]\n * }];\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar TreeViewDragAnalyzer = /** @class */ (function () {\n /**\n * @param event - The event that will be analyzed.\n */\n function TreeViewDragAnalyzer(event) {\n this.event = event;\n this.initialized = false;\n this.destItemId = '';\n this.destTreeViewGuid = '';\n this.itemId = event.itemHierarchicalIndex;\n this.treeViewGuid = event.target.guid;\n }\n /**\n * The method which initializes the analyzer.\n * Invoke the method before you call any other methods.\n *\n * @returns - The analyzer object of the `drag` event.\n */\n TreeViewDragAnalyzer.prototype.init = function () {\n if (!this.initialized) {\n this.setDestimationMeta(document.elementFromPoint(this.event.clientX, this.event.clientY));\n this.initialized = true;\n }\n return this;\n };\n Object.defineProperty(TreeViewDragAnalyzer.prototype, \"isDropAllowed\", {\n /**\n * Returns `true` if dropping is allowed. Otherwise, returns `false`.\n */\n get: function () {\n if (this.initialized && this.destItemId && this.destTreeViewGuid) {\n // Disallow circular references.\n return !((\"\".concat(this.destTreeViewGuid, \"_\").concat(this.destItemId, \"_\")).\n startsWith(\"\".concat(this.treeViewGuid, \"_\").concat(this.itemId, \"_\")));\n }\n else {\n return false;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewDragAnalyzer.prototype, \"destinationMeta\", {\n /**\n * Returns an object which contains:\n * * The `itemHierarchicalIndex` of the destination item (the item below the dragged item) and\n * * The `guid` of the destination TreeView (the TreeView which renders the destination item).\n */\n get: function () {\n return { itemHierarchicalIndex: this.destItemId, treeViewGuid: this.destTreeViewGuid };\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Returns the specific drop operation.\n *\n * @returns - The following values are returned:\n * * `before`—Indicates that the dragged item is positioned at the beginning of the destination item.\n * * `after`—Indicates that the dragged item is positioned at the end of the destination item.\n * * `child`—Indicates that the dragged item is positioned in the middle of the destination item.\n * * `undefined`—Indicates that dropping is not allowed.\n */\n TreeViewDragAnalyzer.prototype.getDropOperation = function () {\n if (this.initialized && this.isDropAllowed) {\n var _a = this.destDomNodeWithMeta.getBoundingClientRect(), top_1 = _a.top, height = _a.height;\n if (top_1 + height - this.event.clientY < DROPZONE_BOUNDARY_DELTA) {\n return 'after';\n }\n else if (this.event.clientY - top_1 < DROPZONE_BOUNDARY_DELTA) {\n return 'before';\n }\n else {\n return 'child';\n }\n }\n else {\n return undefined;\n }\n };\n TreeViewDragAnalyzer.prototype.setDestimationMeta = function (element) {\n var node = element;\n while (node && !node[DOM_KENDO_ITEM_ID_FIELD]) {\n node = node.parentNode;\n }\n if (node && node[DOM_KENDO_ITEM_ID_FIELD]) {\n this.destDomNodeWithMeta = node;\n this.destItemId = node[DOM_KENDO_ITEM_ID_FIELD];\n this.destTreeViewGuid = node[DOM_KENDO_TREEVIEW_GUID_FIELD];\n }\n };\n return TreeViewDragAnalyzer;\n}());\nexport { TreeViewDragAnalyzer };\n","import { addItem, removeItem } from './utils/itemUtils';\nimport { getDecrementedItemIdAfterRemoval, getItemById } from './utils/itemIdUtils';\nimport { CHILDREN_FIELD } from './utils/consts';\n/**\n * A helper function which moves a TreeView item in an immutable way.\n *\n * @param sourceItemHierarchicalIndex - The hierarchical index of the item that will be moved.\n * @param sourceData - The tree which contains the item that will be moved.\n * @param operation - The specific move operation.\n *\n * The available options are:\n * * `before`—Indicates that the source item will become the previous sibling of the target item.\n * * `after`—Indicates that the source item will become the next sibling of the target item.\n * * `child`—Indicates that the source item will become a child of the target item.\n * @param targetItemHierarchicalIndex - The hierarchical index of the item next to which the source item will be moved.\n * @param targetData - The tree which contains the target item.\n * If the argument is skipped, then the move operation will be executed within the same tree.\n * Setting the `sourceData` and `targetData` arguments to the same tree is also supported.\n * @param childrenField - The field that points to the dataItem sub items. Defaults to `items`.\n * @returns - The updated copies of the `sourceData` and `targetData` input arguments.\n * If `targetData` is not passed, then only the updated copy of the `sourceData` will be returned.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * dragClue;\n * state = { tree };\n *\n * render() {\n * return (\n *
    \n * \n * this.dragClue = dragClue} />\n *
    \n * );\n * }\n *\n * onItemDragOver = (event) => {\n * this.dragClue.show(event.pageY + 10, event.pageX, event.item.text, this.getClueClassName(event));\n * }\n * onItemDragEnd = (event) => {\n * this.dragClue.hide();\n * const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\n *\n * if (eventAnalyzer.isDropAllowed) {\n * const updatedTree = moveTreeViewItem(\n * event.itemHierarchicalIndex,\n * this.state.tree,\n * eventAnalyzer.getDropOperation(),\n * eventAnalyzer.destinationMeta.itemHierarchicalIndex,\n * );\n *\n * this.setState({ tree: updatedTree });\n * }\n * }\n * getClueClassName(event) {\n * const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\n * const itemIndex = eventAnalyzer.destinationMeta.itemHierarchicalIndex;\n *\n * if (eventAnalyzer.isDropAllowed) {\n * switch (eventAnalyzer.getDropOperation()) {\n * case 'child':\n * return 'k-i-plus';\n * case 'before':\n * return itemIndex === '0' || itemIndex.endsWith(`${SEPARATOR}0`) ?\n * 'k-i-insert-up' : 'k-i-insert-middle';\n * case 'after':\n * const siblings = getSiblings(itemIndex, this.state.tree);\n * const lastIndex = Number(itemIndex.split(SEPARATOR).pop());\n *\n * return lastIndex < siblings.length - 1 ? 'k-i-insert-middle' : 'k-i-insert-down';\n * default:\n * break;\n * }\n * }\n *\n * return 'k-i-cancel';\n * }\n * }\n *\n * function getSiblings(itemIndex, data) {\n * let result = data;\n *\n * const indices = itemIndex.split(SEPARATOR).map(index => Number(index));\n * for (let i = 0; i < indices.length - 1; i++) {\n * result = result[indices[i]].items;\n * }\n *\n * return result;\n * }\n *\n * const SEPARATOR = '_';\n * const tree = [{\n * text: 'Furniture', expanded: true, items: [\n * { text: 'Tables & Chairs', expanded: true },\n * { text: 'Sofas', expanded: true },\n * { text: 'Occasional Furniture', expanded: true }]\n * }, {\n * text: 'Decor', expanded: true, items: [\n * { text: 'Bed Linen', expanded: true },\n * { text: 'Curtains & Blinds', expanded: true },\n * { text: 'Carpets', expanded: true }]\n * }];\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport function moveTreeViewItem(sourceItemHierarchicalIndex, sourceData, operation, targetItemHierarchicalIndex, targetData, childrenField) {\n var subItemsField = childrenField || CHILDREN_FIELD;\n if (!validateInput()) {\n return prepareInputDataForReturn();\n }\n var sourceItem = getItemById(sourceItemHierarchicalIndex, sourceData, subItemsField);\n if (!sourceItem) {\n return prepareInputDataForReturn();\n }\n // The source and the target tree are the same.\n if (!targetData || targetData === sourceData) {\n if (!validateNoCircularReference()) {\n return prepareInputDataForReturn();\n }\n var updatedSourceData = removeItem(sourceItemHierarchicalIndex, subItemsField, sourceData);\n var resultData = addItem(sourceItem, operation, subItemsField, getDecrementedItemIdAfterRemoval(sourceItemHierarchicalIndex, targetItemHierarchicalIndex), updatedSourceData);\n // A simpler output is explicitly returned when the source and the target tree are\n // the same, that is, the targetData argument is skipped.\n return targetData ? { sourceData: resultData, targetData: resultData } : resultData;\n }\n else {\n var updatedSource = removeItem(sourceItemHierarchicalIndex, subItemsField, sourceData);\n var updatedTarget = addItem(sourceItem, operation, subItemsField, targetItemHierarchicalIndex, targetData);\n return { sourceData: updatedSource, targetData: updatedTarget };\n }\n function prepareInputDataForReturn() {\n return targetData ? { sourceData: sourceData, targetData: targetData } : sourceData;\n }\n function validateNoCircularReference() {\n return !\"\".concat(targetItemHierarchicalIndex, \"_\").startsWith(\"\".concat(sourceItemHierarchicalIndex, \"_\"));\n }\n function validateInput() {\n if (!sourceData || !sourceData.length ||\n !sourceItemHierarchicalIndex || !targetItemHierarchicalIndex) {\n return false;\n }\n if (targetData && !targetData.length) {\n // Dropping over an empty tree is not supported.\n return false;\n }\n // Validate that the target item exists.\n var data = !targetData || targetData === sourceData ? sourceData : targetData;\n if (!getItemById(targetItemHierarchicalIndex, data, subItemsField)) {\n return false;\n }\n return true;\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact TreeViewDragClue component which renders a clue when an item is dragged.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * dragClue;\n * state = { tree };\n *\n * render() {\n * return (\n *
    \n * \n * this.dragClue = dragClue} />\n *
    \n * );\n * }\n *\n * onItemDragOver = (event) => {\n * this.dragClue.show(event.pageY + 10, event.pageX, event.item.text, this.getClueClassName(event));\n * }\n * onItemDragEnd = (event) => {\n * this.dragClue.hide();\n * const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\n *\n * if (eventAnalyzer.isDropAllowed) {\n * const updatedTree = moveTreeViewItem(\n * event.itemHierarchicalIndex,\n * this.state.tree,\n * eventAnalyzer.getDropOperation(),\n * eventAnalyzer.destinationMeta.itemHierarchicalIndex,\n * );\n *\n * this.setState({ tree: updatedTree });\n * }\n * }\n * getClueClassName(event) {\n * const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\n * const itemIndex = eventAnalyzer.destinationMeta.itemHierarchicalIndex;\n *\n * if (eventAnalyzer.isDropAllowed) {\n * switch (eventAnalyzer.getDropOperation()) {\n * case 'child':\n * return 'k-i-plus';\n * case 'before':\n * return itemIndex === '0' || itemIndex.endsWith(`${SEPARATOR}0`) ?\n * 'k-i-insert-up' : 'k-i-insert-middle';\n * case 'after':\n * const siblings = getSiblings(itemIndex, this.state.tree);\n * const lastIndex = Number(itemIndex.split(SEPARATOR).pop());\n *\n * return lastIndex < siblings.length - 1 ? 'k-i-insert-middle' : 'k-i-insert-down';\n * default:\n * break;\n * }\n * }\n *\n * return 'k-i-cancel';\n * }\n * }\n *\n * function getSiblings(itemIndex, data) {\n * let result = data;\n *\n * const indices = itemIndex.split(SEPARATOR).map(index => Number(index));\n * for (let i = 0; i < indices.length - 1; i++) {\n * result = result[indices[i]].items;\n * }\n *\n * return result;\n * }\n *\n * const SEPARATOR = '_';\n * const tree = [{\n * text: 'Furniture', expanded: true, items: [\n * { text: 'Tables & Chairs', expanded: true },\n * { text: 'Sofas', expanded: true },\n * { text: 'Occasional Furniture', expanded: true }]\n * }, {\n * text: 'Decor', expanded: true, items: [\n * { text: 'Bed Linen', expanded: true },\n * { text: 'Curtains & Blinds', expanded: true },\n * { text: 'Carpets', expanded: true }]\n * }];\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar TreeViewDragClue = /** @class */ (function (_super) {\n __extends(TreeViewDragClue, _super);\n function TreeViewDragClue() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n visible: false,\n top: 0,\n left: 0,\n text: '',\n operationClassName: 'k-i-cancel'\n };\n return _this;\n }\n /**\n * @hidden\n */\n TreeViewDragClue.prototype.render = function () {\n var dynamicStyle = { top: this.state.top + 'px', left: this.state.left + 'px' };\n return this.state.visible && (React.createElement(\"div\", { className: \"k-header k-drag-clue\", style: __assign(__assign({}, this.props.style), dynamicStyle) },\n React.createElement(\"span\", { className: classNames('k-icon k-drag-status k-icon-with-modifier', this.state.operationClassName) },\n React.createElement(\"span\", { className: \"k-icon k-icon-modifier\" })),\n this.state.text));\n };\n /**\n * Displays the TreeViewDragClue component.\n *\n * @param top - The `top` CSS position of the component.\n * @param left - The `left` CSS position of the component.\n * @param text - The text of the component.\n * @param operationClassName - The CSS class name which is related to the specific drop operation.\n */\n TreeViewDragClue.prototype.show = function (top, left, text, operationClassName) {\n this.setState({ visible: true, top: top, left: left, text: text, operationClassName: operationClassName });\n };\n /**\n * Hides the TreeViewDragClue component.\n */\n TreeViewDragClue.prototype.hide = function () {\n this.setState({ visible: false });\n };\n /**\n * @hidden\n */\n TreeViewDragClue.defaultProps = { style: { display: 'block', position: 'absolute', zIndex: 20000, padding: '4px 6px' } };\n return TreeViewDragClue;\n}(React.PureComponent));\nexport { TreeViewDragClue };\n","import { TreeViewDragAnalyzer } from \"@progress/kendo-react-treeview\";\r\n\r\nconst SEPARATOR = \"_\";\r\n\r\nfunction getSiblings(itemIndex, data) {\r\n let result = data;\r\n\r\n const indices = itemIndex.split(SEPARATOR).map((index) => Number(index));\r\n\r\n for (let i = 0; i < indices.length - 1; i++) {\r\n result = result[indices[i]].items;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction getElement(itemIndex, data) {\r\n let result;\r\n\r\n const indices = itemIndex.split(SEPARATOR).map((index) => Number(index));\r\n\r\n for (let i = 0; i < indices.length; i++) {\r\n if (result === undefined) {\r\n result = data[indices[i]];\r\n } else {\r\n result = result.items[indices[i]];\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function getClassOfDragEvent(event, data) {\r\n const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\r\n const { itemHierarchicalIndex: positionIndex } = event;\r\n const { itemHierarchicalIndex: itemIndex } =\r\n eventAnalyzer.destinationMeta;\r\n\r\n if (eventAnalyzer.isDropAllowed) {\r\n const siblings = getSiblings(itemIndex, data);\r\n switch (eventAnalyzer.getDropOperation()) {\r\n case \"child\":\r\n return \"k-i-cancel\";\r\n case \"before\":\r\n if (positionIndex.length !== itemIndex.length) {\r\n return \"k-i-cancel\";\r\n }\r\n\r\n if (event.item.type === \"folder\" && itemIndex.length > 1) {\r\n return \"k-i-cancel\";\r\n }\r\n\r\n if (positionIndex.charAt(\"0\") !== itemIndex.charAt(\"0\")) {\r\n return \"k-i-cancel\";\r\n }\r\n\r\n return itemIndex === \"0\" ||\r\n itemIndex.endsWith(`${SEPARATOR}0`)\r\n ? \"k-i-insert-up\"\r\n : \"k-i-insert-middle\";\r\n case \"after\":\r\n if (positionIndex.charAt(0) !== itemIndex.charAt(0)) {\r\n return \"k-i-cancel\";\r\n }\r\n if (siblings !== undefined) {\r\n const lastIndex = Number(\r\n itemIndex.split(SEPARATOR).pop()\r\n );\r\n return lastIndex < siblings.length - 1\r\n ? \"k-i-insert-middle\"\r\n : \"k-i-insert-down\";\r\n } else {\r\n if (\r\n event.item.type === \"folder\" &&\r\n itemIndex.length > 1\r\n ) {\r\n return \"k-i-cancel\";\r\n }\r\n\r\n return \"k-i-insert-down\";\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return [\"k-i-cancel\", false];\r\n}\r\n\r\nexport function getOrderOfReorderedPages(event, data) {\r\n const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\r\n\r\n if (eventAnalyzer.isDropAllowed) {\r\n const { itemId, destItemId } = eventAnalyzer;\r\n const icon = getClassOfDragEvent(event, data);\r\n const droppedInOtherFolder = isDroppedInOtherFolder(\r\n itemId,\r\n destItemId\r\n );\r\n\r\n const targetFolderSiblings = getSiblings(\r\n destItemId,\r\n data\r\n );\r\n\r\n const targetTreeIndex = destItemId\r\n .split(SEPARATOR)\r\n .map((index) => Number(index));\r\n const targetIndex = targetTreeIndex[targetTreeIndex.length - 1];\r\n\r\n if (droppedInOtherFolder) {\r\n const target = getElement(destItemId, data);\r\n const dragged = getElement(itemId, data);\r\n return {\r\n target, dragged,\r\n droppedInOtherFolder: true,\r\n targetOrder: target.order, draggedOrder: dragged.order\r\n };\r\n } else if (icon !== \"k-i-cancel\") {\r\n const dropOperation = eventAnalyzer.getDropOperation();\r\n\r\n const target = getElement(destItemId, data);\r\n const dragged = getElement(itemId, data);\r\n\r\n const targetNextNeighbour =\r\n targetFolderSiblings[targetIndex + 1];\r\n const targetPrevNeighbour =\r\n targetFolderSiblings[targetIndex - 1];\r\n\r\n let order = 100000;\r\n let targetOrder = parseInt(target.order);\r\n let nextNeighbourOrder = parseInt(targetNextNeighbour?.order);\r\n let prevNeighourOrder = parseInt(targetPrevNeighbour?.order);\r\n\r\n if (dropOperation === \"before\") {\r\n if (targetIndex === 0) {\r\n order = target.order;\r\n if (targetNextNeighbour) {\r\n targetOrder = (targetOrder + nextNeighbourOrder) / 2;\r\n } else {\r\n targetOrder += 10000000000;\r\n }\r\n } else if (\r\n targetIndex ===\r\n targetFolderSiblings.length - 1\r\n ) {\r\n order = target.order;\r\n targetOrder += 10000000000;\r\n } else {\r\n order = (targetOrder + prevNeighourOrder) / 2;\r\n }\r\n } else {\r\n if (targetIndex === targetFolderSiblings.length - 1) {\r\n order = targetOrder + 10000000000;\r\n } else {\r\n order = (nextNeighbourOrder + targetOrder) / 2;\r\n }\r\n }\r\n\r\n targetOrder = String(targetOrder);\r\n order = String(order);\r\n\r\n return {\r\n target, dragged,\r\n droppedInOtherFolder: false,\r\n targetOrder, draggedOrder: order\r\n };\r\n }\r\n }\r\n}\r\n\r\nexport function isDroppedInOtherFolder(draggedId, targetId) {\r\n const draggedIndexes = draggedId.split(SEPARATOR);\r\n const targetIndexes = targetId.split(SEPARATOR);\r\n\r\n return draggedIndexes[0] !== targetIndexes[0];\r\n}","import { useEffect, useRef } from \"react\";\r\nimport usePages from \"../../Hooks/Display/usePages\";\r\nimport { getEntityPages, updatePage } from \"../../API/Display/Display\";\r\nimport * as pagesEvents from \"../../Context/Display/Pages/PagesContextEvents\";\r\nimport TreeView from \"./Pages/TreeView\";\r\nimport NewPageDialog from \"./Pages/NewPageDialog\";\r\nimport { usePropsStoreState } from \"../../Hooks/PropStore/usePropsStore\";\r\nimport ContextMenu from \"./Pages/ContextMenu\";\r\nimport EditPageDialog from \"./Pages/EditPageDialog\";\r\nimport DeletePageDialog from \"./Pages/DeletePageDialog\";\r\nimport { TreeViewDragAnalyzer, TreeViewDragClue, moveTreeViewItem } from \"@progress/kendo-react-treeview\";\r\nimport { getClassOfDragEvent, getOrderOfReorderedPages, isDroppedInOtherFolder } from \"./Pages/drag-drop\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { getPortals } from \"../../API/Portal/Portal\";\r\n\r\nfunction Pages() {\r\n\r\n const { projectId, entityId } = usePropsStoreState();\r\n\r\n const [state, dispatch] = usePages();\r\n\r\n const dragClue = useRef(null);\r\n\r\n useEffect(() => {\r\n getData()\r\n .then(data => {\r\n dispatch({\r\n type: pagesEvents.SET_PAGES,\r\n payload: data\r\n })\r\n })\r\n .catch(error => {\r\n debugger;\r\n })\r\n }, [])\r\n\r\n async function getData() {\r\n const portals = await getPortals(projectId);\r\n const pages = await getEntityPages(entityId);\r\n const data = [];\r\n debugger;\r\n for (const portal of portals) {\r\n const portalData = {\r\n id: portal._id,\r\n folderName: portal.portalName,\r\n type: \"folder\",\r\n expanded: true,\r\n pages: pages.data.filter(page => page.portalId === portal._id)\r\n }\r\n data.push(portalData);\r\n }\r\n return data\r\n }\r\n\r\n function selectPage(event) {\r\n if (event.item.type !== \"folder\") {\r\n dispatch({\r\n type: pagesEvents.SELECT_PAGE,\r\n payload: event.item.treeIndex\r\n })\r\n }\r\n }\r\n\r\n function toggleAddNewPageDialog() {\r\n dispatch({\r\n type: pagesEvents.TOGGLE_ADD_NEW_PAGE_DIALOG\r\n })\r\n }\r\n\r\n function toggleContextMenu(event, item) {\r\n if (event.type === \"contextmenu\") {\r\n event.preventDefault();\r\n dispatch({\r\n type: pagesEvents.TOGGLE_CONTEXT_MENU,\r\n payload: { \r\n offset: { left: event.clientX, top: event.clientY },\r\n index: item.treeIndex\r\n }\r\n })\r\n }\r\n }\r\n\r\n function handleDragOver(event) {\r\n const icon = getClassOfDragEvent(event, state.pages);\r\n dragClue.children.show(\r\n event.pageY - 180,\r\n event.pageX - 240,\r\n event.item.text,\r\n icon\r\n )\r\n }\r\n\r\n function handleDragEnd(event) {\r\n dragClue.children.hide();\r\n const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\r\n const droppedInOtherFolder = eventAnalyzer.isDropAllowed && isDroppedInOtherFolder(\r\n eventAnalyzer.itemId, eventAnalyzer.destItemId\r\n )\r\n if (\r\n eventAnalyzer.isDropAllowed &&\r\n eventAnalyzer.getDropOperation() !== \"child\" && !droppedInOtherFolder\r\n ) {\r\n const details = getOrderOfReorderedPages(event, state.pages);\r\n updatePage(details.target._id, { order: details.targetOrder });\r\n updatePage(details.dragged._id, { order: details.draggedOrder });\r\n const reorderedTree = moveTreeViewItem(\r\n event.itemHierarchicalIndex,\r\n state.pages,\r\n eventAnalyzer.getDropOperation(),\r\n eventAnalyzer.destinationMeta.itemHierarchicalIndex\r\n );\r\n dispatch({\r\n type: pagesEvents.REORDER_PAGE,\r\n payload: reorderedTree\r\n })\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    Pages
    \r\n \r\n
    \r\n {\r\n state.showAddNewPageDialog &&\r\n \r\n }\r\n {\r\n state.showEditPageDialog &&\r\n \r\n }\r\n {\r\n state.showDeletePageDialog &&\r\n \r\n }\r\n
    \r\n \r\n {\r\n state.pages && state.pages.length > 0 &&\r\n
    \r\n \r\n \r\n {\r\n dragClue.children = clue\r\n }} />\r\n \r\n
    \r\n }\r\n
    \r\n )\r\n}\r\n\r\nexport default Pages;","import { TreeView } from \"@progress/kendo-react-treeview\";\r\n\r\nfunction CustomTreeBranch(props) {\r\n function getIcon() {\r\n const icons = {\r\n \"Split Section\": \"far fa-send-backward\",\r\n \"Stacked Section\": \"far fa-layer-group\",\r\n \"Split View\": \"far fa-columns\",\r\n Heading: \"far fa-heading\",\r\n List: \"far fa-list-ul\",\r\n Kanban: \"fa-duotone fa-grid\",\r\n Cards: \"far fa-credit-card-blank\",\r\n Table: \"far fa-table\",\r\n Calendar: \"far fa-calendar\",\r\n \"Gantt Chart\": \"far fa-stream\",\r\n \"Tab Container\": \"far fa-box\",\r\n Tab: \"far fa-box\",\r\n Summary: \"far fa-clipboard\",\r\n Content: \"far fa-image\",\r\n View: \"far fa-file-spreadsheet\",\r\n Form: \"far fa-address-card\",\r\n \"Progress Bar\": \"far fa-battery-half\",\r\n Reference: \"far fa-retweet\",\r\n History: \"far fa-history\",\r\n Discussion: \"far fa-comments\",\r\n };\r\n\r\n return icons[props.item.componentType] || \"far fa-list-alt\";\r\n };\r\n\r\n function handleContextMenu(e) {\r\n props.handleContextMenu(e, props.item);\r\n };\r\n\r\n return (\r\n \r\n {props.item.componentType === \"Stacked Section\" ||\r\n props.item.componentType === \"Split Section\" ||\r\n props.item.componentType === \"Tab Container\" ||\r\n props.item.componentType === \"Tab\" ? (\r\n \r\n props.showAddSubItem(event, props.item)\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 {props.item.hidden ? (\r\n {props.item.text}\r\n ) : (\r\n {props.item.text}\r\n )}\r\n \r\n );\r\n}\r\n\r\nfunction ComponentsTreeView(treeViewProps) {\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n )\r\n}\r\n\r\nexport default ComponentsTreeView;","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport usePages, { useSelectedPage, useUpdatePageProperties } from \"../../../Hooks/Display/usePages\";\r\nimport { getPageFromPages } from \"../utils\";\r\nimport { allowedComponentTypes, getComponentByProperty } from \"./utils\";\r\nimport { createComponent } from \"../../../API/Display/Display\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport useComponents from \"../../../Hooks/Display/useComponents\";\r\nimport { ADD_COMPONENTS, SET_SELECTED_COMPONENT, TOGGLE_ADD_COMPONENT_DIALOG } from \"../../../Context/Display/Components/ComponentsContextEvents\";\r\nimport { ADD_COMPONENT_TO_PAGE } from \"../../../Context/Display/Pages/PagesContextEvents\";\r\n\r\nfunction NewComponentDialog() {\r\n\r\n // hooks\r\n const [{ components, newComponentParentId }, dispatch] = useComponents();\r\n const [, pageDispatch] = usePages();\r\n const entityName = usePropsStoreValue(\"entityName\");\r\n\r\n // refs\r\n const createComponentButton = useRef(null);\r\n\r\n // variables\r\n const selectedPage = useSelectedPage();\r\n\r\n // form fields\r\n const [componentName, setComponentName] = useState(\"\");\r\n const [componentType, setComponentType] = useState(\"\");\r\n const [allowedComponents, setAllowedComponents] = useState([]);\r\n\r\n // form validation\r\n const [componentWithSameTypeExists, setComponentWithSameTypeExists] = useState(false);\r\n const [disabledComponentType, setDisabledComponentType] = useState(false);\r\n const [nameExists, setNameExists] = useState(false);\r\n const [nameHasSpChars, setNameHasSpChars] = useState(false);\r\n\r\n useEffect(() => {\r\n let allowedTypes = [];\r\n if (newComponentParentId === selectedPage._id) {\r\n if (selectedPage.subPageType === \"Single Record\") {\r\n allowedTypes = allowedComponentTypes[selectedPage.subPageType].filter(type => type !== \"Tab\");\r\n } else {\r\n allowedTypes = allowedComponentTypes[selectedPage.subPageType]\r\n }\r\n } else {\r\n const parentComponent = getComponentByProperty(components, \"id\", newComponentParentId);\r\n switch (parentComponent.componentType) {\r\n case \"Tab Container\":\r\n allowedTypes = [\"Tab\"];\r\n break;\r\n case \"Split Section\":\r\n allowedTypes = [\"Stacked Section\"];\r\n break;\r\n default:\r\n if (selectedPage.subPageType === \"Single Record\") {\r\n allowedTypes = allowedComponentTypes[selectedPage.subPageType].filter(type => type !== \"Tab\");\r\n } else {\r\n allowedTypes = allowedComponentTypes[selectedPage.subPageType];\r\n }\r\n break;\r\n }\r\n }\r\n setAllowedComponents(allowedTypes);\r\n setComponentName(allowedTypes[0]);\r\n setComponentType(allowedTypes[0]);\r\n }, [])\r\n\r\n function handleComponentName(event) {\r\n setComponentName(event.target.value);\r\n }\r\n\r\n function handleComponentType(event) {\r\n setComponentType(event.target.value);\r\n setComponentName(event.target.value)\r\n }\r\n\r\n function closeAddComponentDialog() {\r\n dispatch({\r\n type: TOGGLE_ADD_COMPONENT_DIALOG\r\n })\r\n }\r\n\r\n async function createNewComponent(event) {\r\n try {\r\n event.target.disabled = true;\r\n const properties = {\r\n componentName, componentType\r\n };\r\n const pageId = selectedPage._id || selectedPage.id;\r\n const component = await createComponent(\r\n pageId, newComponentParentId, entityName, properties\r\n )\r\n dispatch({\r\n type: ADD_COMPONENTS,\r\n payload: component\r\n })\r\n dispatch({\r\n type: TOGGLE_ADD_COMPONENT_DIALOG\r\n })\r\n pageDispatch({\r\n type: ADD_COMPONENT_TO_PAGE,\r\n payload: {\r\n parentId: selectedPage.parentId,\r\n pageId: selectedPage._id,\r\n component: component\r\n }\r\n })\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n\r\n function addComponentToParent(parentId, component, components = selectedPage.components) {\r\n if (parentId === selectedPage._id) {\r\n components.push(component);\r\n return;\r\n }\r\n for (let i = 0; i < components.length; i++) {\r\n if (components[i].id === parentId) {\r\n if (!components[i].children) {\r\n components[i].children = [];\r\n }\r\n components[i].children.push(component);\r\n break;\r\n }\r\n addComponentToParent(parentId, component, components[i].components)\r\n }\r\n }\r\n\r\n return (\r\n dispatch({ type: TOGGLE_ADD_COMPONENT_DIALOG })}\r\n >\r\n
    \r\n
    \r\n Type\r\n
    \r\n {componentWithSameTypeExists && (\r\n \r\n Component with that type already exist\r\n \r\n )}\r\n \r\n\r\n
    \r\n
    Name
    \r\n {nameExists && (\r\n \r\n Component with that name already exist\r\n \r\n )}\r\n {nameHasSpChars && (\r\n \r\n Component cannot have speical characters\r\n \r\n )}\r\n
    \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n Create\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default NewComponentDialog;","// React import\r\nimport { useEffect, useRef } from \"react\";\r\n\r\n// Context and hooks imports\r\nimport useComponents from \"../../../Hooks/Display/useComponents\";\r\n\r\n// Component imports\r\nimport { Popup } from \"@progress/kendo-react-popup\";\r\nimport { Menu, MenuItem } from \"@progress/kendo-react-layout\";\r\n\r\n// Events import\r\nimport { TOGGLE_CONTEXT_MENU, TOGGLE_DELETE_COMPONENT_DIALOG } from \"../../../Context/Display/Components/ComponentsContextEvents\";\r\n\r\nfunction ContextMenu() {\r\n\r\n const [{ showContextMenu, contextMenuOffset, contextMenuItemIndex }, dispatchPageEvent] = useComponents();\r\n\r\n const popup = useRef(null);\r\n useEffect(() => {\r\n document.addEventListener(\"click\", checkOutsideClick);\r\n\r\n return () => {\r\n document.removeEventListener(\"click\", checkOutsideClick);\r\n }\r\n }, [showContextMenu])\r\n\r\n function checkOutsideClick(e) {\r\n if (popup.current !== null && !popup.current.contains(e.target)) {\r\n if (showContextMenu) {\r\n toggleContextMenu()\r\n }\r\n }\r\n };\r\n\r\n function showDeleteOption() {\r\n return true\r\n }\r\n\r\n function showCopyOption() {\r\n return true;\r\n }\r\n\r\n function showResetOption() {\r\n return true;\r\n }\r\n\r\n function handleEdit() {\r\n dispatchPageEvent({\r\n type: \"TOGGLE_EDIT_PAGE_DIALOG\",\r\n payload: contextMenuItemIndex\r\n })\r\n }\r\n\r\n function handleDelete() {\r\n dispatchPageEvent({\r\n type: TOGGLE_DELETE_COMPONENT_DIALOG,\r\n payload: contextMenuItemIndex\r\n })\r\n }\r\n\r\n function handleCopy() {\r\n console.log(\"Copy\");\r\n }\r\n\r\n function handlePaste() {\r\n console.log(\"Paste\");\r\n }\r\n\r\n function handleMenuItemSelect(event) {\r\n switch(event.itemId) {\r\n case '0':\r\n showDeleteOption() ? handleDelete() : handleEdit();\r\n break;\r\n case '1':\r\n handleCopy();\r\n break;\r\n case '2':\r\n handlePaste();\r\n break;\r\n default:\r\n break;\r\n }\r\n toggleContextMenu();\r\n }\r\n\r\n function toggleContextMenu() {\r\n dispatchPageEvent({\r\n type: TOGGLE_CONTEXT_MENU,\r\n payload: {}\r\n })\r\n }\r\n\r\n return (\r\n \r\n
    popup.current = menu}>\r\n \r\n {\r\n showDeleteOption() &&\r\n \r\n }\r\n {\r\n showResetOption() &&\r\n \r\n }\r\n {\r\n showCopyOption() ?\r\n : null\r\n }\r\n {\r\n showCopyOption() &&\r\n localStorage.getItem(\"copiedPageInformation\") !== null &&\r\n localStorage.getItem(\"copiedPageInformation\") !== \"\" ?\r\n : null\r\n }\r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default ContextMenu;","import { useEffect, useState } from \"react\";\r\nimport { DELETE_COMPONENT, TOGGLE_DELETE_COMPONENT_DIALOG } from \"../../../Context/Display/Components/ComponentsContextEvents\";\r\nimport RemoveDialog from \"../../Shared/Remove/RemoveDialog\";\r\nimport useComponents from \"../../../Hooks/Display/useComponents\";\r\nimport { deleteComponent } from \"../../../API/Display/Display\";\r\nimport usePages, { useSelectedPage } from \"../../../Hooks/Display/usePages\";\r\nimport { getPageFromPages } from \"../utils\";\r\nimport { getComponentByProperty } from \"./utils\";\r\n\r\nfunction DeleteComponentDialog() {\r\n\r\n const [{ components, deletedComponentIndex }, dispatchComponentEvent] = useComponents();\r\n const [, dispatchPageEvent] = usePages();\r\n\r\n const [component, setComponent] = useState({});\r\n\r\n const selectedPage = useSelectedPage();\r\n\r\n useEffect(() => {\r\n if (!deletedComponentIndex) {\r\n setComponent({});\r\n return;\r\n }\r\n const component = getComponentByProperty(components, \"treeIndex\", deletedComponentIndex);\r\n setComponent(component);\r\n }, [deletedComponentIndex])\r\n\r\n function toggleDeleteDialog() {\r\n dispatchComponentEvent({\r\n type: TOGGLE_DELETE_COMPONENT_DIALOG\r\n })\r\n }\r\n\r\n async function handleDelete() {\r\n await deleteComponent(selectedPage._id, component.id);\r\n dispatchComponentEvent({\r\n type: \"DELETE_COMPONENT\",\r\n payload: component.treeIndex\r\n })\r\n toggleDeleteDialog();\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default DeleteComponentDialog;","import { useEffect, useState } from \"react\";\r\nimport { DELETE_COMPONENT, TOGGLE_DELETE_COMPONENT_DIALOG, TOGGLE_RESET_COMPONENT_DIALOG } from \"../../../Context/Display/Components/ComponentsContextEvents\";\r\nimport RemoveDialog from \"../../Shared/Remove/RemoveDialog\";\r\nimport useComponents, { useSelectedComponent } from \"../../../Hooks/Display/useComponents\";\r\nimport { createComponent, deleteComponent, resetComponent } from \"../../../API/Display/Display\";\r\nimport usePages, { useUpdatePageComponent } from \"../../../Hooks/Display/usePages\";\r\nimport { getPageFromPages } from \"../utils\";\r\nimport { getComponentByProperty } from \"./utils\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\n\r\nfunction ResetComponentDialog() {\r\n\r\n const [{ pages, selectedPageIndex }] = usePages();\r\n const [{ components, selectedComponentIndex }, dispatchComponentEvent] = useComponents();\r\n\r\n const [component, setComponent] = useState({});\r\n\r\n const entityName = usePropsStoreValue(\"entityName\");\r\n const selectedPage = getPageFromPages(pages, selectedPageIndex);\r\n const updatePageComponent = useUpdatePageComponent(selectedPage.parentId, selectedPage._id);\r\n\r\n useEffect(() => {\r\n if (!selectedComponentIndex) {\r\n setComponent({});\r\n return;\r\n }\r\n const component = getComponentByProperty(components, \"treeIndex\", selectedComponentIndex);\r\n setComponent(component);\r\n }, [selectedComponentIndex])\r\n\r\n function toggleResetDialog() {\r\n dispatchComponentEvent({\r\n type: TOGGLE_RESET_COMPONENT_DIALOG\r\n })\r\n }\r\n\r\n async function handleReset() {\r\n debugger;\r\n const { data: newComponent } = await resetComponent(selectedPage._id, component.id, entityName);\r\n updatePageComponent(component.id, newComponent);\r\n toggleResetDialog();\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default ResetComponentDialog;","// Context and hooks imports\r\nimport { useEffect, useRef } from \"react\";\r\nimport { useSelectedPage, useUpdatePageComponent, useUpdatePageProperties } from \"../../Hooks/Display/usePages\";\r\nimport useComponents, { useSelectedComponent } from \"../../Hooks/Display/useComponents\";\r\n\r\n// Events imports\r\nimport { SET_COMPONENTS, SET_SELECTED_COMPONENT, TOGGLE_ADD_COMPONENT_DIALOG, TOGGLE_CONTEXT_MENU, TOGGLE_EXPAND } from \"../../Context/Display/Components/ComponentsContextEvents\";\r\n\r\n// Components Imports\r\nimport ComponentsTreeView from \"./Components/TreeView\";\r\nimport NewComponentDialog from \"./Components/NewComponentDialog\";\r\nimport ContextMenu from \"./Components/ContextMenu\";\r\nimport DeleteComponentDialog from \"./Components/DeleteComponentDialog\";\r\nimport { TreeViewDragAnalyzer, TreeViewDragClue, moveTreeViewItem } from \"@progress/kendo-react-treeview\";\r\nimport { updatePage } from \"../../API/Display/Display\";\r\nimport { useChangeBooleans, useSaveComponent } from \"../../Hooks/Display/useComponentProperties\";\r\nimport useConfirmationDialog from \"../Shared/ConfirmationWithContext/useConfirmationDialog\";\r\nimport ResetComponentDialog from \"./Components/ResetComponentDialog\";\r\n\r\nfunction Components() {\r\n\r\n const selectedPage = useSelectedPage();\r\n const selectedComponent = useSelectedComponent();\r\n\r\n const [state, dispatch] = useComponents();\r\n const dragClue = useRef(null);\r\n const [{\r\n isGeneralPropertiesChanged,\r\n isAttributeFormBuilderChanged,\r\n isActionTableChanged,\r\n isAttributeTableChanged,\r\n isReferenceTableChanged\r\n }] = useChangeBooleans();\r\n const [showConfirmationDialog, closeConfirmationDialog] = useConfirmationDialog();\r\n\r\n const saveComponent = useSaveComponent();\r\n const updatePageComponent = useUpdatePageComponent(selectedPage?.parentId, selectedPage?._id);\r\n const updatePageProperties = useUpdatePageProperties()\r\n\r\n useEffect(() => {\r\n if (selectedPage && selectedPage.components) {\r\n dispatch({ type: SET_COMPONENTS, payload: selectedPage.components });\r\n // different page is selected, so we need to reset the selected component\r\n // this was done because when we use save and continue, it would detect page change\r\n // and reset selected component index to 0\r\n if (selectedPage && selectedComponent && selectedPage._id !== selectedComponent.pageId) {\r\n dispatch({ type: SET_SELECTED_COMPONENT, payload: \"0\" });\r\n }\r\n } else if (!selectedPage || !selectedPage.components) {\r\n dispatch({ type: SET_COMPONENTS, payload: [] })\r\n dispatch({ type: SET_SELECTED_COMPONENT, payload: \"0\" });\r\n }\r\n }, [selectedPage])\r\n\r\n function handleNewComponentClick(event, selectedItem) {\r\n dispatch({\r\n type: TOGGLE_ADD_COMPONENT_DIALOG,\r\n payload: {\r\n parentId: selectedItem ? selectedItem.id : (selectedPage._id || selectedPage.id)\r\n }\r\n });\r\n }\r\n\r\n function handleExpandChange(event) {\r\n dispatch({\r\n type: TOGGLE_EXPAND,\r\n payload: event.item.treeIndex\r\n })\r\n }\r\n\r\n function toggleContextMenu(event, item) {\r\n event.preventDefault();\r\n if (item) {\r\n dispatch({\r\n type: TOGGLE_CONTEXT_MENU,\r\n payload: {\r\n offset: { left: event.clientX, top: event.clientY },\r\n index: item.treeIndex\r\n }\r\n })\r\n }\r\n }\r\n\r\n function handleDragOver(event) {\r\n const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\r\n // const icon = getClueClassName(eventAnalyzer, state.components);\r\n dragClue.children.show(\r\n event.pageY - 180,\r\n event.pageX - 240,\r\n event.item.text\r\n )\r\n }\r\n\r\n function handleDragEnd(event) {\r\n dragClue.children.hide();\r\n const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\r\n if (eventAnalyzer.isDropAllowed) {\r\n const reorderedTree = moveTreeViewItem(\r\n event.itemHierarchicalIndex,\r\n state.components,\r\n eventAnalyzer.getDropOperation(),\r\n eventAnalyzer.destinationMeta.itemHierarchicalIndex,\r\n null,\r\n \"children\"\r\n );\r\n updatePage(selectedPage._id, { components: reorderedTree });\r\n updatePageProperties(selectedPage.parentId, selectedPage._id, { components: reorderedTree })\r\n }\r\n }\r\n\r\n async function handleSelect(event) {\r\n let shouldContinue = true;\r\n if (isGeneralPropertiesChanged || isAttributeFormBuilderChanged || isActionTableChanged || isAttributeTableChanged || isReferenceTableChanged) {\r\n shouldContinue = await showConfirmationDialog({\r\n title: \"Unsaved Changes\",\r\n content: \"You can save the changes made to this component. Then once you update the page, the changes made to all components of this change will be updated.\",\r\n confirmButtonText: \"Save\",\r\n cancelButtonText: \"Don't Save\",\r\n onConfirm: handleSaveAndContinue\r\n });\r\n closeConfirmationDialog();\r\n }\r\n if (shouldContinue) {\r\n dispatch({\r\n type: SET_SELECTED_COMPONENT,\r\n payload: event.item.treeIndex\r\n })\r\n }\r\n }\r\n\r\n async function handleSaveAndContinue() {\r\n const updatedComponent = await saveComponent();\r\n updatePageComponent(selectedComponent.id, updatedComponent);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    Components
    \r\n \r\n
    \r\n {\r\n state.showAddComponentDialog &&\r\n \r\n }\r\n {\r\n state.showDeleteComponentDialog &&\r\n \r\n }\r\n {\r\n state.showResetComponentDialog &&\r\n \r\n }\r\n \r\n \r\n dragClue.children = clue} />\r\n
    \r\n )\r\n}\r\n\r\nexport default Components;","/**\n * @hidden\n */\nexport var ResultType;\n(function (ResultType) {\n ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\n ResultType[ResultType[\"Undefined\"] = 2] = \"Undefined\";\n})(ResultType || (ResultType = {}));\n/**\n * @hidden\n */\nvar Result = /** @class */ (function () {\n function Result(value, rest, type) {\n if (type === void 0) { type = ResultType.Undefined; }\n this.value = value;\n this.rest = rest;\n this.type = type;\n }\n // map :: Functor f => f a ~> (a -> b) -> f b\n Result.prototype.map = function (fn) {\n return new Result(fn(this.value), this.rest);\n };\n // chain :: Chain m => m a ~> (a -> m b) -> m b\n Result.prototype.chain = function (fn) {\n return fn(this.value, this.rest);\n };\n Result.prototype.fold = function (s, _ /* we don't need it*/) {\n return s(this.value, this.rest);\n };\n Result.prototype.concat = function (r) {\n return this.map(function (vs, _) { return r.chain(function (v, __) { return vs.concat([v]); }); });\n };\n Result.prototype.toString = function () {\n return \"Result({ value: '\".concat(this.value, \"', rest: \").concat(this.rest, \" })\");\n };\n return Result;\n}());\nexport { Result };\n","import React, { Component } from \"react\";\r\nimport \"./style.css\";\r\nimport Pages from \"./Pages\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport ServerError from \"../Shared/Error/ServerError\";\r\nimport Components from \"./Components.jsx\";\r\nimport { ComponentsContextProvider } from \"../../Context/Display/Components/ComponentsContext\";\r\nimport EditComponentForm from \"./EditComponentForm/EditComponent\";\r\nimport { ConfirmationContextProvider } from \"../Shared/ConfirmationWithContext/ConfirmationContext\";\r\nimport { ComponentPropertiesProvider } from \"../../Context/Display/ComponentProperties/ComponentPropertiesContext\";\r\n\r\nclass DisplayComponents extends Component {\r\n render() {\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\nexport default DisplayComponents;\r\n","/**\n * @hidden\n */\nvar Stream = /** @class */ (function () {\n function Stream(input, control) {\n if (input === void 0) { input = []; }\n if (control === void 0) { control = []; }\n this.input = input;\n this.control = control;\n this.inputCursor = 0;\n this.controlCursor = 0;\n }\n Stream.prototype.eof = function () {\n return this.inputCursor >= this.input.length;\n };\n // Get the first value from the input.\n Stream.prototype.next = function () {\n return {\n char: this.input[this.inputCursor++],\n control: this.control[this.controlCursor++]\n };\n };\n Stream.prototype.peek = function () {\n return {\n char: this.input[this.inputCursor],\n control: this.control[this.controlCursor]\n };\n };\n Stream.prototype.eat_input = function () {\n this.inputCursor++;\n };\n Stream.prototype.eat_control = function () {\n this.controlCursor++;\n };\n Stream.prototype.eat = function () {\n this.inputCursor++;\n this.controlCursor++;\n };\n return Stream;\n}());\nexport { Stream };\n","import { Result, ResultType } from './result';\nimport { Stream } from './stream';\nvar toArray = function (value) { return (value || '').split(''); };\nvar ESCAPE_CHARACTER = '\\\\';\n/**\n * @hidden\n */\nvar Parser = /** @class */ (function () {\n function Parser(parse) {\n this.parse = parse;\n }\n Parser.prototype.run = function (input, control) {\n if (control === void 0) { control = ''; }\n if (input instanceof Stream) {\n return this.parse(input);\n }\n else {\n return this.parse(new Stream(toArray(input), toArray(control)));\n }\n };\n // map :: Functor f => f a ~> (a -> b) -> f b\n Parser.prototype.map = function (f) {\n var _this = this;\n return new Parser(function (stream) { return _this.parse(stream).map(f); });\n };\n // chain :: Chain m => m a ~> (a -> m b) -> m b\n Parser.prototype.chain = function (f) {\n var _this = this;\n return new Parser(function (stream) { return _this.parse(stream).chain(function (v, s) { return f(v).run(s); }); });\n };\n Parser.prototype.isLiteral = function (c) {\n return this.run(c).type === ResultType.Literal;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * @hidden\n */\nexport var mask = function (args) { return function (rule) { return new Parser(function (stream) {\n var prompt = args.prompt, promptPlaceholder = args.promptPlaceholder;\n while (!stream.eof()) {\n var _a = stream.peek(), char = _a.char, control = _a.control;\n if (char === control && control === prompt) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream, ResultType.Mask);\n }\n if (char === promptPlaceholder) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n}); }; };\n/**\n * @hidden\n */\nexport var literal = function (_token) { return new Parser(function (stream) {\n // let {char, control} = stream.peek();\n var char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n return new Result(_token, stream, ResultType.Literal);\n }\n // if (control === _token) {\n // while (!stream.eof() && char !== _token) {\n // stream.eat_input();\n // char = stream.peek().char;\n // }\n // }\n //\n // if (control !== undefined) {\n // stream.eat();\n // }\n return new Result(_token, stream, ResultType.Literal);\n}); };\n/**\n * @hidden\n */\nexport var unmask = function (prompt) { return function (rule) { return new Parser(function (stream) {\n while (!stream.eof()) {\n var _a = stream.peek(), char = _a.char, control = _a.control;\n if (char === prompt && control === prompt) {\n stream.eat();\n return new Result(char, stream);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result('', stream);\n}); }; };\n/**\n * @hidden\n */\nexport var unliteral = function (_token) { return new Parser(function (stream) {\n if (stream.eof()) {\n return new Result('', stream);\n }\n var char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n }\n return new Result(_token, stream);\n}); };\n/**\n * @hidden\n */\nexport var token = function (rules, creator) { return new Parser(function (stream) {\n var char = stream.next().char;\n var rule = rules[char];\n if (char === ESCAPE_CHARACTER) {\n char = stream.next().char;\n return new Result(creator.literal(char), stream);\n }\n if (!rule) {\n return new Result(creator.literal(char), stream);\n }\n return new Result(creator.mask(rule), stream);\n}); };\n/**\n * @hidden\n */\nexport var rawMask = function (args) { return new Parser(function (stream) {\n var prompt = args.prompt, promptPlaceholder = args.promptPlaceholder;\n var char = stream.next().char;\n if (char === prompt) {\n return new Result(promptPlaceholder, stream);\n }\n return new Result(char, stream);\n}); };\n/**\n * @hidden\n */\nexport var rawLiteral = function (includeLiterals) { return new Parser(function (stream) {\n var char = stream.next().char;\n if (includeLiterals) {\n return new Result(char, stream);\n }\n return new Result('', stream);\n}); };\n","import { Parser } from './parsers';\nimport { Result } from './result';\n/**\n * @hidden\n */\nvar always = function (value) { return new Parser(function (stream) { return new Result(value, stream); }); };\n/**\n * @hidden\n */\nvar append = function (p1, p2) { return p1.chain(function (vs) { return p2.map(function (v) { return vs.concat([v]); }); }); };\n/**\n * @hidden\n */\nexport var sequence = function (list) { return list.reduce(function (acc, parser) { return append(acc, parser); }, always([])); };\n/**\n * @hidden\n */\nexport var greedy = function (parser) { return new Parser(function (stream) {\n var result = new Result([], stream);\n while (!stream.eof()) {\n result = result.concat(parser.run(stream));\n }\n return result;\n}); };\n","import { greedy, sequence } from './parsing/combinators';\nimport { literal, mask as maskParser, rawLiteral, rawMask, token, unliteral, unmask } from './parsing/parsers';\n/**\n * @hidden\n */\nvar MaskingService = /** @class */ (function () {\n function MaskingService() {\n this.rules = {};\n this.prompt = '_';\n this.mask = '';\n this.promptPlaceholder = ' ';\n this.includeLiterals = false;\n this.maskTokens = [];\n this.unmaskTokens = [];\n this.rawTokens = [];\n this.validationTokens = [];\n }\n MaskingService.prototype.update = function (_a) {\n var _b = _a.mask, mask = _b === void 0 ? '' : _b, _c = _a.prompt, prompt = _c === void 0 ? '' : _c, _d = _a.promptPlaceholder, promptPlaceholder = _d === void 0 ? ' ' : _d, _e = _a.rules, rules = _e === void 0 ? {} : _e, _f = _a.includeLiterals, includeLiterals = _f === void 0 ? false : _f;\n this.mask = mask;\n this.prompt = prompt;\n this.promptPlaceholder = promptPlaceholder;\n this.rules = rules;\n this.includeLiterals = includeLiterals;\n this.tokenize();\n };\n MaskingService.prototype.validationValue = function (maskedValue) {\n if (maskedValue === void 0) { maskedValue = ''; }\n var value = maskedValue;\n sequence(this.validationTokens)\n .run(maskedValue)\n .fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n MaskingService.prototype.rawValue = function (maskedValue) {\n if (maskedValue === void 0) { maskedValue = ''; }\n var value = maskedValue;\n if (!this.rawTokens.length) {\n return value;\n }\n sequence(this.rawTokens)\n .run(maskedValue)\n .fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n /**\n * @hidden\n */\n MaskingService.prototype.maskRaw = function (rawValue) {\n if (rawValue === void 0) { rawValue = ''; }\n var value = rawValue;\n if (!this.maskTokens.length) {\n return value;\n }\n sequence(this.maskTokens)\n .run(rawValue)\n .fold(function (masked) {\n value = masked.join('');\n });\n return value;\n };\n MaskingService.prototype.maskInput = function (input, control, splitPoint) {\n if (input.length < control.length) {\n return this.maskRemoved(input, control, splitPoint);\n }\n return this.maskInserted(input, control, splitPoint);\n };\n MaskingService.prototype.maskInRange = function (pasted, oldValue, start, end) {\n var value = '';\n var selection = end;\n var beforeChange = oldValue.split('').slice(0, start);\n var afterChange = oldValue.split('').slice(end);\n sequence(this.maskTokens.slice(start, end))\n .run(pasted)\n .fold(function (masked) {\n value = beforeChange\n .concat(masked)\n .concat(afterChange)\n .join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n MaskingService.prototype.maskRemoved = function (input, control, splitPoint) {\n var _this = this;\n var value = '';\n var selection = splitPoint;\n var unchanged = input.split('').slice(splitPoint);\n var changed = input.split('').slice(0, splitPoint).join('');\n var take = this.maskTokens.length - (input.length - splitPoint);\n sequence(this.maskTokens.slice(0, take))\n .run(changed, control)\n .fold(function (masked) {\n selection = _this.adjustPosition(masked, selection);\n value = masked.concat(unchanged).join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n MaskingService.prototype.adjustPosition = function (input, selection) {\n var caretChar = input[selection];\n var isLiteral = this.maskTokens[selection].isLiteral(caretChar);\n if (!isLiteral && caretChar !== this.prompt) {\n return selection + 1;\n }\n return selection;\n };\n MaskingService.prototype.maskInserted = function (input, control, splitPoint) {\n var _this = this;\n var value = '';\n var selection = splitPoint;\n var changed = input.slice(0, splitPoint);\n sequence(this.unmaskTokens)\n .run(changed, control)\n .chain(function (unmasked) {\n selection = unmasked.join('').length;\n var unchanged = control.slice(selection);\n return sequence(_this.maskTokens)\n .run(unmasked.join('') + unchanged, control);\n })\n .fold(function (masked) {\n value = masked.join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n Object.defineProperty(MaskingService.prototype, \"maskTokenCreator\", {\n get: function () {\n var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n return {\n literal: function (rule) { return literal(rule); },\n mask: function (rule) { return maskParser({ prompt: prompt, promptPlaceholder: promptPlaceholder })(rule); }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"unmaskTokenCreator\", {\n get: function () {\n var _this = this;\n return {\n literal: function (rule) { return unliteral(rule); },\n mask: function (rule) { return unmask(_this.prompt)(rule); }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"rawTokenCreator\", {\n get: function () {\n var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder, includeLiterals = _a.includeLiterals;\n return {\n literal: function (_) { return rawLiteral(includeLiterals); },\n mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: promptPlaceholder }); }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"validationTokenCreator\", {\n get: function () {\n var prompt = this.prompt;\n return {\n literal: function (_) { return rawLiteral(false); },\n mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: '' }); }\n };\n },\n enumerable: false,\n configurable: true\n });\n MaskingService.prototype.tokenize = function () {\n var _this = this;\n greedy(token(this.rules, this.maskTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.maskTokens = tokens;\n });\n greedy(token(this.rules, this.unmaskTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.unmaskTokens = tokens;\n });\n greedy(token(this.rules, this.rawTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.rawTokens = tokens;\n });\n greedy(token(this.rules, this.validationTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.validationTokens = tokens;\n });\n };\n return MaskingService;\n}());\nexport { MaskingService };\n","/**\n * @hidden\n */\nvar defaultRules = {\n '#': /[\\d\\s\\+\\-]/,\n '&': /[\\S]/,\n '0': /[\\d]/,\n '9': /[\\d\\s]/,\n '?': /[a-zA-Z\\s]/,\n 'A': /[a-zA-Z0-9]/,\n 'C': /./,\n 'L': /[a-zA-Z]/,\n 'a': /[a-zA-Z0-9\\s]/\n};\n/**\n * @hidden\n */\nvar returnFalse = function () { return false; };\n/**\n * @hidden\n */\nvar maskingChanged = function (prev, next) {\n return prev.includeLiterals !== next.includeLiterals ||\n prev.mask !== next.mask ||\n prev.prompt !== next.prompt ||\n prev.promptPlaceholder !== next.promptPlaceholder ||\n !sameRules(prev.rules, next.rules);\n};\n/**\n * @hidden\n */\nvar sameRules = function (rules1, rules2) {\n if (!!rules1 !== !!rules2) {\n return false;\n }\n if (rules1 === rules2 || (!rules1 || !rules2)) {\n return true;\n }\n var same = true;\n for (var key in rules1) {\n if (rules1[key] !== rules2[key]) {\n same = false;\n break;\n }\n }\n if (same) {\n for (var key in rules2) {\n if (!rules1.hasOwnProperty(key)) {\n same = false;\n break;\n }\n }\n }\n return same;\n};\nexport { defaultRules, maskingChanged, returnFalse };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { MaskingService } from './masking.service';\nimport { defaultRules, maskingChanged, returnFalse } from './utils';\nimport { guid, classNames, getTabIndex, withPropsContext, createPropsContext, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/** @hidden */\nvar MaskedTextBoxWithoutContext = /** @class */ (function (_super) {\n __extends(MaskedTextBoxWithoutContext, _super);\n function MaskedTextBoxWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {};\n _this._inputId = \"k-\".concat(guid());\n _this._service = new MaskingService();\n _this._isPasted = false;\n _this._selection = [null, null];\n _this._input = null;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._input) {\n _this._input.focus();\n }\n };\n _this.pasteHandler = function (event) {\n var _a = event.target, selectionStart = _a.selectionStart, selectionEnd = _a.selectionEnd;\n if (selectionEnd === selectionStart) {\n return;\n }\n _this._isPasted = true;\n _this._selection = [selectionStart || 0, selectionEnd || 0];\n };\n _this.onChangeHandler = function (event) {\n var input = event.currentTarget;\n var value = input.value;\n var start = _this._selection[0] || 0;\n var end = _this._selection[1] || 0;\n if (!_this.props.mask) {\n _this._isPasted = false;\n _this._selection = [null, null];\n _this.triggerOnChange(value, event);\n return;\n }\n var maskedValue = _this.value;\n var result;\n if (_this._isPasted) {\n _this._isPasted = false;\n var rightPart = maskedValue.length - end;\n var to = value.length - rightPart;\n result = _this._service.maskInRange(value.slice(start, to), maskedValue, start, end);\n }\n else {\n result = _this._service.maskInput(value, maskedValue, input.selectionStart || 0);\n }\n _this._selection = [result.selection, result.selection];\n _this.triggerOnChange(result.value, event);\n };\n _this.focusHandler = function (event) {\n if (!_this.state.focused) {\n _this.setState({ focused: true });\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n };\n _this.blurHandler = function (event) {\n if (_this.state.focused) {\n _this.setState({ focused: false });\n if (_this.props.onBlur) {\n _this.props.onBlur.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n };\n _this.setValidity = function () {\n if (_this.element) {\n _this.element.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || '');\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"element\", {\n /**\n * Gets the element of the MaskedTextBox.\n *\n * @return - An `HTMLInputElement`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * }\n * element = null;\n * render() {\n * return (\n *
    \n * \n * this.element = component ? component.element : null}\n * />\n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(\n * ,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function () {\n return this._input;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"value\", {\n /**\n * Gets the value with the mask of the MaskedTextBox.\n */\n get: function () {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n return this.props.value;\n }\n else if (this.state.value !== undefined) {\n return this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"rawValue\", {\n /**\n * Gets the raw value without the mask of the MaskedTextBox.\n */\n get: function () {\n return this._service.rawValue(this.value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the MaskedTextBox is set.\n */\n get: function () {\n var maskedValue = this.value;\n var value = this._service.validationValue(maskedValue);\n var customError = this.props.validationMessage !== undefined;\n var valid = (this.props.valid !== undefined ?\n this.props.valid : ((!this.required || !!value)) &&\n (!this.props.maskValidation || !this.props.prompt || maskedValue.indexOf(this.props.prompt) === -1));\n return {\n customError: customError,\n valid: valid,\n valueMissing: !value\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : MaskedTextBoxWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : MaskedTextBoxWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the MaskedTextBox.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {\n if (this.element && this.state.focused && prevState.focused) {\n var _a = this._selection, start = _a[0], end = _a[1];\n var prevSelection = prevProps.selection;\n var nextSelection = this.props.selection;\n if ((!prevSelection && nextSelection) ||\n (prevSelection && nextSelection &&\n (prevSelection.start !== nextSelection.start || prevSelection.end !== nextSelection.end))) {\n start = nextSelection.start;\n end = nextSelection.end;\n }\n if (start !== null && end !== null) {\n this.element.setSelectionRange(start, end);\n }\n }\n if (maskingChanged(prevProps, this.props)) {\n this.updateService();\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.prototype.componentDidMount = function () {\n this.updateService();\n this.setValidity();\n };\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.prototype.render = function () {\n var _a;\n var _this = this;\n var _b = this.props, _c = _b.size, size = _c === void 0 ? MaskedTextBoxWithoutContext.defaultProps.size : _c, _d = _b.fillMode, fillMode = _d === void 0 ? MaskedTextBoxWithoutContext.defaultProps.fillMode : _d, _e = _b.rounded, rounded = _e === void 0 ? MaskedTextBoxWithoutContext.defaultProps.rounded : _e;\n var inputId = this.props.id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var style = this.props.style || {};\n var component = (React.createElement(\"span\", { dir: this.props.dir, className: classNames('k-maskedtextbox k-input', (_a = {},\n _a[\"k-input-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a[\"k-input-\".concat(fillMode)] = fillMode,\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _a['k-invalid'] = !isValid,\n _a['k-required'] = this.required,\n _a['k-disabled'] = this.props.disabled,\n _a), this.props.className), style: !this.props.label\n ? __assign({ width: this.props.width }, style) : style },\n React.createElement(\"input\", { type: \"text\", autoComplete: \"off\", autoCorrect: \"off\", autoCapitalize: \"off\", spellCheck: false, className: \"k-input-inner\", value: this.value, id: inputId, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, name: this.props.name, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled, true), accessKey: this.props.accessKey, title: this.props.title, disabled: this.props.disabled || undefined, readOnly: this.props.readonly || undefined, placeholder: this.props.placeholder, ref: function (input) { return _this._input = input; }, onChange: this.onChangeHandler, onPaste: this.pasteHandler, onFocus: this.focusHandler, onBlur: this.blurHandler, onDragStart: returnFalse, onDrop: returnFalse })));\n return this.props.label\n ? (React.createElement(FloatingLabel, { label: this.props.label, editorId: inputId, editorValue: this.value, editorValid: isValid, editorDisabled: this.props.disabled, editorPlaceholder: this.props.placeholder, children: component, style: { width: this.props.width }, dir: this.props.dir }))\n : component;\n };\n MaskedTextBoxWithoutContext.prototype.triggerOnChange = function (maskedValue, event) {\n this.setState({\n value: maskedValue\n });\n if (this.props.onChange) {\n this._valueDuringOnChange = maskedValue;\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n selectionStart: this._selection[0],\n selectionEnd: this._selection[1],\n target: this,\n value: this.value\n };\n this.props.onChange.call(undefined, ev);\n this._valueDuringOnChange = undefined;\n }\n };\n MaskedTextBoxWithoutContext.prototype.updateService = function (extra) {\n var config = Object.assign({\n includeLiterals: this.props.includeLiterals,\n mask: this.props.mask,\n prompt: this.props.prompt,\n promptPlaceholder: this.props.promptPlaceholder,\n rules: this.rules\n }, extra); // tslint:disable-line:align\n this._service.update(config);\n };\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"rules\", {\n get: function () {\n return Object.assign({}, defaultRules, this.props.rules);\n },\n enumerable: false,\n configurable: true\n });\n MaskedTextBoxWithoutContext.displayName = 'MaskedTextBox';\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n placeholder: PropTypes.string,\n title: PropTypes.string,\n dir: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n prompt: PropTypes.string,\n promptPlaceholder: PropTypes.string,\n includeLiterals: PropTypes.bool,\n maskValidation: PropTypes.bool,\n mask: PropTypes.string,\n rules: function (props, propName, componentName) {\n var rules = props.rules;\n if (rules !== undefined) {\n var valid = Object.entries(rules)\n .some(function (e) { return typeof e !== 'string' || !(rules[e] instanceof RegExp); });\n if (!valid) {\n return new Error('Invalid prop `' + propName + '` supplied to' +\n ' `' + componentName + '`. Validation failed.');\n }\n }\n return null;\n },\n selection: PropTypes.shape({\n start: PropTypes.number.isRequired,\n end: PropTypes.number.isRequired\n }),\n name: PropTypes.string,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n valid: PropTypes.bool,\n validityStyles: PropTypes.bool,\n onChange: PropTypes.func,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n };\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.defaultProps = {\n prompt: '_',\n promptPlaceholder: ' ',\n includeLiterals: false,\n maskValidation: true,\n rules: defaultRules,\n required: false,\n validityStyles: true,\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n };\n return MaskedTextBoxWithoutContext;\n}(React.Component));\nexport { MaskedTextBoxWithoutContext };\n/**\n * Represents the PropsContext of the `MaskedTextBox` component.\n * Used for global configuration of all `MaskedTextBox` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var MaskedTextBoxPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the props of the [KendoReact MaskedTextBox component]({% slug overview_maskedtextbox %}).\n *\n * Accepts properties of type [MaskedTextBoxProps]({% slug api_inputs_maskedtextboxprops %}).\n * Obtaining the `ref` returns an object of type [MaskedTextBoxHandle]({% slug api_inputs_maskedtextboxhandle %}).\n */\nexport var MaskedTextBox = withPropsContext(MaskedTextBoxPropsContext, MaskedTextBoxWithoutContext);\nMaskedTextBox.displayName = 'KendoReactMaskedTextBox';\n","const DummyLabelValues = [\r\n 'Abbreviation',\r\n 'AccountName',\r\n 'ActorName',\r\n 'Altitude',\r\n 'AreaCircle',\r\n 'Bic',\r\n 'BitcoinAddress',\r\n 'BloodType',\r\n 'BodyPartExternal',\r\n 'BodyPartInternal',\r\n 'BodyRegion',\r\n 'BodySystem',\r\n 'BuildingNumber',\r\n 'CardinalDirection',\r\n 'Categories',\r\n 'City',\r\n 'CityPrefix',\r\n 'CitySuffix',\r\n 'Color',\r\n 'CompanyName',\r\n 'CompanySuffix',\r\n 'Country',\r\n 'CountryCode',\r\n 'County',\r\n 'CreditCardCvv',\r\n 'CreditCardNumber',\r\n 'Currency',\r\n 'Department',\r\n 'Depth',\r\n 'DiagnosisCode',\r\n 'DiagnosisEntry',\r\n 'DiagnosisLongDescription',\r\n 'DiagnosisShortDescription',\r\n 'Digits',\r\n 'Direction',\r\n 'DomainName',\r\n 'DomainSuffix',\r\n 'DomainWord',\r\n 'Dosage',\r\n 'DosageAmount',\r\n 'DosageForm',\r\n 'Email',\r\n 'EthereumAddress',\r\n 'ExampleEmail',\r\n 'FirstName',\r\n 'Fuel',\r\n 'FullAddress',\r\n 'FullName',\r\n 'Geohash',\r\n 'Hospital',\r\n 'HospitalCity',\r\n 'HospitalName',\r\n 'HospitalState',\r\n 'HospitalStreetAddress',\r\n 'HospitalZipCode',\r\n 'Iban',\r\n 'InfectiousDisease',\r\n 'Ingredient',\r\n 'IpAddress',\r\n 'IpEndPoint',\r\n 'Ipv6',\r\n 'Ipv6Address',\r\n 'Ipv6EndPoint',\r\n 'JobArea',\r\n 'JobDescriptor',\r\n 'JobTitle',\r\n 'JobType',\r\n 'LastName',\r\n 'Latitude',\r\n 'Longitude',\r\n 'Manufacturer',\r\n 'Model',\r\n 'Month',\r\n 'MovieCollection',\r\n 'MovieOverview',\r\n 'MovieReleaseDate',\r\n 'MovieTagline',\r\n 'MovieTitle',\r\n 'Nature',\r\n 'Network',\r\n 'Number',\r\n 'OrdinalDirection',\r\n 'Pain',\r\n 'PhoneNumber',\r\n 'Plasma',\r\n 'Prefix',\r\n 'Price',\r\n 'ProcedureCode',\r\n 'ProcedureEntry',\r\n 'ProcedureLongDescription',\r\n 'ProcedureShortDescription',\r\n 'Product',\r\n 'ProductAdjective',\r\n 'Production',\r\n 'ProductMaterial',\r\n 'ProductName',\r\n 'Review',\r\n 'RoutingNumber',\r\n 'SecondaryAddress',\r\n 'Series',\r\n 'Sentence',\r\n 'State',\r\n 'StateAbbr',\r\n 'StreetAddress',\r\n 'StreetName',\r\n 'StreetSuffix',\r\n 'Suffix',\r\n 'TransactionType',\r\n 'Type',\r\n 'Url',\r\n 'UrlRootedPath',\r\n 'UrlWithPath',\r\n 'UserName',\r\n 'UserNameUnicode',\r\n 'Vin',\r\n 'Vitamin',\r\n 'Weekday',\r\n 'ZipCode',\r\n 'No Match',\r\n\r\n];\r\n\r\nconst TypeMap = [\r\n { type: 'URL', value: 'Url' },\r\n { type: 'Email', value: 'Email' },\r\n { type: 'Html', value: 'Nature' },\r\n { type: 'Multiline Text', value: 'Sentence' },\r\n];\r\n\r\nconst getDummyLabel = (name, type) => {\r\n let nameWithoutSpecialCharacter = name.replace(/[^a-zA-Z]/g, \"\").toLowerCase();\r\n let DummyLabel = \"\"\r\n if (\r\n type === \"URL\" ||\r\n type === \"Email\" ||\r\n type === \"Html\" ||\r\n type === \"Multiline Text\"\r\n ) {\r\n let filterValue = TypeMap.find(type => type.type = type).value\r\n let filterLabels = DummyLabelValues.filter(label => label === filterValue)\r\n DummyLabel = filterLabels.find(label => label.toLowerCase() === nameWithoutSpecialCharacter) || \"No Match\"\r\n } else {\r\n DummyLabel = DummyLabelValues.find(label => label.toLowerCase() === nameWithoutSpecialCharacter) || \"No Match\"\r\n }\r\n return DummyLabel\r\n}\r\n\r\nexport default {\r\n DummyLabelValues,\r\n TypeMap,\r\n getDummyLabel\r\n}","import React, { useEffect } from 'react';\r\nimport { NumericTextBox } from \"@progress/kendo-react-inputs\";\r\n\r\nconst RelativeDateField = (props) => {\r\n\r\n\tuseEffect(() => {\r\n\t\tconst formattedValueField = document.querySelector(\".k-formatted-value\");\r\n\t\tif (formattedValueField !== undefined && formattedValueField !== null) {\r\n\t\t\tformattedValueField.addEventListener(\"keydown\", e => {\r\n\t\t\t\tif (e.keyCode === 109 || e.keyCode === 189) {\r\n\t\t\t\t\te.stopPropagation()\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}, [props.visible]);\r\n\r\n\tconst values = props.value ? props.value.split(\"_\") : [\"Today\", \"+\", \"0\", \"Days\"];\r\n\r\n\tfunction handleSignChange(newSign) {\r\n\t\tconst newValue = [...values];\r\n\t\tnewValue[1] = newSign;\r\n\t\tconst value = newValue.join(\"_\");\r\n\t\tprops.onChangeSign({\r\n\t\t\ttarget: {\r\n\t\t\t\tname: \"defaultDate\",\r\n\t\t\t\tvalue: value\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tfunction handleValueChange(e) {\r\n\t\tconst { value: newNumber } = e.target;\r\n\t\tconst newValue = [...values];\r\n\t\tnewValue[2] = newNumber;\r\n\t\tconst value = newValue.join(\"_\");\r\n\t\tprops.onChangeValue({\r\n\t\t\ttarget: {\r\n\t\t\t\tname: \"defaultDate\",\r\n\t\t\t\tvalue: value\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tfunction handleTypeChange(newType) {\r\n\t\tconst newValue = [...values];\r\n\t\tnewValue[3] = newType;\r\n\t\tconst value = newValue.join(\"_\");\r\n\t\tprops.onChangeType({\r\n\t\t\ttarget: {\r\n\t\t\t\tname: \"defaultDate\",\r\n\t\t\t\tvalue: value\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tif (!props.visible) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t{values[0]}\r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default RelativeDateField;","import React from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\n\r\nconst BooleanDefaultValueField = ({ value, onChange }) => {\r\n const Options = [\r\n \"True\",\r\n \"False\"\r\n ];\r\n\r\n const handleChange = (value) => {\r\n const e = {\r\n target: {\r\n value: value === \"True\" ? true : false,\r\n name: \"defaultValue\"\r\n }\r\n };\r\n onChange(e);\r\n }\r\n \r\n return (\r\n handleChange(e.target.value)}\r\n />\r\n );\r\n};\r\n\r\nexport default BooleanDefaultValueField;","import React, { Component } from \"react\";\r\n\r\nclass ShowMore extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = { more: false };\r\n\r\n\t\tthis.handleClick = this.handleClick.bind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tif (this.props.more !== undefined) {\r\n\t\t\tthis.setState({ more: this.props.more });\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidUpdate(props) {\r\n\t\tif (this.props.more !== props.more) {\r\n\t\t\tthis.setState({ more: this.props.more });\r\n\t\t}\r\n\t}\r\n\r\n\thandleClick() {\r\n\t\tthis.setState(\r\n\t\t\t(prevState) => ({\r\n\t\t\t\tmore: !prevState.more,\r\n\t\t\t}),\r\n\t\t\t() => {\r\n\t\t\t\tthis.props.toggled(this.state.more);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tShow {this.state.more ? \"Less\" : \"More\"}\r\n\t\t\t\t\t{this.state.more ? : }\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\nexport default ShowMore;\r\n","import React from 'react';\r\n\r\n\r\nconst FormulaLoader = ()=>{\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\nexport default FormulaLoader; ","// TODO: Support translation for formula dialog\r\nimport React, { useState, useEffect } from 'react';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Checkbox, Switch } from \"@progress/kendo-react-inputs\";\r\nimport { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport { getAllAttributes, getRelatedEntityAttributes } from \"../../Helpers/Schema/Schema\";\r\nimport AttributeTypes from \"../AttributeTypes\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport NumericInput from \"../Fields/NumericInput\";\r\nimport FormulaLoader from '../../Shared/Loader/FormulaLoader';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst NumberAttr = ({ attrList, formula, operators, groupg, i, groupid, onAttribute1Change, onAttributeRowChange, onExpoChange, groupIndex, onAttribute2Change, onOperatorChange, onMultiOperatorChange, onRemoveRow, numberType, attributeType }) => {\r\n const [numOperator, setNumOperator] = useState([]);\r\n const [numDateOperator, setNumDateOperator] = useState([]);\r\n const [numAttribute, setNumAttribute] = useState([]);\r\n const [multiDateTimeOperators, setMultiDateTimeOperators] = useState([]);\r\n const [data, setData] = useState(attrList);\r\n const [isChangeType, setIsChangeType] = useState(false);\r\n const [isChangeControl, setIsChangeControl] = useState(false);\r\n const [eventInfo, setEventInfo] = useState([]);\r\n\r\n const { t, ready: tReady } = useTranslation([\r\n \"attribute/formula\",\r\n ]);\r\n\r\n const filterData = (filter) => {\r\n const data = attrList;\r\n return filterBy(data, filter);\r\n };\r\n\r\n let format = \"n2\";\r\n\r\n useEffect(() => {\r\n setData(numAttribute.slice());\r\n }, [numAttribute]);\r\n const filterChange = (event) => {\r\n setData(filterData(event.filter));\r\n };\r\n\r\n useEffect(() => {\r\n if (AttributeTypes && AttributeTypes.Operations) {\r\n var data = AttributeTypes.Operations.filter(obj => {\r\n return obj.type === \"Number\"\r\n })[0];\r\n setMultiDateTimeOperators(data.multiTimeOperators.concat(data.multiDateOperators));\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (AttributeTypes && AttributeTypes.Operations) {\r\n var data = AttributeTypes.Operations.filter(obj => {\r\n return obj.type === \"Number\"\r\n })[0];\r\n setNumOperator(data.operators.concat(data.linkedOperators) || []);\r\n if (groupg && groupg.field && groupg.field.length > 0) {\r\n const attr = attrList.find(attr => attr.attributeName === groupg.field);\r\n if (attr.attributeType === \"Number\") {\r\n setNumDateOperator(data.multiOperators);\r\n } else {\r\n setNumDateOperator(data.multiOperators.concat(multiDateTimeOperators) || []);\r\n }\r\n } else {\r\n setNumDateOperator(data.multiOperators);\r\n }\r\n }\r\n if (attrList)\r\n setNumAttribute(attrList);\r\n }, [multiDateTimeOperators]);\r\n\r\n const dsNumOperator = (groupg) => {\r\n let operators = [];\r\n let newdata = attrList.filter(obj => {\r\n return obj.attributeName === groupg.field;\r\n });\r\n if (groupg) {\r\n var data = AttributeTypes.Operations.filter(obj => {\r\n return obj.type === \"Number\"\r\n })[0];\r\n if (newdata && newdata.length > 0) {\r\n let isLinkedAttr = newdata[0].isLinkedAttr;\r\n if (isLinkedAttr) {\r\n if (groupg.operatorS === 'exponent' || groupg.operatorS === 'absolute') {\r\n groupg.operatorS = '';\r\n }\r\n if (newdata && newdata[0].isIdAttribute) {\r\n operators = data.linkedOperators.filter(operator => operator !== \"avg\" && operator !== \"sum\")\r\n } else {\r\n operators = data.linkedOperators;\r\n }\r\n }\r\n else {\r\n operators = data.operators;\r\n }\r\n }\r\n else {\r\n operators = numOperator;\r\n }\r\n }\r\n else {\r\n operators = numOperator;\r\n }\r\n if (newdata[0] && newdata[0].numberType === \"integer\") {\r\n operators = operators.filter(operator => operator !== \"ceil\" && operator !== \"floor\" && operator !== \"round\");\r\n }\r\n return operators;\r\n }\r\n\r\n const dsOpratorEnable = (groupg, groupf, groupid) => {\r\n if (groupg) {\r\n\r\n let groupInfo = groupf.groups.filter(obj => obj.groupid === groupid);\r\n\r\n\r\n if (groupInfo && groupInfo[0].functions[0].fieldId !== groupg.fieldId) {\r\n if (groupInfo[0].functions[0].field !== '') {\r\n let attrType = attrList.find(attr => attr.attributeName === groupInfo[0].functions[0].field);\r\n\r\n if (attrType && attrType.attributeType === \"DateTime\") {\r\n return true;\r\n }\r\n }\r\n }\r\n let newdata = attrList.filter(obj => {\r\n return obj.attributeName === groupg.field;\r\n });\r\n if (newdata && newdata.length > 0) {\r\n\r\n if (newdata[0].attributeType === \"DateTime\") {\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n const dsOprator2Enable = (groupg, groupf, groupid) => {\r\n\r\n if (groupg) {\r\n if (groupg.field === \"Fixed Number\" && groupg.value !== undefined && groupg.value.length <= 0) {\r\n return true;\r\n }\r\n else {\r\n let groupInfo = groupf.groups.filter(obj => obj.groupid === groupid);\r\n\r\n if (groupInfo && groupInfo[0].functions[0].fieldId !== groupg.fieldId) {\r\n\r\n if (groupInfo[0].functions[0].field !== '') {\r\n let attrType = attrList.find(attr => attr.attributeName === groupInfo[0].functions[0].field);\r\n if (attrType && attrType.attributeType && attrType.attributeType === \"DateTime\") {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n else {\r\n return groupg.field !== undefined && groupg.field.length <= 0;\r\n }\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n const dsNumDateOperator = (groupg) => {\r\n if (groupg) {\r\n if (groupg.field === \"\" || !groupg.field) {\r\n ;\r\n }\r\n let newdata = attrList.filter(obj => {\r\n return obj.attributeName === groupg.field;\r\n });\r\n var data = AttributeTypes.Operations.filter(obj => {\r\n return obj.type === \"Number\"\r\n })[0];\r\n if (newdata && newdata.length > 0) {\r\n\r\n if (newdata[0].attributeType === \"Number\") {\r\n return data.multiOperators;\r\n }\r\n else if (newdata[0].dateTimeType === \"date\") {\r\n return data.multiDateOperators;\r\n }\r\n else if (newdata[0].dateTimeType === \"time\") {\r\n return data.multiTimeOperators;\r\n }\r\n else {\r\n return multiDateTimeOperators;\r\n }\r\n }\r\n else {\r\n return numDateOperator;\r\n }\r\n }\r\n else {\r\n return numDateOperator;\r\n }\r\n }\r\n\r\n const dsAttrList = (groupg, groupf, groupid) => {\r\n\r\n let attrFilterList = [];\r\n var data = AttributeTypes.Operations.filter(obj => {\r\n return obj.type === \"Number\"\r\n })[0];\r\n let attributesDropdownData = [];\r\n if (groupg) {\r\n if (groupf) {\r\n attrList = attrList.filter(item => item.attributeName !== groupf.name);\r\n let groupInfo = groupf.groups.filter(obj => obj.groupid === groupid);\r\n if (groupInfo && groupInfo[0].functions.length > 0 &&\r\n groupInfo[0].functions[0].fieldId !== groupg.fieldId) {\r\n if (groupInfo[0].functions[0].field !== '') {\r\n let attrType = attrList.find(attr => attr.attributeName === groupInfo[0].functions[0].field);\r\n if (attrType && attrType.attributeType)\r\n attrFilterList = [...attrList.filter(attr => attr.attributeType === attrType.attributeType)];\r\n if (groupInfo[0].functions[0].field === '@Today') {\r\n attrFilterList = [...attrFilterList.filter(attr => attr.attributeName != '@Today')];\r\n }\r\n\r\n\r\n if (attrType && attrType.attributeType && (attrType.attributeType === \"DateTime\")) {\r\n if (data.multiDateOperators.includes(groupInfo[0].functions[0].operatorM) && attrType.dateTimeType === \"datetime\") {\r\n if (attrFilterList.length > 0)\r\n attrFilterList = [...attrFilterList.filter(attr => (attr.dateTimeType === \"datetime\" || attr.dateTimeType === 'date'))];\r\n else\r\n attrFilterList = [...attrList.filter(attr => (attr.dateTimeType === \"datetime\" || attr.dateTimeType === 'date'))];\r\n }\r\n else if (data.multiDateOperators.includes(groupInfo[0].functions[0].operatorM) && attrType.dateTimeType === \"date\") {\r\n if (attrFilterList.length > 0)\r\n attrFilterList = [...attrFilterList.filter(attr => (attr.dateTimeType === 'date'))];\r\n else\r\n attrFilterList = [...attrList.filter(attr => (attr.dateTimeType === 'date'))];\r\n }\r\n else if (data.multiTimeOperators.includes(groupInfo[0].functions[0].operatorM)) {\r\n if (attrFilterList.length > 0)\r\n attrFilterList = [...attrFilterList.filter(attr => (attr.dateTimeType === attrType.dateTimeType))];\r\n else\r\n attrFilterList = [...attrList.filter(attr => (attr.dateTimeType === attrType.dateTimeType))];\r\n\r\n }\r\n }\r\n }\r\n }\r\n else if (groupInfo && groupInfo[0].functions.length > 1\r\n && groupInfo[0].functions[0].field !== '' && groupInfo[0].functions[1].field !== '') {\r\n if (groupInfo[0].functions[1].field === '@Today') {\r\n if (attrFilterList.length > 0)\r\n attrFilterList = [...attrFilterList.filter(attr => attr.attributeName !== '@Today')];\r\n else\r\n attrFilterList = [...attrList.filter(attr => attr.attributeName !== '@Today')];\r\n }\r\n }\r\n\r\n }\r\n\r\n if (groupg.field && groupg.field !== '') {\r\n let newdata = attrList.filter(obj => {\r\n return obj.attributeName === groupg.field;\r\n });\r\n\r\n if (newdata && newdata.length > 0) {\r\n let isLinkedAttr = newdata[0].isLinkedAttr;\r\n if (isLinkedAttr && data.linkedOperators.includes(groupg.operatorS)) {\r\n attributesDropdownData = attrList.filter((x) => x.isLinkedAttr === true);\r\n }\r\n else if (data.operators.includes(groupg.operatorS)) {\r\n let filteredData = attrList.filter((x) => (x.isLinkedAttr === false && x.attributeType === 'Number'));\r\n attributesDropdownData = (filteredData.length > 0) ? filteredData : attrList;\r\n }\r\n else {\r\n attributesDropdownData = (attrFilterList.length > 0) ? attrFilterList : attrList;\r\n }\r\n }\r\n else {\r\n attributesDropdownData = (attrFilterList.length > 0) ? attrFilterList : attrList;\r\n }\r\n }\r\n else if (groupg.operatorS && groupg.operatorS !== '') {\r\n let operator = groupg.operatorS;\r\n\r\n if (data.linkedOperators.includes(operator)) {//If it is linked operator filter linked attribute\r\n let filteredData = attrList.filter((x) => x.isLinkedAttr === true);\r\n if (operator === \"avg\" || operator === \"sum\") {\r\n filteredData = filteredData.filter((x) => !x.isIdAttribute);\r\n }\r\n attributesDropdownData = filteredData;\r\n }\r\n else if (data.operators.includes(operator)) {\r\n let filteredData = attrList.filter((x) => x.isLinkedAttr === false && x.attributeType === \"Number\");\r\n attributesDropdownData = filteredData;\r\n }\r\n else {\r\n attributesDropdownData = (attrFilterList.length > 0) ? attrFilterList : attrList;\r\n }\r\n }\r\n else {\r\n attributesDropdownData = (attrFilterList.length > 0) ? attrFilterList : attrList;\r\n }\r\n }\r\n else {\r\n attributesDropdownData = (attrFilterList.length > 0) ? attrFilterList : attrList;\r\n }\r\n\r\n if (groupg && groupg.operatorS) {\r\n let operator = groupg.operatorS;\r\n if (\r\n operator === \"ceil\" || operator === \"floor\" || operator === \"round\"\r\n ) {\r\n attributesDropdownData = attributesDropdownData.filter((x) => x.numberType === \"decimal\");\r\n }\r\n }\r\n\r\n return attributesDropdownData;\r\n }\r\n\r\n const itemRender = (li, itemProps) => {\r\n const itemChildren =\r\n itemProps.dataItem.attributeName === 'Fixed Number' || itemProps.dataItem.attributeName === '@Today' ?\r\n \r\n {li.props.children}\r\n \r\n :\r\n (\r\n {li.props.children}\r\n )\r\n\r\n return React.cloneElement(li, li.props, itemChildren);\r\n }\r\n\r\n const onNumOperatorChange = (e) => {\r\n\r\n let operator = e.target.value;\r\n var data = AttributeTypes.Operations.filter(obj => {\r\n return obj.type === \"Number\"\r\n })[0];\r\n if (data.linkedOperators.includes(operator)) {//If it is linked operator filter linked attribute\r\n let filteredData = attrList.filter((x) => x.isLinkedAttr === true);\r\n if (operator === \"avg\") {\r\n filteredData = filteredData.filter(attribute => !attribute.isIdAttribute);\r\n }\r\n setNumAttribute(filteredData);\r\n }\r\n else if (data.operators.includes(operator)) {\r\n let filteredData = attrList.filter((x) => x.isLinkedAttr === false);\r\n filteredData.unshift({ attributeName: \"Fixed Number\", attributeType: \"Number\", isLinkedAttr: false });\r\n setNumAttribute(filteredData);\r\n }\r\n else {\r\n setNumAttribute(attrList);\r\n }\r\n onOperatorChange(e);\r\n }\r\n\r\n const cancelRemoveRowDialog = () => {\r\n setIsChangeControl(false);\r\n setIsChangeType(false);\r\n }\r\n\r\n const acceptRemoveRowDialog = () => {\r\n setIsChangeControl(true);\r\n onAttributeRowChange(eventInfo);\r\n setEventInfo([]);\r\n setIsChangeType(false);\r\n }\r\n\r\n const onNumAttrChange = (e) => {\r\n if (!isChangeType) {\r\n let groupid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupid') ? e.target.getAttribute('groupid') : e.target.props.groupid;\r\n let groupdataid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupdataid') ? e.target.getAttribute('groupdataid') : e.target.props.groupdataid;\r\n let attribute = e.target.value;\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n let existingType = attrList.filter(e => e.attributeName === form[0].functions[0].field);\r\n if (form[0].functions.length > 1 && form[0].functions[0].groupdataid === groupdataid) {\r\n if (attribute === '' || attribute === null || (attribute !== '' && form[0].functions[0].field !== attribute.attributeName && existingType[0].attributeType != attribute.attributeType)) {\r\n setIsChangeType(true);\r\n let eventInfo = { targetVal: e.target.value, groupid: groupid, groupdataid: groupdataid };\r\n setEventInfo(eventInfo);\r\n return;\r\n }\r\n }\r\n }\r\n let selectedAttr = e.target.value;\r\n var data = AttributeTypes.Operations.filter(obj => {\r\n return obj.type === \"Number\"\r\n })[0];\r\n if (selectedAttr && selectedAttr.attributeName && selectedAttr.attributeName.length > 0 && selectedAttr.isLinkedAttr) {\r\n setNumOperator(data.linkedOperators || []);\r\n }\r\n else if (selectedAttr && selectedAttr.attributeName && selectedAttr.attributeName.length > 0 && !selectedAttr.isLinkedAttr) {\r\n setNumOperator(data.operators || []);\r\n }\r\n else {\r\n setNumOperator(data.operators.concat(data.linkedOperators) || []);\r\n }\r\n onAttribute1Change(e);\r\n }\r\n {/* \r\n Number\r\n SOPE EXPO FILE FNUM OPER DELETE\r\n 3 5 3 1\r\n 3 3 2 3 1=> Fixed Number\r\n 3 2 3 3 1=> Exponent\r\n 3 1 3 1 3 1=> Exponent Fixed Number */}\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n { return e.attributeName === groupg.field })[0] : null}\r\n groupid={groupid}\r\n gds={groupg}\r\n groupdataid={groupg.groupdataid}\r\n filterable={true}\r\n allowCustom={false}\r\n onChange={onNumAttrChange}\r\n itemRender={itemRender}\r\n />
    \r\n {groupg.field === \"Fixed Number\" && (\r\n
    \r\n {/* */}\r\n \r\n
    \r\n )}\r\n {groupg.operatorS === \"exponent\" && (\r\n
    \r\n {/* (evt.key === '+'||evt.key === '-') && evt.preventDefault()} /> */}\r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n {((i === 0 && groupIndex === 0) ? <> : <> )} {groupg.isCircular && ()} {groupg.isWarning && ()}
    \r\n {isChangeType &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nconst Dropdowns = ({ attrList, formula, operators, groupData, groupid, onAttribute1Change, groupIndex, onAttribute2Change, setAttribute2Value, onExpoChange, onOperatorChange, onMultiOperatorChange, onRemoveRow, numberType, onAttributeRowChange }) => {\r\n const [data, setData] = React.useState(attrList);\r\n\r\n const filterData = (filter) => {\r\n const data = attrList;\r\n return filterBy(data, filter);\r\n };\r\n const checkEmpty = (evt) => {\r\n if (evt.target.value === \"\") {\r\n evt.target.value = \"1\";\r\n onAttribute2Change(evt);\r\n }\r\n }\r\n\r\n const { t, ready: tReady } = useTranslation([\r\n \"attribute/formula\",\r\n ]);\r\n\r\n const isNumber = (evt) => {\r\n evt = (evt) ? evt : window.event;\r\n var charCode = (evt.which) ? evt.which : evt.keyCode;\r\n if (charCode === 37 || charCode === 39) {\r\n return true;\r\n }\r\n if ((charCode > 31 && ((evt.target.value.length == 0 && charCode == 48) || charCode < 48 || charCode > 57))) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n const handleAttribute2Change = (e) => {\r\n if (!isNaN(e.target.value)) {\r\n setAttribute2Value(e);\r\n }\r\n }\r\n\r\n function getStringData() {\r\n if (groupIndex === 0) {\r\n // do not return spaceAttribute\r\n const [spaceAttribute, ...otherAttributes] = data;\r\n return otherAttributes\r\n }\r\n return data;\r\n }\r\n\r\n useEffect(() => {\r\n setData(attrList.slice());\r\n }, [attrList]);\r\n const filterChange = (event) => {\r\n setData(filterData(event.filter));\r\n };\r\n\r\n return (\r\n <>\r\n {groupData && groupData.length > 0 && (groupData.map((groupg, i) => (\r\n <>\r\n
    \r\n {operators.type === \"DateTime\" && (<>\r\n
    \r\n e.dateTimeType !== \"time\")}\r\n placeholder={t(\"property_placeholder\")}\r\n onFilterChange={filterChange}\r\n textField=\"displayName\"\r\n dataItemKey=\"id\"\r\n value={groupg.field ? data.filter((e) => { return e.attributeName === groupg.field })[0] : null}\r\n groupid={groupid}\r\n groupdataid={groupg.groupdataid}\r\n filterable={true}\r\n allowCustom={false}\r\n onChange={onAttribute1Change} />\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 {groupg.isCircular && ()}{groupg.isWarning && ()}\r\n
    \r\n\r\n )}\r\n {operators.type === \"Number\" && ()}\r\n {operators.type === \"String\" && (<>\r\n
    \r\n { return e.attributeName === groupg.field })[0] : null}\r\n groupid={groupid}\r\n groupdataid={groupg.groupdataid}\r\n filterable={true}\r\n allowCustom={false}\r\n onChange={onAttribute1Change}\r\n itemRender={(li, itemProps) => {\r\n return React.cloneElement(\r\n li,\r\n li.props,\r\n \r\n {li.props.children}\r\n \r\n );\r\n }} />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {((i === 0 && groupIndex === 0) ? <> : <> )}{groupg.isCircular && ()} {groupg.isWarning && ()}
    \r\n )}\r\n
    \r\n \r\n )))}\r\n \r\n );\r\n};\r\n\r\nexport const DeleteRows = ({ cancelRemoveRowDialog, acceptRemoveRowDialog }) => {\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n
    You are about to change data types from number to dateTime and viceversa. Changing this attribute section will remove rows that are not of the same data type. To continue click accept.
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\n\r\nconst FormulaDialog = ({ allAttributes, entityId, attributeName, attributeType, getFormula, setFormula, numberType, formulaStatus, resetFlag, disableSwitch, parentSaveDisabled }) => {\r\n\r\n\r\n var formulaText = '';\r\n var isCirc = false;\r\n const defaultJson = {\r\n id: '', name: '', type: '', formula: '', oncreate: true, onupdate: true,\r\n groups: [\r\n {\r\n groupid: '',\r\n operatorMId: '',\r\n functions: [{ groupdataid: '', operatorSId: '', operatorS: '', fieldId: '', field: '' }],\r\n operatorM: ''\r\n }]\r\n };\r\n\r\n //#region State variables\r\n const [formula, setFormulaJson] = useState(defaultJson);\r\n const [jsonData, setJsonData] = useState(defaultJson);\r\n const [attrList, setAttrList] = useState([]);\r\n const [operators, setOperators] = useState({});\r\n const [circularReference, setCircularReference] = useState(false);\r\n const [formulaInvalid, setFormulaInvalid] = useState(false);\r\n const [showDialog, setShowDialog] = useState(false);\r\n const [buttonStatus, setButtonDisableStatus] = useState(true);\r\n const [toggle, setToggle] = useState(false);\r\n const [loading, setLoading] = useState(true);\r\n const [allLinkedAttributes, setLinkedAttribute] = useState([]);\r\n const formulaOld = setFormula.formula;\r\n\r\n const { t, ready: tReady } = useTranslation([\r\n \"attribute/formula\",\r\n ]);\r\n\r\n //#endregion \r\n\r\n //#region Hooks\r\n // useEffect(() => {\r\n // setLoading(parentSaveDisabled);\r\n // }, [parentSaveDisabled]);\r\n useEffect(() => {\r\n (async () => {\r\n var allLAList = await getRelatedEntityAttributes(entityId, \"Number\");\r\n allLAList.forEach((x) => {\r\n // Attribute types are not altered for related entity attributes\r\n // since they are handled in the getRelatedEntityAttributes API\r\n let attributeName = x.attributeName === \"[SYS] ID\" ? \"ID\" : x.attributeName;\r\n x.attributeName = x.entityName + '.' + (attributeName === \"ID\" ? \"Id\" : attributeName);\r\n x.displayName = x.entityName + '.' + attributeName;\r\n x.isLinkedAttr = true;\r\n if (attributeName === \"ID\") { x.isIdAttribute = true; };\r\n });\r\n setLinkedAttribute(allLAList);\r\n })();\r\n }, []);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n debugger;\r\n setLoading(true);\r\n await onAttributePanelChange();\r\n })();\r\n }, [entityId, attributeType, allLinkedAttributes, resetFlag]);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n debugger;\r\n setLoading(true);\r\n await onAttributePanelChange();\r\n })();\r\n }, [attributeName]);\r\n //#endregion \r\n\r\n const onAttributePanelChange = () => {\r\n (async () => {\r\n debugger;\r\n const allAttributesData = allAttributes;\r\n var allAttributesObj = [];\r\n\r\n allAttributesData.forEach((x) => {\r\n x.isLinkedAttr = false;\r\n });\r\n if (attributeType === \"Number\") {\r\n allAttributesObj = allAttributesData.concat(allLinkedAttributes);\r\n }\r\n else {\r\n allAttributesObj = allAttributesData;\r\n }\r\n\r\n allAttributesObj = allAttributesObj.map(attr => ({\r\n ...attr,\r\n attributeType: (\r\n attr.attributeType === \"Mirror\" ?\r\n attr.attribute ? attr.attribute.attributeType : attr.mirrorPropertyType\r\n :\r\n attr.attributeType\r\n )\r\n }))\r\n setLoading(false);\r\n let data = allAttributesObj\r\n .filter((x) => (x.attributeType === attributeType && x.attributeName !== attributeName) || x.isIdAttribute)\r\n .sort((a, b) => a.attributeName.localeCompare(b.attributeName));\r\n if (attributeType === \"Number\") {\r\n data = allAttributesObj\r\n .filter((x) => (\r\n x.group === \"\" && x.attributeType === attributeType ||\r\n x.attributeType === \"DateTime\" && x.attributeName !== attributeName\r\n ) ||\r\n x.isIdAttribute\r\n )\r\n .sort((a, b) => a.attributeName.localeCompare(b.attributeName));\r\n data.unshift({ attributeName: \"@Today\", id: newGuid(), attributeType: \"DateTime\", dateTimeType: \"date\", isLinkedAttr: false, isSystemAttribute: false });\r\n data.unshift({ attributeName: \"Fixed Number\", attributeType: \"Number\", isLinkedAttr: false, isSystemAttribute: false });\r\n } else if (attributeType === \"String\") {\r\n data.unshift({ attributeName: \"Space\", id: newGuid(), attributeType: \"String\" });\r\n }\r\n const attrList = data.map(attribute => ({ ...attribute, displayName: attribute.attributeName }));\r\n setAttrList(attrList);\r\n\r\n const operators = AttributeTypes.Operations.filter(\r\n (x) => x.type === attributeType\r\n );\r\n setOperators(operators && operators.length > 0 ? operators[0] : []);\r\n let baseJson = defaultJson;\r\n formulaUpdateCheck(false);\r\n setToggle(false);\r\n if (setFormula && setFormula.formulaJson) {\r\n let groups = JSON.parse(setFormula.formulaJson);\r\n baseJson.groups = groups;\r\n baseJson.formula = setFormula.formula;\r\n }\r\n if (setFormula && setFormula.triggerSetting && setFormula.triggerSetting.length > 0) {\r\n //onUpdate\r\n let triggerSetting = JSON.parse(setFormula.triggerSetting);\r\n baseJson.oncreate = triggerSetting.onCreate;\r\n baseJson.onupdate = triggerSetting.onUpdate;\r\n if (triggerSetting.formulaEnabled != undefined) {\r\n setToggle(triggerSetting.formulaEnabled);\r\n }\r\n }\r\n let obj = assignAttrIds(baseJson);\r\n obj.name = attributeName;\r\n obj.type = attributeType;\r\n setFormulaJson(obj);\r\n })();\r\n }\r\n\r\n\r\n const onAttributeRowChange = (eventInfo) => {\r\n let groupid = eventInfo.groupid;\r\n let groupdataid = eventInfo.groupdataid;\r\n let attribute = eventInfo.targetVal;\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n let index = formula.groups.findIndex(e => e.groupid === groupid);\r\n if (form[0].functions.length > 1 && form[0].functions[0].groupdataid === groupdataid) {\r\n if (attribute === '' || attribute === null || (attribute != '' && form[0].functions[0].field != attribute.attributeName)) {\r\n let currentData = form[0].functions.filter(e => e.groupdataid !== groupdataid);// get list of functions without selected row to delete\r\n let attrFilterList = [];\r\n if (currentData.length > 0) {\r\n let formulaData = form[0].functions.filter(e => e.groupdataid === groupdataid);\r\n if (attribute != '' && attribute != null && attribute != undefined) {\r\n let attrType = attrList.find(attr => attr.attributeName === attribute.attributeName);\r\n attrFilterList = [...attrList.filter(attr => attr.attributeType === attrType.attributeType)];\r\n let data = [];\r\n currentData.forEach((x) => {\r\n if (attrFilterList.find(attr => attr.attributeName === x.field))\r\n data.push(x);\r\n });\r\n if (data.length > 0) {\r\n formulaData = [...formulaData, ...data];\r\n }\r\n else {\r\n formula.groups[index].functions[0].operatorM = '';\r\n }\r\n }\r\n else {\r\n formula.groups[index].functions[0].operatorM = '';\r\n }\r\n formula.groups[index].functions = formulaData;\r\n // formula.groups[index].operatorM = '';\r\n // formula.groups[index].isWarning = false;\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n setCircularStatus();\r\n formulaUpdateCheck(true);\r\n }\r\n }\r\n }\r\n\r\n isCirc = false;\r\n let currentData = form[0].functions.filter(e => e.groupdataid === groupdataid);\r\n currentData[0].field = attribute ? attribute.attributeName : \"\";\r\n currentData[0].isLinkedAttr = false;\r\n if (attribute && attribute.isLinkedAttr !== undefined) {\r\n if (attribute.isLinkedAttr) {\r\n currentData[0].isLinkedAttr = true;\r\n currentData[0].linkedEntityfield = attribute ? attribute.entitySysName : \"\";\r\n currentData[0].linkeAttributefield = attribute ? attribute.sysName : \"\";\r\n }\r\n }\r\n if (attribute && attribute.attributeName && attribute.attributeName.length > 0) {\r\n // When changing the attribute, checking that selected attribute has circular reference or not\r\n let attrObj = attrList.filter(attr => attr.attributeName === attribute.attributeName);\r\n if (attrObj && attrObj.length > 0) {\r\n let formula = attrObj[0].formula;\r\n if (formula && formula.length > 0) {\r\n isCirc = checkCircularDepen(attribute.attributeName);\r\n currentData[0].isCircular = isCirc;// isCircular will be used to indicate in each row with warning icon\r\n }\r\n else {\r\n currentData[0].isCircular = false;\r\n isCirc = false;\r\n }\r\n }\r\n }\r\n else {\r\n if (formula.type === \"DateTime\") {\r\n currentData[0].operatorS = \"\";\r\n currentData[0].value = \"\";\r\n }\r\n else if (formula.type === \"Number\") {\r\n currentData[0].value = \"\";\r\n }\r\n }\r\n\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n setCircularStatus();\r\n formulaUpdateCheck(true);\r\n };\r\n //#region Events\r\n const onAttribute1Change = (e) => {\r\n debugger;\r\n isCirc = false;\r\n let groupid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupid') ? e.target.getAttribute('groupid') : e.target.props.groupid;\r\n let groupdataid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupdataid') ? e.target.getAttribute('groupdataid') : e.target.props.groupdataid;\r\n let attribute = e.target.value;\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n let currentData = form[0].functions.filter(e => e.groupdataid === groupdataid);\r\n currentData[0].field = attribute ? attribute.attributeName : \"\";\r\n currentData[0].isLinkedAttr = false;\r\n if (attribute && attribute.isLinkedAttr !== undefined) {\r\n if (attribute.isLinkedAttr) {\r\n currentData[0].isLinkedAttr = true;\r\n currentData[0].linkedEntityfield = attribute ? attribute.entitySysName : \"\";\r\n currentData[0].linkeAttributefield = attribute ? attribute.sysName : \"\";\r\n }\r\n }\r\n if (attribute && attribute.attributeName && attribute.attributeName.length > 0) {\r\n // When changing the attribute, checking that selected attribute has circular reference or not\r\n let attrObj = attrList.filter(attr => attr.attributeName === attribute.attributeName);\r\n if (attrObj && attrObj.length > 0) {\r\n let formula = attrObj[0].formula;\r\n if (formula && formula.length > 0) {\r\n isCirc = checkCircularDepen(attribute.attributeName);\r\n currentData[0].isCircular = isCirc;// isCircular will be used to indicate in each row with warning icon\r\n }\r\n else {\r\n currentData[0].isCircular = false;\r\n isCirc = false;\r\n }\r\n }\r\n\r\n }\r\n else {\r\n if (formula.type === \"String\") {\r\n currentData[0].operatorS = \"\";\r\n }\r\n else if (formula.type === \"DateTime\") {\r\n currentData[0].operatorS = \"\";\r\n currentData[0].value = \"\";\r\n }\r\n else if (formula.type === \"Number\") {\r\n currentData[0].value = \"\";\r\n }\r\n }\r\n if (attribute && attribute.attributeType !== \"Number\") {\r\n currentData[0].operatorM = '';\r\n }\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n setCircularStatus();\r\n formulaUpdateCheck(true);\r\n\r\n };\r\n const onExpoChange = (e) => {\r\n let groupid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupid') ? e.target.getAttribute('groupid') : e.target.props.groupid;\r\n let groupdataid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupdataid') ? e.target.getAttribute('groupdataid') : e.target.props.groupdataid;\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n let currentData = form[0].functions.filter(e => e.groupdataid === groupdataid);\r\n let attribute = e.target.value;\r\n currentData[0].expValue = attribute ? attribute : \"\";\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n formulaUpdateCheck(true);\r\n };\r\n const setAttribute2Value = (e) => {\r\n let groupid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupid') ? e.target.getAttribute('groupid') : e.target.props.groupid;\r\n let groupdataid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupdataid') ? e.target.getAttribute('groupdataid') : e.target.props.groupdataid;\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n let currentData = form[0].functions.filter(e => e.groupdataid === groupdataid);\r\n currentData[0].value = e.target.value;\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n formulaUpdateCheck(true);\r\n }\r\n const onAttribute2Change = (e) => {\r\n let counter = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('action') ? e.target.getAttribute('action') : '';\r\n let groupid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupid') ? e.target.getAttribute('groupid') : e.target.props.groupid;\r\n let groupdataid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupdataid') ? e.target.getAttribute('groupdataid') : e.target.props.groupdataid;\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n let currentData = form[0].functions.filter(e => e.groupdataid === groupdataid);\r\n if (counter && counter === \"-\") {\r\n currentData[0].value = currentData[0].value === \"\" || currentData[0].value <= 1 ? \"1\" : --currentData[0].value;\r\n }\r\n else if (counter && counter === \"+\") {\r\n currentData[0].value = currentData[0].value === \"\" ? \"1\" : ++currentData[0].value;\r\n }\r\n else {\r\n let attribute = e.target.value;\r\n currentData[0].value = attribute ? attribute : \"\";\r\n }\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n formulaUpdateCheck(true);\r\n };\r\n const onConnectorChange = (e) => {\r\n let groupid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupid') ? e.target.getAttribute('groupid') : e.target.props.groupid;\r\n let connector = e.target.value;\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n form[0].operatorM = connector ? connector : \"\";\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n formulaUpdateCheck(true);\r\n };\r\n const onRemoveRow = (e) => {\r\n\r\n let groupid = '';\r\n let groupdataid = '';\r\n if (e.target.parentElement && e.target.parentElement.getAttribute('groupid')) {\r\n groupid = e.target.parentElement.getAttribute('groupid');\r\n }\r\n if (e.target.parentElement && e.target.parentElement.getAttribute('groupdataid')) {\r\n groupdataid = e.target.parentElement.getAttribute('groupdataid');\r\n }\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n if (form.length > 0) {\r\n let currentData = form[0].functions.filter(e => e.groupdataid !== groupdataid);// get list of functions without selected row to delete\r\n if (currentData.length <= 0) {// if the function is having only one row; removing the group itself\r\n let formulaData = formula.groups.filter(e => e.groupid !== groupid);\r\n formula.groups = formulaData;\r\n }\r\n else {\r\n if (formula.groups.findIndex(e => e.groupid === groupid) > 0\r\n && (formula.groups[formula.groups.findIndex(e => e.groupid === groupid)].functions[0].operatorM ===\r\n formula.groups[0].functions[0].operatorM)) {\r\n currentData[currentData.length - 1].field = '';\r\n }\r\n // when we are removing a row OpertorM also should be blank\r\n if (formula.type === \"String\") {\r\n currentData[currentData.length - 1].operatorS = '';\r\n }\r\n else if (formula.type === \"Number\") {\r\n currentData[currentData.length - 1].operatorM = '';\r\n }\r\n }\r\n form[0].functions = currentData;// update the function without selected row to delete\r\n }\r\n formula.groups[formula.groups.length - 1].operatorM = '';\r\n formula.groups[formula.groups.length - 1].isWarning = false;\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n setCircularStatus();\r\n formulaUpdateCheck(true);\r\n };\r\n const onMultiOperatorChange = (e) => {\r\n let groupid = e.target && typeof e.target.getAttribute === 'function' && e.target.getAttribute('groupid')\r\n ? e.target.getAttribute('groupid')\r\n : e.target.props.groupid;\r\n let groupdataid = e.target && typeof e.target.getAttribute === 'function' && e.target.getAttribute('groupdataid')\r\n ? e.target.getAttribute('groupdataid')\r\n : e.target.props.groupdataid;\r\n let multiOperator = e.target.value;\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n let currentData = form[0].functions.filter(e => e.groupdataid === groupdataid);\r\n currentData[0].operatorM = multiOperator ? multiOperator : '';\r\n\r\n if (multiOperator && multiOperator.length > 0) {\r\n if (\r\n form &&\r\n form[0] &&\r\n form[0].functions &&\r\n form[0].functions[form[0].functions.length - 1] &&\r\n form[0].functions[form[0].functions.length - 1].field &&\r\n form[0].functions[form[0].functions.length - 1].field !== '' &&\r\n form[0].functions[form[0].functions.length - 1].operatorM &&\r\n form[0].functions[form[0].functions.length - 1].operatorM !== ''\r\n ) {\r\n const newRow =\r\n attributeType !== 'Number'\r\n ? {\r\n groupdataid: newGuid(),\r\n operatorSId: newGuid(),\r\n operatorS: '',\r\n fieldId: newGuid(),\r\n field: '',\r\n }\r\n : {\r\n groupdataid: newGuid(),\r\n operatorSId: newGuid(),\r\n operatorS: '',\r\n fieldId: newGuid(),\r\n field: '',\r\n valueId: newGuid(),\r\n value: '',\r\n operatorMId: newGuid(),\r\n operatorM: '',\r\n };\r\n form[0].functions.push(newRow);\r\n } else if (\r\n form &&\r\n form[0] &&\r\n form[0].functions &&\r\n form[0].functions.length > 1 &&\r\n form[0].functions[form[0].functions.length - 1].field !== '' &&\r\n form[0].functions[0].operatorM !== '' &&\r\n attrList.find((x) => x.attributeName === form[0].functions[form[0].functions.length - 1].field).attributeType === 'DateTime'\r\n ) {\r\n if (form[0].functions[form[0].functions.length - 1].field) {\r\n form[0].functions[form[0].functions.length - 1].field = '';\r\n form[0].functions[form[0].functions.length - 1].operatorM = '';\r\n form[0].functions[form[0].functions.length - 1].operatorS = '';\r\n } else {\r\n form[0].functions.pop(form[0].functions[form[0].functions.length - 1]);\r\n const newRow = attributeType !== 'Number'\r\n ? {\r\n groupdataid: newGuid(),\r\n operatorSId: newGuid(),\r\n operatorS: '',\r\n fieldId: newGuid(),\r\n field: '',\r\n }\r\n : {\r\n groupdataid: newGuid(),\r\n operatorSId: newGuid(),\r\n operatorS: '',\r\n fieldId: newGuid(),\r\n field: '',\r\n valueId: newGuid(),\r\n value: '',\r\n operatorMId: newGuid(),\r\n operatorM: '',\r\n };\r\n form[0].functions.push(newRow);\r\n }\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n formulaUpdateCheck(true);\r\n }\r\n }\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n formulaUpdateCheck(true);\r\n };\r\n\r\n\r\n\r\n const onOperatorChange = (e) => {\r\n let groupid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupid') ? e.target.getAttribute('groupid') : e.target.props.groupid;\r\n let groupdataid = e.target && typeof e.target.getAttribute == 'function' && e.target.getAttribute('groupdataid') ? e.target.getAttribute('groupdataid') : e.target.props.groupdataid;\r\n let operator = e.target.value;\r\n let excludeValues = [\"capitalize\", \"lower case\", \"first letter\"];\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n let currentData = form[0].functions.filter(e => e.groupdataid === groupdataid);\r\n currentData[0].operatorS = operator ? operator : \"\";\r\n if (formula.type === \"String\") {\r\n if (operator && operator.length > 0) {\r\n if (!excludeValues.includes(operator)) {\r\n if (form && form[0] && form[0].group && form[0].group[form[0].functions.length - 1].field !== '' && form[0].group[form[0].functions.length - 1].operatorS !== '') {\r\n const newRow = attributeType !== \"Number\" ? { groupdataid: newGuid(), operatorSId: newGuid(), operatorS: '', fieldId: newGuid(), field: '' } : { groupdataid: newGuid(), operatorSId: newGuid(), operatorS: '', fieldId: newGuid(), field: '', valueId: newGuid(), value: '', operatorMId: newGuid(), operatorM: '' }\r\n form[0].functions.push(newRow);\r\n }\r\n }\r\n else {\r\n //remove if row exist\r\n removeLastRow(groupid, groupdataid);\r\n }\r\n }\r\n else {\r\n currentData[0].value = \"\";\r\n }\r\n }\r\n else if (formula.type === \"DateTime\" && operator !== \"Between\") {\r\n if (operator && operator.length > 0) {\r\n currentData[0].value = \"1\";\r\n }\r\n else {\r\n currentData[0].value = \"\";\r\n }\r\n }\r\n else {\r\n if (currentData[0].field !== 'Fixed Number') {\r\n currentData[0].value = \"\";\r\n }\r\n currentData[0].expValue = \"\";\r\n }\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n formulaUpdateCheck(true);\r\n };\r\n const addGroup = (e) => {\r\n const newRow = attributeType !== \"Number\" ? { groupdataid: newGuid(), operatorSId: newGuid(), operatorS: '', fieldId: newGuid(), field: '' } : { groupdataid: newGuid(), operatorSId: newGuid(), operatorS: '', fieldId: newGuid(), field: '', valueId: newGuid(), value: '', operatorMId: newGuid(), operatorM: '' }\r\n let newGroup = {\r\n groupid: newGuid(),\r\n functions: [newRow],\r\n operatorMId: newGuid(),\r\n operatorM: ''\r\n };\r\n formula.groups.push(newGroup);\r\n setFormulaJson({ ...formula });\r\n formulaUpdateCheck(true);\r\n };\r\n const onTriggerCreate = (event) => {\r\n if (event.value) {\r\n formula.oncreate = event.value;\r\n setFormulaJson({ ...formula });\r\n }\r\n else {\r\n formula.oncreate = event.value;\r\n formula.onupdate = event.value;\r\n setFormulaJson({ ...formula });\r\n }\r\n if (formula.formula === setFormula.formula) {\r\n formulaUpdated(false);\r\n }\r\n let triggerSettingObject = JSON.parse(setFormula.triggerSetting);\r\n if (triggerSettingObject.onCreate) {\r\n if (triggerSettingObject.onCreate !== event.value || triggerSettingObject.onUpdate === true) {\r\n formulaUpdated(true);\r\n } else {\r\n formulaUpdated(false);\r\n }\r\n\r\n } else if (event.value === true) {\r\n formulaUpdated(true);\r\n } else {\r\n formulaUpdated(false);\r\n }\r\n\r\n }\r\n const onTriggerUpdate = (event) => {\r\n if (event.value) {\r\n formula.oncreate = event.value;\r\n formula.onupdate = event.value;\r\n setFormulaJson({ ...formula });\r\n }\r\n else {\r\n formula.onupdate = event.value;\r\n setFormulaJson({ ...formula });\r\n }\r\n\r\n let triggerSettingObject = JSON.parse(setFormula.triggerSetting);\r\n if (triggerSettingObject.onUpdate) {\r\n if (triggerSettingObject.onUpdate !== event.value || (triggerSettingObject.onCreate !== formula.oncreate)) {\r\n formulaUpdated(true);\r\n } else {\r\n if (formula.formula === setFormula.formula)\r\n formulaUpdated(false);\r\n }\r\n\r\n } else if (event.value === true || triggerSettingObject.onCreate !== formula.oncreate) {\r\n formulaUpdated(true);\r\n } else {\r\n formulaUpdated(false);\r\n }\r\n }\r\n const closeFormulaDialog = () => {\r\n if (setFormula && setFormula.formula) {\r\n formula.formula = setFormula.formula;\r\n formula.groups = JSON.parse(setFormula.formulaJson);\r\n if (setFormula && setFormula.triggerSetting && setFormula.triggerSetting.length > 0) {\r\n let triggerSetting = JSON.parse(setFormula.triggerSetting);\r\n formula.oncreate = triggerSetting.onCreate;\r\n formula.onupdate = triggerSetting.onUpdate;\r\n formula.formulaEnabled = triggerSetting.formulaEnabled;\r\n }\r\n let obj = assignAttrIds(formula);\r\n setFormulaJson(obj);\r\n }\r\n else {\r\n let baseJson = defaultJson;\r\n if (setFormula && setFormula.formulaJson) {\r\n let groups = JSON.parse(setFormula.formulaJson);\r\n baseJson.groups = groups;\r\n baseJson.formula = setFormula.formula;\r\n }\r\n if (setFormula && setFormula.triggerSetting && setFormula.triggerSetting.length > 0) {\r\n let triggerSetting = JSON.parse(setFormula.triggerSetting);\r\n if (triggerSetting.onCreate !== undefined) {\r\n baseJson.oncreate = triggerSetting.onCreate;\r\n }\r\n\r\n if (triggerSetting.onUpdate !== undefined) {\r\n baseJson.onupdate = triggerSetting.onUpdate;\r\n }\r\n\r\n }\r\n let obj = assignAttrIds(baseJson);\r\n obj.name = attributeName;\r\n obj.type = attributeType;\r\n setFormulaJson(obj);\r\n }\r\n setFormulaInvalid(false);\r\n setCircularReference(false);\r\n setButtonDisableStatus(true);\r\n setShowDialog(false);\r\n }\r\n const onSaveFormulaBuilder = () => {\r\n checkWarning();\r\n }\r\n const showFormula = (e) => {\r\n setToggle(e.target.value);\r\n formulaStatus(e.target.value);\r\n // if (formula.formula != undefined && formula.formula.length > 0) {\r\n // formulaStatus(e.target.value);\r\n // }\r\n }\r\n //#endregion\r\n\r\n //#region Methods\r\n const setCircularStatus = () => {\r\n let isCircular = false;\r\n formula.groups.forEach(group => {\r\n group.functions.forEach(fnc => {\r\n if (fnc.field !== undefined && fnc.field.length > 0) {\r\n if (fnc.isCircular === true) {\r\n isCircular = true;\r\n }\r\n }\r\n });\r\n });\r\n setCircularReference(isCircular);\r\n }\r\n const formulaUpdateCheck = (val) => {\r\n if (isCirc) {\r\n formulaUpdated(false);\r\n }\r\n else {\r\n formulaUpdated(formulaOld && formulaOld === formula.formula ? false : val);\r\n }\r\n }\r\n const checkWarning = () => {\r\n if (formula && formula.groups && formula.groups.length > 0) {\r\n switch (formula.type) {\r\n case \"String\":\r\n return checkStringWarning();\r\n case \"Number\":\r\n return checkNumberWarning();\r\n case \"DateTime\":\r\n return checkDateTimeWarning();\r\n\r\n default:\r\n return \"\";\r\n }\r\n }\r\n }\r\n const checkNumberWarning = () => {\r\n let isInvalid = false;\r\n let groupIndex = 0;\r\n\r\n formula.groups.forEach(group => {\r\n groupIndex++;\r\n let funcIndex = 0;\r\n group.isWarning = false;\r\n group.isOperatorMInvalid = false;\r\n group.functions.forEach(fnc => {\r\n funcIndex++;\r\n fnc.isWarning = false;\r\n fnc.isOperatorSInvalid = false;\r\n fnc.isFieldInvalid = false;\r\n fnc.isExponentInvalid = false;\r\n fnc.isValueInvalid = false;\r\n fnc.isOperatorMInvalid = false;\r\n //#region OperatorS \r\n\r\n //If Operator is there\r\n if (fnc.operatorS !== undefined && fnc.operatorS.length > 0) {\r\n if (fnc.operatorS === 'exponent') {\r\n if (!fnc.expValue || (fnc.expValue !== undefined && fnc.expValue.length <= 0)) {\r\n fnc.isWarning = true;\r\n fnc.isExponentInvalid = true;\r\n }\r\n if (fnc.field !== undefined && fnc.field.length > 0) {\r\n if (fnc.field === 'Fixed Number') {\r\n if (!fnc.value || (fnc.value !== undefined && fnc.value.length <= 0)) {\r\n fnc.isValueInvalid = true;\r\n fnc.isWarning = true;\r\n }\r\n }\r\n }\r\n else {\r\n fnc.isWarning = true;\r\n fnc.isFieldInvalid = true;\r\n }\r\n }\r\n else if (fnc.field !== undefined && fnc.field.length > 0) {\r\n if (fnc.field === 'Fixed Number') {\r\n if (!fnc.value || (fnc.value !== undefined && fnc.value.length <= 0)) {\r\n fnc.isValueInvalid = true;\r\n fnc.isWarning = true;\r\n }\r\n }\r\n }\r\n else {\r\n fnc.isFieldInvalid = true;\r\n fnc.isWarning = true;\r\n }\r\n }\r\n //Operator Not selected\r\n else if (fnc.field !== undefined && fnc.field.length > 0) {\r\n if (fnc.field === 'Fixed Number') {\r\n if (!fnc.value || (fnc.value !== undefined && fnc.value.length <= 0)) {\r\n fnc.isValueInvalid = true;\r\n fnc.isWarning = true;\r\n }\r\n }\r\n else if (fnc.isLinkedAttr !== undefined && fnc.isLinkedAttr) {\r\n fnc.isOperatorSInvalid = true;\r\n fnc.isWarning = true;\r\n }\r\n }\r\n //both OperatorS and field are empty\r\n else if (!fnc.operatorS || (fnc.operatorS !== undefined && fnc.operatorS.length <= 0) && !fnc.field && (fnc.field != undefined && fnc.field.length <= 0)) {\r\n fnc.isFieldInvalid = true;\r\n fnc.isWarning = true;\r\n }\r\n else {\r\n fnc.isFieldInvalid = true;\r\n fnc.isWarning = true;\r\n }\r\n if (funcIndex < group.functions.length) {\r\n if (!fnc.operatorM || (fnc.operatorM !== undefined && fnc.operatorM.length <= 0)) {\r\n //warning\r\n fnc.isOperatorMInvalid = true;\r\n fnc.isWarning = true;\r\n }\r\n }\r\n if (fnc.isWarning === true) {\r\n isInvalid = true;\r\n }\r\n //#endregion \r\n });\r\n\r\n if (formula.groups[groupIndex] !== undefined) {\r\n if (!group.operatorM || (group.operatorM !== undefined && group.operatorM.length <= 0)) {\r\n isInvalid = true;\r\n group.isWarning = true;\r\n group.isOperatorMInvalid = true;\r\n }\r\n }\r\n });\r\n setFormulaJson({ ...formula });\r\n setFormulaInvalid(isInvalid);\r\n if (!isInvalid) {\r\n getFormula({ 'formula': generateFormula(), 'formulaJson': exportJson().groups, 'circularReference': circularReference, 'validFormula': isInvalid === false ? true : false, 'triggerSetting': { 'onCreate': formula.oncreate, 'onUpdate': formula.onupdate, 'formulaEnabled': toggle } });\r\n }\r\n saveStatus(!isInvalid);\r\n }\r\n const checkStringWarning = () => {\r\n let isInvalid = false;\r\n let groupIndex = 0;\r\n formula.groups.forEach(group => {\r\n groupIndex++;\r\n let funcIndex = 0;\r\n group.isWarning = false;\r\n group.isOperatorMInvalid = false;\r\n group.functions.forEach(fnc => {\r\n funcIndex++;\r\n fnc.isWarning = false;\r\n fnc.isOperatorSInvalid = false;\r\n fnc.isFieldInvalid = false;\r\n //#region OperatorS \r\n\r\n //If Operator is there\r\n if (fnc.operatorS !== undefined && fnc.operatorS.length > 0) {\r\n if (!fnc.field || (fnc.field !== undefined && fnc.field.length <= 0)) {\r\n fnc.isWarning = true;\r\n fnc.isFieldInvalid = true;\r\n }\r\n }\r\n else if (!fnc.field || (fnc.field !== undefined && fnc.field.length <= 0)) {\r\n fnc.isWarning = true;\r\n fnc.isFieldInvalid = true;\r\n }\r\n if (funcIndex < group.functions.length) {\r\n if (!fnc.operatorM || (fnc.operatorM !== undefined && fnc.operatorM.length <= 0)) {\r\n fnc.isOperatorMInvalid = true;\r\n fnc.isWarning = true;\r\n }\r\n }\r\n if (fnc.isWarning === true) {\r\n isInvalid = true;\r\n }\r\n //#endregion \r\n });\r\n if (formula.groups[groupIndex] !== undefined) {\r\n if (!group.operatorM && (group.operatorM !== undefined && group.operatorM.length <= 0)) {\r\n isInvalid = true;\r\n group.isWarning = true;\r\n group.isOperatorMInvalid = true;\r\n }\r\n }\r\n });\r\n setFormulaJson({ ...formula });\r\n setFormulaInvalid(isInvalid);\r\n if (!isInvalid) {\r\n getFormula({ 'formula': generateFormula(), 'formulaJson': exportJson().groups, 'circularReference': circularReference, 'validFormula': isInvalid === false ? true : false, 'triggerSetting': { 'onCreate': formula.oncreate, 'onUpdate': formula.onupdate, 'formulaEnabled': toggle } });\r\n }\r\n saveStatus(!isInvalid);\r\n }\r\n const checkDateTimeWarning = () => {\r\n let isInvalid = false;\r\n let groupIndex = 0;\r\n formula.groups.forEach(group => {\r\n groupIndex++;\r\n let funcIndex = 0;\r\n group.isWarning = false;\r\n group.isOperatorMInvalid = false;\r\n group.functions.forEach(fnc => {\r\n funcIndex++;\r\n fnc.isWarning = false;\r\n fnc.isOperatorSInvalid = false;\r\n fnc.isFieldInvalid = false;\r\n //#region OperatorS \r\n\r\n //If Operator is there\r\n if (fnc.operatorS !== undefined && fnc.operatorS.length > 0) {\r\n if (!fnc.field || (fnc.field !== undefined && fnc.field.length <= 0)) {\r\n fnc.isWarning = true;\r\n fnc.isFieldInvalid = true;\r\n fnc.isOperatorSInvalid = false;\r\n }\r\n }\r\n else if (fnc.field !== undefined && fnc.field.length > 0) {\r\n if (!fnc.operatorS || (fnc.operatorS !== undefined && fnc.operatorS.length <= 0)) {\r\n fnc.isWarning = true;\r\n fnc.isFieldInvalid = false;\r\n fnc.isOperatorSInvalid = true;\r\n }\r\n }\r\n else {\r\n fnc.isWarning = true;\r\n fnc.isFieldInvalid = true;\r\n fnc.isOperatorSInvalid = true;\r\n }\r\n\r\n if (fnc.isWarning === true) {\r\n isInvalid = true;\r\n }\r\n //#endregion \r\n });\r\n\r\n });\r\n setFormulaJson({ ...formula });\r\n setFormulaInvalid(isInvalid);\r\n if (!isInvalid) {\r\n getFormula({ 'formula': generateFormula(), 'formulaJson': exportJson().groups, 'circularReference': circularReference, 'validFormula': isInvalid === false ? true : false, 'triggerSetting': { 'onCreate': formula.oncreate, 'onUpdate': formula.onupdate, 'formulaEnabled': toggle } });\r\n }\r\n saveStatus(!isInvalid);\r\n }\r\n const newGuid = () => {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n }\r\n // checkin circular reference for passing attribute\r\n const checkCircularDepen = (selectedAttr) => {\r\n let isCircular = false;\r\n let attrObj = attrList.filter(attr => attr.attributeName === selectedAttr);\r\n if (attrObj && attrObj.length > 0) {\r\n let formula = attrObj[0].formula;\r\n const formulaJson = attrObj[0].formulaJson;\r\n const json = formulaJson ? JSON.parse(formulaJson) : [];\r\n\r\n if (formula && formula.length > 0 && json && json.length > 0) {\r\n for (const func of json) {\r\n if (func && func.functions) {\r\n for (const functionObj of func.functions) {\r\n // here do not compare lower case or upper case of attribute name\r\n // because different attributes like Attr1, attr1, aTTr1, etc. would be considered as different attributes\r\n // as we do not store id of attribute for some reason\r\n if (functionObj && functionObj.field && functionObj.field === attributeName) {\r\n isCircular = true;\r\n return true;\r\n } else if (functionObj && functionObj.field) {\r\n let res = checkCircularDepen(functionObj.field);\r\n if (res) {\r\n isCircular = true;\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return isCircular;\r\n }\r\n const removeLastRow = (groupid, groupdataid) => {\r\n let form = formula.groups.filter(e => e.groupid === groupid);\r\n if (form.length > 0 && form[0].group && form[0].functions.length > 1) {\r\n if (form[0].group[form[0].functions.length - 1].operatorS === \"\") {\r\n form[0].functions.pop();\r\n }\r\n }\r\n formula.formula = generateFormula();\r\n setFormulaJson({ ...formula });\r\n }\r\n const assignAttrIds = (json) => {\r\n json.id = newGuid();\r\n if (json.groups && json.groups.length > 0) {\r\n json.groups.forEach(group => {\r\n group.groupid = newGuid();\r\n group.operatorMId = newGuid();\r\n if (group && group.functions && group.functions.length > 0) {\r\n group.functions.forEach(row => {\r\n row.groupdataid = newGuid();\r\n row.fieldId = newGuid();\r\n row.operatorSId = newGuid();\r\n });\r\n }\r\n });\r\n }\r\n return json;\r\n }\r\n // removing all DOM Id reference before saving to DB\r\n const exportJson = () => {\r\n if (formula && formula.groups && formula.groups.length > 0) {\r\n let json = structuredClone(formula);\r\n json.groups.forEach(group => {\r\n delete group.groupid;\r\n delete group.operatorMId;\r\n delete group.isOperatorMInvalid;\r\n delete group.isWarning;\r\n if (!group.operatorM || group.operatorM !== undefined && group.operatorM.length <= 0) {\r\n delete group.operatorM;\r\n }\r\n group.functions.forEach(fnc => {\r\n delete fnc.fieldId;\r\n delete fnc.isWarning;\r\n delete fnc.isOperatorSInvalid;\r\n delete fnc.isExponentInvalid;\r\n delete fnc.isFieldInvalid;\r\n delete fnc.isValueInvalid;\r\n delete fnc.isOperatorMInvalid;\r\n\r\n if (!fnc.field || fnc.field !== undefined && fnc.field.length <= 0) {\r\n delete fnc.field;\r\n }\r\n delete fnc.groupdataid;\r\n delete fnc.operatorSId;\r\n if (!fnc.operatorS || fnc.operatorS !== undefined && fnc.operatorS.length <= 0) {\r\n delete fnc.operatorS;\r\n }\r\n delete fnc.operatorMId;\r\n if (!fnc.operatorM || fnc.operatorM !== undefined && fnc.operatorM.length <= 0) {\r\n delete fnc.operatorM;\r\n }\r\n delete fnc.valueId;\r\n if (!fnc.value || fnc.value !== undefined && fnc.value.length <= 0) {\r\n delete fnc.value;\r\n }\r\n //expValue\r\n if (!fnc.expValue || fnc.expValue !== undefined && fnc.expValue.length <= 0) {\r\n delete fnc.expValue;\r\n }\r\n if (formula.type === \"Number\") {\r\n reOrderNumProperty(fnc);\r\n }\r\n });\r\n });\r\n setJsonData(json);\r\n return json;\r\n }\r\n\r\n }\r\n const generateNumberFormula = () => {\r\n\r\n formulaText = '';\r\n if (formula && formula.groups && formula.groups.length > 0) {\r\n formula.groups.forEach(group => {\r\n if (group && group.functions && group.functions.length > 1)\r\n formulaText += '(';\r\n if (group && group.functions && group.functions.length > 0) {\r\n group.functions.forEach(row => {\r\n\r\n if (row.operatorS && row.operatorS.length > 0) {\r\n\r\n if (row.operatorS === 'exponent') {\r\n let fieldValue = row.field === 'Fixed Number' ? row.value < 0 ? '(' + row.value + ')' : row.value : row.field ? row.field : \"\";\r\n let expo = row.expValue ? row.expValue < 0 ? '(' + row.expValue + ')' : row.expValue.toString() : '';\r\n formulaText += '(' + (fieldValue + \"^\" + expo + ')');\r\n }\r\n else if (row.operatorS === 'absolute') {\r\n formulaText += 'abs (' + (row.field === 'Fixed Number' ? row.value : row.field ? row.field : \"\") + ')';\r\n }\r\n else if (row.operatorS === 'count') {\r\n formulaText += 'count (' + (row.field === 'Fixed Number' ? row.value : row.field ? row.field : \"\") + ')';\r\n }\r\n else if (row.operatorS === 'min') {\r\n formulaText += 'min (' + (row.field === 'Fixed Number' ? row.value : row.field ? row.field : \"\") + ')';\r\n }\r\n else if (row.operatorS === 'max') {\r\n formulaText += 'max (' + (row.field === 'Fixed Number' ? row.value : row.field ? row.field : \"\") + ')';\r\n }\r\n else if (row.operatorS === 'avg') {\r\n formulaText += 'avg (' + (row.field === 'Fixed Number' ? row.value : row.field ? row.field : \"\") + ')';\r\n }\r\n else if (row.operatorS === 'sum') {\r\n formulaText += 'sum (' + (row.field === 'Fixed Number' ? row.value : row.field ? row.field : \"\") + ')';\r\n }\r\n else if (row.operatorS === \"round\") {\r\n formulaText += 'round (' + (row.field === 'Fixed Number' ? row.value : row.field ? row.field : \"\") + ')';\r\n }\r\n else if (row.operatorS === \"floor\") {\r\n formulaText += 'floor (' + (row.field === 'Fixed Number' ? row.value : row.field ? row.field : \"\") + ')';\r\n }\r\n else if (row.operatorS === \"ceil\") {\r\n formulaText += 'ceil (' + (row.field === 'Fixed Number' ? row.value : row.field ? row.field : \"\") + ')';\r\n }\r\n else if (row.operatorS === '') {\r\n formulaText += (row.field === 'Fixed Number' ? \"\" : row.field ? row.field : \"\");\r\n }\r\n }\r\n else {\r\n formulaText += (row.field === 'Fixed Number' ? row.value ? row.value < 0 ? '(' + row.value + ')' : row.value : \"\" : row.field ? row.field : \"\");\r\n }\r\n if (row.operatorM && row.operatorM.length > 0) {\r\n if (row.operatorM === 'divide') {\r\n formulaText += ' / ';\r\n }\r\n else if (row.operatorM === 'multiply') {\r\n formulaText += ' x ';\r\n }\r\n else if (row.operatorM === 'subtract' || row.operatorM === 'minutes between' || row.operatorM === 'hours between' || row.operatorM === 'days between' || row.operatorM === 'weeks between' || row.operatorM === 'months between' || row.operatorM === 'years between') {\r\n formulaText += ' - ';\r\n }\r\n else if (row.operatorM === 'add') {\r\n formulaText += ' + ';\r\n }\r\n else if (row.operatorM === 'modular') {\r\n formulaText = formulaText + (row.field === 'Fixed Number' || row.operatorM.length > 0 ? \"\" : row.field ? row.field : \"\") + ' % ';\r\n }\r\n\r\n }\r\n });\r\n }\r\n if (group && group.functions && group.functions.length > 1)\r\n formulaText += ')';\r\n if (group.operatorM === 'add') {\r\n formulaText += ' + ';\r\n }\r\n if (group.operatorM === 'subtract') {\r\n formulaText += ' - ';\r\n }\r\n if (group.operatorM === 'divide') {\r\n formulaText += ' / ';\r\n }\r\n if (group.operatorM === 'multiply') {\r\n formulaText += ' x ';\r\n }\r\n });\r\n }\r\n formulaText = formulaText === '()' ? '' : formulaText;\r\n\r\n return formulaText;\r\n }\r\n const generateDateTimeFormula = () => {\r\n formulaText = '';\r\n if (formula.groups && formula.groups.length > 0) {\r\n formula.groups.forEach(group => {\r\n if (group && group.functions && group.functions.length > 0) {\r\n group.functions.forEach(row => {\r\n if (row.field && row.field && row.field.length > 0) {\r\n if (row.operatorS && row.operatorS === 'plus') {\r\n formulaText += row.field + ' + ' + row.value + ' day(s)';\r\n }\r\n else if (row.operatorS && row.operatorS === 'minus') {\r\n formulaText += row.field + ' - ' + row.value + ' day(s)';\r\n }\r\n else {\r\n formulaText += row.field;\r\n\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n formulaText = formulaText === '()' ? '' : formulaText;\r\n return formulaText;\r\n }\r\n const generateStringFormula = () => {\r\n formulaText = '';\r\n if (formula.groups && formula.groups.length > 0) {\r\n formula.groups.forEach(group => {\r\n if (group && group.functions && group.functions.length > 1)\r\n formulaText += '(';\r\n if (group && group.functions && group.functions.length > 0) {\r\n group.functions.forEach(row => {\r\n if (row.operatorS === 'concatenate') {\r\n formulaText += (row.field ? row.field : '') + ' + ';\r\n }\r\n else {\r\n formulaText += (row.operatorS ? row.operatorS : '') + ' (' + row.field + ')';\r\n }\r\n });\r\n }\r\n if (group && group.functions && group.functions.length > 1)\r\n formulaText += ')';\r\n if (group.operatorM === 'concatenate') {\r\n formulaText += ' + ';\r\n }\r\n });\r\n }\r\n formulaText = formulaText.trim() === '()' ? '' : formulaText;\r\n return formulaText;\r\n }\r\n const generateFormula = () => {\r\n if (formula && formula.groups) {\r\n switch (formula.type) {\r\n case \"String\":\r\n return generateStringFormula();\r\n case \"Number\":\r\n return generateNumberFormula();\r\n case \"DateTime\":\r\n return generateDateTimeFormula();\r\n\r\n default:\r\n return \"\";\r\n }\r\n }\r\n }\r\n const reOrderNumProperty = (funcObj) => {\r\n let objFunc = Object.assign({}, funcObj);\r\n delete funcObj['operatorS'];\r\n delete funcObj['operatorM'];\r\n delete funcObj['field'];\r\n delete funcObj['expValue'];\r\n delete funcObj['value'];\r\n if (objFunc.operatorS && objFunc.operatorS !== undefined && objFunc.operatorS.length > 0) {\r\n funcObj['operatorS'] = objFunc['operatorS'];\r\n }\r\n if (objFunc.field && objFunc.field !== undefined && objFunc.field.length > 0) {\r\n funcObj['field'] = objFunc['field'];\r\n }\r\n if (objFunc.value && objFunc.value !== undefined && objFunc.value.length > 0) {\r\n funcObj['value'] = objFunc['value'];\r\n }\r\n if (objFunc.expValue && objFunc.expValue !== undefined && objFunc.expValue.length > 0) {\r\n funcObj['expValue'] = objFunc['expValue'];\r\n }\r\n if (objFunc.operatorM && objFunc.operatorM !== undefined && objFunc.operatorM.length > 0) {\r\n funcObj['operatorM'] = objFunc['operatorM'];\r\n }\r\n }\r\n const saveStatus = (val) => {\r\n setButtonDisableStatus(val);\r\n setShowDialog(!val);\r\n }\r\n const CustomTitleBar = () => {\r\n return (\r\n <>\r\n
    \r\n {t(\"configure_formula_for\")}\r\n  \r\n {attributeName} \r\n ({attributeType})\r\n
    \r\n \r\n );\r\n };\r\n const formulaUpdated = (val) => {\r\n let triggerSettingObject = setFormula && setFormula.triggerSetting ? JSON.parse(setFormula.triggerSetting) : {};\r\n let oldAttr = setFormula.formula;\r\n let newAttr = formula.formula;\r\n const oldJson = setFormula && setFormula.formulaJson ? JSON.parse(setFormula.formulaJson) : [];\r\n let isChanged = oldJson.length !== formula.groups.length;\r\n if (!isChanged) {\r\n let { groups } = formula;\r\n for (let i = 0; i < oldJson.length; i++) {\r\n const oldGroup = oldJson[i];\r\n let newGroup = groups[i];\r\n for (let functionIndex = 0; functionIndex < oldGroup.functions.length; functionIndex++) {\r\n const oldFunction = oldGroup.functions[functionIndex];\r\n const newFunction = newGroup.functions[functionIndex];\r\n const oldOperatorS = oldFunction.operatorS ? oldFunction.operatorS : '';\r\n const oldOperatorM = oldFunction.operatorM ? oldFunction.operatorM : '';\r\n if (\r\n oldFunction.field !== newFunction.field ||\r\n oldOperatorS !== newFunction.operatorS ||\r\n oldOperatorM !== newFunction.operatorM\r\n ) {\r\n isChanged = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n const disableButton = !isChanged;\r\n newAttr = formula.type === \"DateTime\" ? newAttr.replace(' day(s)', '') : newAttr;\r\n if (formula.formula.length <= 0) {\r\n setButtonDisableStatus(true);\r\n }\r\n else if (newAttr === oldAttr) {\r\n if (triggerSettingObject && (triggerSettingObject.onCreate == undefined && formula.oncreate == true && formula.onupdate == true)) {\r\n setButtonDisableStatus(true);\r\n }\r\n else if (triggerSettingObject && (triggerSettingObject.onCreate === formula.oncreate && triggerSettingObject.onUpdate === formula.onupdate)) {\r\n setButtonDisableStatus(disableButton);\r\n }\r\n else {\r\n setButtonDisableStatus(disableButton);\r\n }\r\n }\r\n else {\r\n setButtonDisableStatus(disableButton);\r\n }\r\n }\r\n //#endregion\r\n\r\n return (\r\n
    \r\n
    \r\n {t(\"calculate_formula\")}\r\n
    \r\n\r\n {loading &&\r\n \r\n }\r\n\r\n \r\n {toggle && (
    \r\n
    \r\n {t(\"formula\")}\r\n
    \r\n 0 && !showDialog ? formula.type === \"DateTime\" && !formula.formula.endsWith('day(s)') ? formula.formula + ' day(s)' : formula.formula : ''} />\r\n { setShowDialog(true) }}>\r\n \r\n {t(\"configure_formula\")}\r\n \r\n
    )}\r\n\r\n {showDialog && (
    \r\n } onClose={closeFormulaDialog} >\r\n
    \r\n
    \r\n
    \r\n {t(\"trigger_setting\")} :  \r\n 0 ? false : true}\r\n onChange={onTriggerCreate} />\r\n 0 ? false : true}\r\n onChange={onTriggerUpdate} />\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"formula_builder\")}\r\n
    \r\n\r\n {formula && formula.groups && formula.groups.map((groupf, i) => (\r\n <>\r\n
    \r\n \r\n
    \r\n\r\n {formula.type !== \"DateTime\" && (i < formula.groups.length - 1) && (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {groupf.isWarning && ()}
    \r\n
    \r\n \r\n )}\r\n\r\n \r\n ))}\r\n {operators.type !== \"DateTime\" && (\r\n
    \r\n
    \r\n \r\n \r\n {t(\"add_group\")}\r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n {circularReference && (\r\n
    \r\n \r\n \r\n {t(\"errors.circular_reference_present\")}\r\n \r\n
    \r\n )\r\n }\r\n {formulaInvalid && (\r\n
    \r\n \r\n \r\n {t(\"errors.fields_mandatory\")}\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 FormulaDialog\r\n\r\n","import React, { useState } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { DropDownList, MultiSelect } from \"@progress/kendo-react-dropdowns\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst StatesRules = ({ roles, onClose, save, updateData, formFields, defaultFormFields }) => {\r\n\r\n const { t } = useTranslation([\r\n \"attribute/state_field\",\r\n ]);\r\n\r\n const uuidv4 = () => {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n const [states, setStates] = useState(formFields.statefield.filter((option) => option.name.trim() !== \"\"));\r\n const [savingRules, setSavingRules] = useState(false);\r\n const [rules, setRules] = useState(formFields.rules.length === 0 ? [\r\n {\r\n fromStateId: \"\",\r\n toStateId: \"\",\r\n roleIds: [],\r\n order: 10000000000,\r\n _id: uuidv4(),\r\n }\r\n ] : formFields.rules);\r\n \r\n const [allowOnlyTransitionConfigurations, setAllowOnlyTransitionConfigurations] = useState(formFields.allowOnlyTransitionConfigurations);\r\n\r\n const getFromStateValue = (fromStateId) => {\r\n debugger\r\n return states.find(state => state._id === fromStateId) || {};\r\n }\r\n\r\n const getToStateValue = (toStateId) => {\r\n return states.find(state => state._id === toStateId) || {};\r\n }\r\n\r\n const handleRuleChange = (event, dataItem) => {\r\n debugger\r\n const selectedRuleId = dataItem._id;\r\n let { name, value } = event.target;\r\n if (name === \"roleIds\") {\r\n value = value.map(role => role._id);\r\n } else {\r\n value = value._id;\r\n }\r\n const newRules = rules.map((rule) => {\r\n if (rule._id === selectedRuleId) {\r\n return {\r\n ...rule,\r\n [name]: value\r\n }\r\n }\r\n return rule;\r\n });\r\n newRules.forEach((rule, index) => rule.hasSameRule = hasSameRule(rule, index, newRules));\r\n setRules(newRules);\r\n }\r\n\r\n const hasSameRule = (rule, index, newRules) => {\r\n return newRules.some((r, ruleIndex) => r.fromStateId === rule.fromStateId && r.toStateId === rule.toStateId && index !== ruleIndex);\r\n }\r\n\r\n const saveRules = async (e) => {\r\n try {\r\n debugger\r\n e.preventDefault();\r\n setSavingRules(true);\r\n await saveStates();\r\n const mappedRules = rules\r\n .filter(rule => rule.fromStateId && rule.toStateId && rule.roleIds.length > 0)\r\n .map(rule => ({\r\n _id: rule._id,\r\n fromStateId: rule.fromStateId,\r\n toStateId: rule.toStateId,\r\n order: rule.order,\r\n roleIds: rule.roleIds,\r\n }));\r\n\r\n const filteredRules = [...mappedRules]\r\n .filter(rule => rule._id)\r\n .sort((a, b) => a.order - b.order)\r\n .filter((rule, index, self) => index === self.findIndex((t) => t._id === rule._id));\r\n\r\n setRules(filteredRules);\r\n updateData(\"rules\", filteredRules);\r\n updateData(\"allowOnlyTransitionConfigurations\", allowOnlyTransitionConfigurations);\r\n await save();\r\n onClose();\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n setSavingRules(false);\r\n }\r\n };\r\n\r\n const saveStates = async () => {\r\n try {\r\n const trimmedStates = states.filter(state => state.name.trim().length > 0).map((state, index) => {\r\n state.name = state.name.trim();\r\n state.order = parseInt((index + 1) * 10000000000);\r\n return state;\r\n });\r\n\r\n const newStates = [...trimmedStates]\r\n .filter(state => state._id)\r\n .sort((a, b) => a.order - b.order)\r\n .filter((state, index, self) => index === self.findIndex((t) => t._id === state._id));\r\n\r\n setStates(newStates);\r\n updateData(\"statefield\", newStates);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n const isSaveDisabled = () => {\r\n if (savingRules) {\r\n return true;\r\n }\r\n\r\n if (defaultFormFields.rules.length === 0 && rules.length === 0) {\r\n return true;\r\n }\r\n\r\n let isAnyRuleInvalid = rules.some(rule => (\r\n !rule.fromStateId ||\r\n !rule.toStateId ||\r\n rule.roleIds.length === 0 ||\r\n rule.hasSameRule ||\r\n rule.fromStateId === rule.toStateId\r\n ));\r\n if (isAnyRuleInvalid) {\r\n return true;\r\n }\r\n\r\n if (rules.length !== defaultFormFields.rules.length) {\r\n return false;\r\n }\r\n\r\n const ruleChanged = rules.some((rule, index) => {\r\n const defaultRule = defaultFormFields.rules[index];\r\n return (\r\n rule.fromStateId !== defaultRule.fromStateId ||\r\n rule.toStateId !== defaultRule.toStateId ||\r\n rule.roleIds.length !== defaultRule.roleIds.length ||\r\n rule.roleIds.some((roleId, roleIndex) => {\r\n return roleId !== defaultRule.roleIds[roleIndex];\r\n })\r\n );\r\n }) || defaultFormFields.allowOnlyTransitionConfigurations !== allowOnlyTransitionConfigurations;\r\n return !ruleChanged;\r\n }\r\n\r\n const isAnyDuplicateRules = () => {\r\n const hasDuplicate = rules.some(rule => rule.hasSameRule);\r\n const hasSameFromAndToState = rules.some(rule => {\r\n if (rule.fromStateId && rule.toStateId) {\r\n return rule.fromStateId === rule.toStateId;\r\n }\r\n return false;\r\n });\r\n\r\n return hasDuplicate || hasSameFromAndToState;\r\n };\r\n\r\n const getRolesSortedAlphabetically = (roles) => {\r\n return roles.sort((a, b) => a.roleName.localeCompare(b.roleName));\r\n }\r\n\r\n return (\r\n \r\n \r\n {savingRules && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {t(\"from_state\")}\r\n
    \r\n
    \r\n {t(\"to_state\")}\r\n
    \r\n
    \r\n {t(\"roles\")}\r\n
    \r\n
    \r\n
    \r\n {rules.map((rule, index) => (\r\n
    \r\n
    \r\n
    \r\n handleRuleChange(event, rule)}\r\n value={getFromStateValue(rule.fromStateId)}\r\n />\r\n
    \r\n
    \r\n { handleRuleChange(event, rule) }}\r\n value={getToStateValue(rule.toStateId)}\r\n />\r\n
    \r\n
    \r\n handleRuleChange(event, rule)}\r\n value={getRolesSortedAlphabetically(rule.roleIds.map(roleId => roles.find(role => role._id === roleId))).filter(role => role)}\r\n placeholder={t(\"select_roles_placeholder\")}\r\n />\r\n
    \r\n
    \r\n {\r\n const newRules = rules.filter((r, i) => i !== index);\r\n setRules(newRules);\r\n }}>\r\n
    \r\n
    \r\n
    \r\n ))}\r\n {isAnyDuplicateRules() && (\r\n
    \r\n \r\n {t(\"errors.duplicate_rules\")}\r\n \r\n
    \r\n )}\r\n
    \r\n setRules([\r\n ...rules,\r\n {\r\n fromStateId: \"\",\r\n toStateId: \"\",\r\n roleIds: [],\r\n order: rules.length > 0 ? parseInt((rules[rules.length - 1][\"order\"]) + 10000000000) : 10000000000,\r\n _id: uuidv4()\r\n }\r\n ])}\r\n >\r\n \r\n {t(\"add_rule\")}\r\n \r\n
    \r\n \r\n
    \r\n \r\n {savingRules && (\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 StatesRules;","export function isLibraryOrganization(organizationId) {\r\n return organizationId === process.env.REACT_APP_LIBRARY_ORGANIZATION_ID;\r\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 * as React from 'react';\nimport { getNestedValue } from '../../utils';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { TREELIST_COL_INDEX_ATTRIBUTE } from '../../constants';\nimport { classNames } from '@progress/kendo-react-common';\nexport var TreeListTextEditor = function (props) {\n var _a, _b;\n var onChange = React.useCallback(function (event) {\n if (props.onChange) {\n props.onChange({\n dataItem: props.dataItem,\n level: props.level,\n field: props.field,\n syntheticEvent: event,\n value: event.target.value\n });\n }\n }, [props.onChange, props.dataItem, props.level, props.field]);\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var editCellClasses = classNames((_a = {},\n _a['k-selected'] = props.isSelected,\n _a), props.className);\n var defaultRendering = (React.createElement(\"td\", __assign({ style: props.style, className: editCellClasses, \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected, role: 'gridcell' }, navigationAttributes, (_b = {}, _b[TREELIST_COL_INDEX_ATTRIBUTE] = props.colIndex, _b)),\n React.createElement(\"input\", { style: { width: '100%' }, className: \"k-input\", value: getNestedValue(props.field, props.dataItem) || '', onChange: onChange })));\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\nTreeListTextEditor.displayName = 'KendoReactTreeListTextEditor';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * Represents the TreeListToolbar component.\n */\nvar TreeListToolbar = /** @class */ (function (_super) {\n __extends(TreeListToolbar, _super);\n function TreeListToolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n TreeListToolbar.prototype.render = function () {\n return (React.createElement(\"div\", { className: \"k-toolbar k-grid-toolbar\" }, this.props.children));\n };\n return TreeListToolbar;\n}(React.Component));\nexport { TreeListToolbar };\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n TreeList,\r\n TreeListToolbar,\r\n mapTree,\r\n extendDataItem,\r\n TreeListTextEditor,\r\n moveTreeItem,\r\n TreeListDraggableRow\r\n} from '@progress/kendo-react-treelist';\r\n\r\nimport { getMaxExpandedLevel, uuidv4 } from './TreeDropdownHelper';\r\nimport { getIdsForTreeData, findElementInTree, findElementByLevelIndex } from './TreeDropdownHelper';\r\n\r\nconst subItemsField = 'items';\r\nconst expandField = 'expanded';\r\nconst editField = 'inEdit';\r\n\r\nconst Actions = ({ dataItem, Add, Remove }) => {\r\n return (\r\n \r\n \r\n \r\n {dataItem.root !== true &&\r\n \r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nfunction CustomCell(props) {\r\n const { dataItem, field, level, expanded, onExpandChange, moveUp, moveDown } = props;\r\n function handleExpand(event) {\r\n event.value = !expanded;\r\n event.dataItem = dataItem;\r\n onExpandChange(event, dataItem, level);\r\n }\r\n\r\n function handleEdit(event) {\r\n dataItem.onRowClick({ dataItem });\r\n }\r\n const [showDropdown, setShowDropdown] = useState(false);\r\n\r\n const handleMouseOver = () => {\r\n setShowDropdown(true);\r\n };\r\n\r\n const handleMouseOut = () => {\r\n setShowDropdown(false);\r\n };\r\n\r\n return (\r\n \r\n {\r\n level.length > 1 && level.slice(0, level.length - 1).map((_, index) => )\r\n }\r\n {\r\n dataItem.items && dataItem.items.length > 0 &&\r\n <>\r\n {\r\n expanded ?\r\n \r\n :\r\n \r\n }\r\n \r\n }\r\n \r\n {dataItem[field].slice(0, 30) + (dataItem[field].length > 30 ? '...' : '')}\r\n \r\n {dataItem.parentId &&\r\n \r\n {\r\n !dataItem.isFirst &&\r\n \r\n }\r\n {\r\n !dataItem.isLast &&\r\n \r\n }\r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nconst TreeDropdown = ({ defaultTreeDropdown, onUpdate, isNew }) => {\r\n\r\n const [data, setData] = useState([]);\r\n const [expanded, setExpanded] = useState([]);\r\n const [expandedLevel, setExpandedLevel] = useState([0]);\r\n const [editId, setEditId] = useState(null);\r\n\r\n useEffect(() => {\r\n const data = JSON.parse(JSON.stringify(defaultTreeDropdown));\r\n addFirstLastBoolean(data);\r\n const defaultData = data.length > 0 ? data : [];\r\n const defaultEditId = isNew ? (data.length > 0 && !editId ? data[0].id : editId) : editId;\r\n setData(defaultData);\r\n setEditId(defaultEditId);\r\n }, [defaultTreeDropdown]);\r\n\r\n const addFirstLastBoolean = (array) => {\r\n array.forEach((item, index) => {\r\n if (index === 0) {\r\n item.isFirst = true;\r\n } else if (index !== 0 && item.isFirst) {\r\n delete item.isFirst;\r\n }\r\n if (index === array.length - 1) {\r\n item.isLast = true;\r\n } else if (index !== array.length - 1 && item.isLast) {\r\n delete item.isLast;\r\n }\r\n if (item.items && item.items.length > 0) {\r\n addFirstLastBoolean(item.items);\r\n }\r\n });\r\n };\r\n\r\n const getFormattedData = (data) => {\r\n const formattedData = JSON.parse(JSON.stringify(data));\r\n formattedData.forEach(item => {\r\n delete item.isFirst;\r\n delete item.isLast;\r\n if (item.items && item.items.length > 0) {\r\n getFormattedData(item.items);\r\n }\r\n });\r\n return formattedData;\r\n }\r\n\r\n const rowClick = event => {\r\n setEditId(prevEditId => (prevEditId === event.dataItem.id ? null : event.dataItem.id));\r\n };\r\n\r\n const onExpandChange = event => {\r\n const newExpandedLevel = !event.value ? [...expandedLevel, event.dataItem.expandedLevel] : expandedLevel.filter(level => level < event.dataItem.expandedLevel);\r\n setExpandedLevel(newExpandedLevel);\r\n const expandedIds = getIdsForTreeData(data, [], newExpandedLevel);\r\n setExpanded(expandedIds);\r\n };\r\n\r\n const onItemChange = event => {\r\n const newData = [...data];\r\n const element = findElementInTree(newData, event.dataItem);\r\n element.text = event.value;\r\n setData(newData);\r\n onUpdate(getFormattedData(newData));\r\n }\r\n\r\n const onItemAdded = parentItem => {\r\n const newData = [...data];\r\n const element = parentItem ? findElementInTree(newData, parentItem) : null;\r\n const newItem = {\r\n id: uuidv4(),\r\n text: \"\",\r\n parentId: element?.id || null,\r\n items: [],\r\n expandedLevel: element?.expandedLevel + 1 || 0\r\n };\r\n if (element?.items) {\r\n element.items = [...element.items, newItem];\r\n } else {\r\n newData.push(newItem);\r\n }\r\n addFirstLastBoolean(newData);\r\n setData(newData);\r\n setExpanded(prevExpanded => [...prevExpanded, parentItem?.id || newItem.id]);\r\n const addExpandedLevel = newItem.expandedLevel - 1;\r\n if (!expandedLevel.includes(addExpandedLevel)) {\r\n setExpandedLevel(prevExpandedLevel => [...prevExpandedLevel, newItem.expandedLevel - 1]);\r\n }\r\n setEditId(newItem.id);\r\n onUpdate(getFormattedData(newData));\r\n };\r\n\r\n const onItemRemoved = removeItem => {\r\n const newData = [...data];\r\n const element = findElementInTree(newData, removeItem);\r\n if (!element) {\r\n return;\r\n }\r\n const parentElement = findElementInTree(newData, { id: element.parentId });\r\n if (parentElement) {\r\n parentElement.items = parentElement.items.filter(item => item.id !== element.id);\r\n } else {\r\n newData.splice(newData.indexOf(element), 1);\r\n }\r\n const maxTreeLevel = getMaxExpandedLevel(newData);\r\n if (expandedLevel.includes(maxTreeLevel)) {\r\n setExpandedLevel(prevExpandedLevel => prevExpandedLevel.filter(level => level < maxTreeLevel));\r\n }\r\n addFirstLastBoolean(newData);\r\n setData(newData);\r\n setEditId(prevEditId => (prevEditId === removeItem.id ? null : prevEditId));\r\n onUpdate(getFormattedData(newData));\r\n };\r\n\r\n const expandAll = (e) => {\r\n e.preventDefault();\r\n const currentExpandedLevel = [...expandedLevel];\r\n const maxExpandedLevel = getMaxExpandedLevel(data);\r\n if (currentExpandedLevel.length === maxExpandedLevel) {\r\n return;\r\n }\r\n const newExpandedLevel = [...currentExpandedLevel, currentExpandedLevel.length];\r\n const expandedIds = getIdsForTreeData(data, [], newExpandedLevel);\r\n setExpandedLevel(newExpandedLevel);\r\n setExpanded(expandedIds);\r\n };\r\n\r\n const collapseAll = (e) => {\r\n e.preventDefault();\r\n const currentExpandedLevel = [...expandedLevel];\r\n if (currentExpandedLevel.length === 1) {\r\n return;\r\n }\r\n const newExpandedLevel = currentExpandedLevel.filter(level => level !== currentExpandedLevel.length - 1);\r\n const expandedIds = getIdsForTreeData(data, [], newExpandedLevel);\r\n setExpandedLevel(newExpandedLevel);\r\n setExpanded(expandedIds);\r\n };\r\n\r\n const onRowDrop = (event) => {\r\n const { dragged, draggedOver } = event;\r\n const draggedOverElement = findElementByLevelIndex(data, draggedOver)\r\n const draggedElement = findElementByLevelIndex(data, dragged);\r\n if (!draggedElement || !draggedOverElement) {\r\n return;\r\n }\r\n draggedElement.parentId = draggedOverElement.id;\r\n const newData = moveTreeItem(\r\n data,\r\n dragged,\r\n draggedOver,\r\n subItemsField\r\n );\r\n addFirstLastBoolean(newData);\r\n setData(newData);\r\n onUpdate(getFormattedData(newData))\r\n };\r\n\r\n const handleMoveUp = (dataItem) => {\r\n const element = findElementInTree(data, dataItem);\r\n if (!element) {\r\n return;\r\n }\r\n const parentElement = findElementInTree(data, { id: element.parentId });\r\n if (!parentElement) {\r\n return;\r\n }\r\n const index = parentElement.items.findIndex(item => item.id === element.id);\r\n if (index === 0) {\r\n return;\r\n }\r\n if (index - 1 === 0) {\r\n element.isFirst = true;\r\n delete parentElement.items[0].isFirst;\r\n }\r\n parentElement.items.splice(index, 1);\r\n parentElement.items.splice(index - 1, 0, element);\r\n addFirstLastBoolean(data);\r\n setData(data);\r\n onUpdate(getFormattedData(data));\r\n };\r\n\r\n const handleMoveDown = (dataItem) => {\r\n const element = findElementInTree(data, dataItem);\r\n if (!element) {\r\n return;\r\n }\r\n const parentElement = findElementInTree(data, { id: element.parentId });\r\n if (!parentElement) {\r\n return;\r\n }\r\n const index = parentElement.items.findIndex(item => item.id === element.id);\r\n if (index === parentElement.items.length - 1) {\r\n return;\r\n }\r\n if (index + 1 === parentElement.items.length) {\r\n element.isLast = true;\r\n delete parentElement.items[parentElement.items.length - 1].isLast;\r\n }\r\n parentElement.items.splice(index, 1);\r\n parentElement.items.splice(index + 1, 0, element);\r\n addFirstLastBoolean(data);\r\n setData(data);\r\n onUpdate(getFormattedData(data));\r\n }\r\n\r\n return (\r\n {\r\n return extendDataItem(item, subItemsField, {\r\n [expandField]: expanded.includes(item.id),\r\n [editField]: item.id === editId,\r\n onRowClick: rowClick,\r\n })\r\n })}\r\n row={TreeListDraggableRow}\r\n editField={editField}\r\n expandField={expandField}\r\n subItemsField={subItemsField}\r\n onRowClick={rowClick}\r\n onRowDrop={onRowDrop}\r\n onItemChange={onItemChange}\r\n onExpandChange={onExpandChange}\r\n columns={[\r\n {\r\n cell: props => (\r\n \r\n )\r\n },\r\n {\r\n field: 'text',\r\n width: \"100%\",\r\n editCell: TreeListTextEditor,\r\n expandable: true,\r\n cell: props => (\r\n \r\n )\r\n }\r\n ]}\r\n toolbar={\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default TreeDropdown;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _a, _b;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { Keys, noop } from '@progress/kendo-react-common';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../virtualization/Virtualization';\nimport { TIME_PART } from './models';\nimport { SecondsService, MinutesService, HoursService, DayPeriodService, DOMService } from './services';\nimport { debounce, MAX_TIME, MIDNIGHT_DATE } from '../utils';\nvar SCROLL_THRESHOLD = 2; // < 2px threshold\nvar SNAP_THRESHOLD = 0.05; // % of the item height\nvar SCROLL_THROTTLE = 100; // ms\nvar SKIP = 0;\nvar getters = (_a = {},\n _a[Keys.end] = function (data, _) { return data[data.length - 1]; },\n _a[Keys.home] = function (data, _) { return data[0]; },\n _a[Keys.up] = function (data, index) { return data[index - 1]; },\n _a[Keys.down] = function (data, index) { return data[index + 1]; },\n _a);\nvar services = (_b = {},\n _b[TIME_PART.dayperiod] = DayPeriodService,\n _b[TIME_PART.hour] = HoursService,\n _b[TIME_PART.minute] = MinutesService,\n _b[TIME_PART.second] = SecondsService,\n _b);\n/**\n * @hidden\n */\nvar TimeList = /** @class */ (function (_super) {\n __extends(TimeList, _super);\n function TimeList(props) {\n var _this = _super.call(this, props) || this;\n _this.intl = null;\n _this._element = null;\n _this.service = null;\n _this.virtualization = null;\n _this.topOffset = 0;\n _this.bottomOffset = 0;\n _this.itemHeight = 0;\n _this.listHeight = 0;\n _this.topThreshold = 0;\n _this.bottomThreshold = 0;\n _this.animateToIndex = false;\n _this.focus = function (args) {\n Promise.resolve().then(function () {\n if (!_this.element) {\n return;\n }\n _this.element.focus(args);\n });\n };\n _this.itemOffset = function (scrollTop) {\n if (!_this.virtualization || !_this.service) {\n return -1;\n }\n var valueIndex = _this.service.selectedIndex(_this.props.value);\n var activeIndex = _this.virtualization.activeIndex();\n var offset = _this.virtualization.itemOffset(activeIndex);\n var distance = Math.abs(Math.ceil(scrollTop) - offset);\n if (valueIndex === activeIndex && distance < SCROLL_THRESHOLD) {\n return offset;\n }\n var scrollUp = valueIndex > activeIndex;\n var moveToNext = scrollUp && distance >= _this.bottomThreshold || !scrollUp && distance > _this.topThreshold;\n return moveToNext ? _this.virtualization.itemOffset(activeIndex + 1) : offset;\n };\n _this.calculateHeights = function () {\n if (!_this.dom.didCalculate) {\n return;\n }\n _this.itemHeight = _this.dom.itemHeight;\n _this.listHeight = _this.dom.timeListHeight;\n _this.topOffset = (_this.listHeight - _this.itemHeight) / 2;\n _this.bottomOffset = _this.listHeight - _this.itemHeight;\n _this.topThreshold = _this.itemHeight * SNAP_THRESHOLD;\n _this.bottomThreshold = _this.itemHeight * (1 - SNAP_THRESHOLD);\n };\n _this.configureServices = function (_a) {\n var _b = _a === void 0 ? _this.props : _a, min = _b.min, max = _b.max, value = _b.value;\n if (_this.service) {\n var _c = _this.service.limitRange(min || _this.min, max || _this.max, value || _this.props.value), newMin = _c[0], newMax = _c[1];\n _this.service.configure(_this.serviceSettings({ min: newMin, max: newMax }));\n }\n };\n _this.serviceSettings = function (settings) {\n var defaults = {\n boundRange: _this.props.boundRange || TimeList.defaultProps.boundRange,\n insertUndividedMax: false,\n min: cloneDate(_this.min),\n max: cloneDate(_this.max),\n part: _this.props.part,\n step: _this.step\n };\n var result = Object.assign({}, defaults, settings);\n result.boundRange = result.part.type !== 'hour' || _this.props.boundRange || TimeList.defaultProps.boundRange;\n return result;\n };\n _this.handleScrollAction = function (_a) {\n var target = _a.target, animationInProgress = _a.animationInProgress;\n if (!_this.virtualization || !_this.service) {\n return;\n }\n if (target && !animationInProgress) {\n _this.animateToIndex = false;\n var index = _this.virtualization.itemIndex(_this.itemOffset(target.scrollTop));\n var dataItem = _this.service.data(_this.props.value)[index];\n _this.handleChange(dataItem);\n }\n };\n _this.handleFocus = function (event) {\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleMouseOver = function () {\n if (!_this._element) {\n return;\n }\n if (document && document.activeElement !== _this._element && _this.props.show) {\n _this._element.focus({ preventScroll: true });\n }\n };\n _this.handleKeyDown = function (event) {\n if (!_this.service) {\n return;\n }\n var keyCode = event.keyCode;\n if (keyCode === Keys.down\n || keyCode === Keys.up\n || keyCode === Keys.end\n || keyCode === Keys.home) {\n event.preventDefault();\n }\n var getter = getters[event.keyCode] || noop;\n var dataItem = getter(_this.service.data(_this.props.value), _this.service.selectedIndex(_this.props.value));\n if (dataItem) {\n _this.handleChange(dataItem);\n }\n };\n _this.handleChange = debounce(function (dataItem) {\n if (!_this.service) {\n return;\n }\n var candidate = _this.service.apply(_this.props.value, dataItem.value);\n if (_this.props.value.getTime() === candidate.getTime()) {\n return;\n }\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, candidate);\n }\n }, SCROLL_THROTTLE);\n _this.dom = new DOMService();\n return _this;\n }\n Object.defineProperty(TimeList.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"animate\", {\n get: function () {\n return Boolean(this.props.smoothScroll && this.animateToIndex);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"min\", {\n get: function () {\n return this.props.min || TimeList.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"max\", {\n get: function () {\n return this.props.max || TimeList.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"step\", {\n get: function () {\n return this.props.step !== undefined && this.props.step !== 0\n ? Math.floor(this.props.step)\n : TimeList.defaultProps.step;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TimeList.prototype.componentDidMount = function () {\n var _this = this;\n // Async calculation of height to avoid animation cancellation\n Promise.resolve().then(function () {\n if (!_this._element) {\n return;\n }\n _this.dom.calculateHeights(_this._element);\n _this.forceUpdate();\n });\n };\n /**\n * @hidden\n */\n TimeList.prototype.componentDidUpdate = function () {\n if (!this.virtualization || !this.service) {\n return;\n }\n var index = this.service.selectedIndex(this.props.value);\n this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](index);\n this.animateToIndex = true;\n };\n /**\n * @hidden\n */\n TimeList.prototype.render = function () {\n var _this = this;\n if (!this.props.part.type || !services[this.props.part.type]) {\n return;\n }\n this.calculateHeights();\n this.intl = provideIntlService(this);\n this.service = new services[this.props.part.type](this.intl);\n this.configureServices();\n var data = this.service.data(this.props.value);\n var transform = 'translateY(' + this.topOffset + 'px)';\n var total = this.service.total(this.props.value);\n var list = (React.createElement(\"ul\", { style: { transform: transform, msTransform: transform }, className: \"k-reset\" }, data.map(function (item, idx) {\n return (React.createElement(\"li\", { key: idx, className: \"k-item\", onClick: function () { _this.handleChange(item); } },\n React.createElement(\"span\", null, item.text)));\n })));\n return (React.createElement(\"div\", { className: \"k-time-list\", id: String(this.props.id || ''), tabIndex: this.props.disabled ? -1 : 0, ref: function (el) { _this._element = el; }, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseOver: this.handleMouseOver }, this.dom.didCalculate\n ? (React.createElement(Virtualization, { bottomOffset: this.bottomOffset, children: list, className: \"k-time-container\", itemHeight: this.itemHeight, maxScrollDifference: this.listHeight, onScrollAction: this.handleScrollAction, ref: function (el) { _this.virtualization = el; }, role: \"presentation\", skip: SKIP, tabIndex: -1, take: total, topOffset: this.topOffset, total: total }))\n : (React.createElement(\"div\", { className: \"k-time-container\" }, list))));\n };\n TimeList.propTypes = {\n id: PropTypes.number,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n part: function (props, propName, componentName) {\n var prop = props[propName];\n if (!prop || !services[prop.type]) {\n throw new Error(\"\\n Invalid prop '\".concat(propName, \"' supplied to \").concat(componentName, \".\\n Supported part types are hour|minute|second|dayperiod.\\n \"));\n }\n return null;\n },\n step: function (props, propName, componentName) {\n var prop = props[propName];\n if (prop !== undefined && prop <= 0) {\n throw new Error(\"\\n Invalid prop '\".concat(propName, \"' supplied to \").concat(componentName, \".\\n \").concat(propName, \" cannot be less than 1.\\n \"));\n }\n return null;\n },\n value: PropTypes.instanceOf(Date),\n smoothScroll: PropTypes.bool,\n show: PropTypes.bool\n };\n TimeList.defaultProps = {\n boundRange: false,\n max: MAX_TIME,\n min: MIDNIGHT_DATE,\n step: 1,\n smoothScroll: true\n };\n return TimeList;\n}(React.Component));\nexport { TimeList };\nregisterForIntl(TimeList);\n","import { cloneDate } from '@progress/kendo-date-math';\nvar setHours = function (date, hours) {\n var clone = cloneDate(date);\n clone.setHours(hours);\n return clone;\n};\nvar isAM = function (value) { return value !== null && value < 12; };\nvar isPM = function (value) { return value !== null && (!value || value > 11); };\nvar inRange = function (value, min, max) { return ((!min && !max) || (value >= min && value <= max)); };\nvar inReverseRange = function (value, min, max) { return ((!min && !max) || value >= min || value <= max); };\n/**\n * @hidden\n */\nvar DayPeriodService = /** @class */ (function () {\n function DayPeriodService(intl) {\n this.intl = intl;\n this.min = null;\n this.max = null;\n this.part = null;\n }\n /**\n * @hidden\n */\n DayPeriodService.prototype.apply = function (value, candidate) {\n var hour = value.getHours();\n var hourAM = isAM(hour);\n var candidateAM = isAM(candidate.getHours());\n if ((hourAM && candidateAM) || (!hourAM && !candidateAM)) {\n return value;\n }\n var _a = this.normalizedRange(), min = _a[0], _b = _a[1], max = _b === void 0 ? 24 : _b;\n var result = hour + (candidateAM ? -12 : 12);\n return setHours(value, Math.min(Math.max(min, result), (max || 24)));\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.configure = function (settings) {\n var _a = settings.min, min = _a === void 0 ? this.min : _a, _b = settings.max, max = _b === void 0 ? this.max : _b, _c = settings.part, part = _c === void 0 ? this.part : _c;\n this.min = min;\n this.max = max;\n this.part = part;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.data = function (_) {\n var names = this.part && this.part.names;\n if (!names || !this.min) {\n return [];\n }\n var data = [];\n var _a = this.normalizedRange(), min = _a[0], max = _a[1];\n var dayPeriod = this.intl.dateFormatNames(names);\n if (isAM(min)) {\n data.push({ text: dayPeriod.am, value: setHours(this.min, min) });\n }\n if (isPM(max)) {\n data.push({ text: dayPeriod.pm, value: setHours(this.min, Math.max(12, max)) });\n }\n return this.min.getHours() !== min ? data.reverse() : data;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.isRangeChanged = function (_, __) {\n return false;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.limitRange = function (min, max, _) {\n return [min, max];\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.total = function () {\n var _a = this.normalizedRange(), min = _a[0], max = _a[1];\n if (!min && !max) {\n return 2;\n }\n if (min > 11 || max < 12) {\n return 1;\n }\n return 2;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.selectedIndex = function (value) {\n if (!this.valueInList(value) || !this.min) {\n return -1;\n }\n var index = Math.floor(value.getHours() / 12);\n return this.min.getHours() === this.normalizedRange()[0] ? index : (index === 0 ? 1 : 0);\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.valueInList = function (value) {\n if (!this.min || !this.max) {\n return false;\n }\n var reverse = this.min.getHours() !== this.normalizedRange()[0];\n var isInRange = reverse ? inReverseRange : inRange;\n return isInRange(value.getHours(), this.min.getHours(), this.max.getHours());\n };\n DayPeriodService.prototype.normalizedRange = function () {\n var minHour = this.min.getHours();\n var maxHour = this.max.getHours();\n return [\n Math.min(minHour, maxHour),\n Math.max(minHour, maxHour)\n ];\n };\n return DayPeriodService;\n}());\nexport { DayPeriodService };\n","import { getDate, isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setHours } from '../utils';\nvar HOURS_IN_DAY = 24;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(HOURS_IN_DAY);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(HOURS_IN_DAY + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n var useBarrier = !value || getDate(barrier).getTime() === getDate(value).getTime();\n return useBarrier ? barrier : setHours(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(HOURS_IN_DAY - 1);\n/**\n * @hidden\n */\nvar HoursService = /** @class */ (function () {\n function HoursService(intl) {\n this.intl = intl;\n this.boundRange = false;\n this.insertUndividedMax = false;\n this.min = null;\n this.max = null;\n this.step = 0;\n this.toListItem = null;\n }\n HoursService.prototype.apply = function (value, candidate) {\n return setHours(value, candidate.getHours());\n };\n HoursService.prototype.configure = function (settings) {\n var _this = this;\n var _a = settings.boundRange, boundRange = _a === void 0 ? this.boundRange : _a, _b = settings.insertUndividedMax, insertUndividedMax = _b === void 0 ? this.insertUndividedMax : _b, _c = settings.min, min = _c === void 0 ? this.min : _c, _d = settings.max, max = _d === void 0 ? this.max : _d, part = settings.part, _e = settings.step, step = _e === void 0 ? this.step : _e;\n this.boundRange = boundRange;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = function (hour) {\n var date = setHours(MIDNIGHT_DATE, hour);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n };\n HoursService.prototype.data = function (selectedValue) {\n var _this = this;\n var min = this.range(selectedValue)[0];\n var getHour = stepper(min, this.step);\n var convertToItem = function (idx) { return (_this.toListItem && _this.toListItem(getHour(idx))); };\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n return data;\n };\n HoursService.prototype.isRangeChanged = function (min, max) {\n if (!this.min || !this.max) {\n return false;\n }\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n };\n HoursService.prototype.limitRange = function (min, max, value) {\n return this.boundRange ? [limitDown(min, value), limitUp(max, value)] : [min, max];\n };\n HoursService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n HoursService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n HoursService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n var matchMax = this.insertUndividedMax && this.lastHour(value) === value.getHours();\n return matchMax || !this.isMissing(value);\n };\n HoursService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value) && this.toListItem) {\n data.push(this.toListItem(this.lastHour(value)));\n }\n return data;\n };\n HoursService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n if (this.toListItem) {\n var missingItem = this.toListItem(value.getHours());\n data.splice(this.selectedIndex(value), 0, missingItem);\n }\n return data;\n };\n HoursService.prototype.countFromMin = function (value) {\n var _a = this.range(value), min = _a[0], max = _a[1];\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n };\n HoursService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n HoursService.prototype.isLastMissing = function (value) {\n return this.max !== null && this.isMissing(setHours(this.max, this.lastHour(value)));\n };\n HoursService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getHours(), this.min.getHours()) / this.step;\n };\n HoursService.prototype.lastHour = function (value) {\n return this.range(value)[1];\n };\n HoursService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n return [min.getHours(), max.getHours()];\n };\n return HoursService;\n}());\nexport { HoursService };\n","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setMinutes } from '../utils';\nvar MINUTES_IN_HOUR = 60;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(MINUTES_IN_HOUR);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(MINUTES_IN_HOUR + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n var useBarrier = !value || barrier.getHours() === value.getHours();\n return useBarrier ? barrier : setMinutes(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(MINUTES_IN_HOUR - 1);\n/**\n * @hidden\n */\nvar MinutesService = /** @class */ (function () {\n function MinutesService(intl) {\n this.intl = intl;\n this.toListItem = null;\n this.min = null;\n this.max = null;\n this.step = 0;\n this.insertUndividedMax = false;\n }\n MinutesService.prototype.apply = function (value, candidate) {\n return setMinutes(value, candidate.getMinutes());\n };\n MinutesService.prototype.configure = function (settings) {\n var _this = this;\n var _a = settings.insertUndividedMax, insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a, _b = settings.min, min = _b === void 0 ? this.min : _b, _c = settings.max, max = _c === void 0 ? this.max : _c, part = settings.part, _d = settings.step, step = _d === void 0 ? this.step : _d;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = function (minute) {\n var date = setMinutes(MIDNIGHT_DATE, minute);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n };\n MinutesService.prototype.data = function (selectedValue) {\n var _this = this;\n var min = this.range(selectedValue)[0];\n var getMinute = stepper(min, this.step);\n var convertToItem = function (idx) { return (_this.toListItem && _this.toListItem(getMinute(idx))); };\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n return data;\n };\n MinutesService.prototype.isRangeChanged = function (min, max) {\n return (this.min !== null && this.max !== null) && (!isEqual(this.min, min) || !isEqual(this.max, max));\n };\n MinutesService.prototype.limitRange = function (min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n };\n MinutesService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n MinutesService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n MinutesService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n var matchMax = this.insertUndividedMax && this.lastMinute(value) === value.getMinutes();\n return matchMax || !this.isMissing(value);\n };\n MinutesService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value) && this.toListItem) {\n data.push(this.toListItem(this.lastMinute(value)));\n }\n return data;\n };\n MinutesService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n if (this.toListItem) {\n var missingItem = this.toListItem(value.getMinutes());\n data.splice(this.selectedIndex(value), 0, missingItem);\n }\n return data;\n };\n MinutesService.prototype.countFromMin = function (value) {\n var _a = this.range(value), min = _a[0], max = _a[1];\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n };\n MinutesService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n MinutesService.prototype.isLastMissing = function (value) {\n return this.max !== null && this.isMissing(setMinutes(this.max, this.lastMinute(value)));\n };\n MinutesService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getMinutes(), this.min.getMinutes()) / this.step;\n };\n MinutesService.prototype.lastMinute = function (value) {\n return this.range(value)[1];\n };\n MinutesService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n return [min.getMinutes(), max.getMinutes()];\n };\n return MinutesService;\n}());\nexport { MinutesService };\n","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setSeconds } from '../utils';\nvar SECONDS_IN_HOUR = 60;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(SECONDS_IN_HOUR);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(SECONDS_IN_HOUR + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n var useBarrier = !value ||\n (barrier.getMinutes() === value.getMinutes() && barrier.getHours() === value.getHours());\n return useBarrier ? barrier : setSeconds(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(SECONDS_IN_HOUR - 1);\n/**\n * @hidden\n */\nvar SecondsService = /** @class */ (function () {\n function SecondsService(intl) {\n this.intl = intl;\n this.toListItem = null;\n this.min = null;\n this.max = null;\n this.step = 0;\n this.insertUndividedMax = false;\n }\n SecondsService.prototype.apply = function (value, candidate) {\n return setSeconds(value, candidate.getSeconds());\n };\n SecondsService.prototype.configure = function (settings) {\n var _this = this;\n var _a = settings.insertUndividedMax, insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a, _b = settings.min, min = _b === void 0 ? this.min : _b, _c = settings.max, max = _c === void 0 ? this.max : _c, part = settings.part, _d = settings.step, step = _d === void 0 ? this.step : _d;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = function (minute) {\n var date = setSeconds(MIDNIGHT_DATE, minute);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n };\n SecondsService.prototype.data = function (selectedValue) {\n var _this = this;\n var min = this.range(selectedValue)[0];\n var getSecond = stepper(min, this.step);\n var convertToItem = function (idx) { return (_this.toListItem && _this.toListItem(getSecond(idx))); };\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n return data;\n };\n SecondsService.prototype.isRangeChanged = function (min, max) {\n return this.min !== null && this.max !== null && (!isEqual(this.min, min) || !isEqual(this.max, max));\n };\n SecondsService.prototype.limitRange = function (min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n };\n SecondsService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n SecondsService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n SecondsService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n var matchMax = this.insertUndividedMax && this.lastSecond(value) === value.getSeconds();\n return matchMax || !this.isMissing(value);\n };\n SecondsService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getSeconds(), this.min.getSeconds()) / this.step;\n };\n SecondsService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value) && this.toListItem) {\n data.push(this.toListItem(this.lastSecond(value)));\n }\n return data;\n };\n SecondsService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n if (this.toListItem) {\n var missingItem = this.toListItem(value.getSeconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n }\n return data;\n };\n SecondsService.prototype.countFromMin = function (value) {\n var _a = this.range(value), min = _a[0], max = _a[1];\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n };\n SecondsService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n SecondsService.prototype.isLastMissing = function (value) {\n return this.max !== null && this.isMissing(setSeconds(this.max, this.lastSecond(value)));\n };\n SecondsService.prototype.lastSecond = function (value) {\n return this.range(value)[1];\n };\n SecondsService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n return [min.getSeconds(), max.getSeconds()];\n };\n return SecondsService;\n}());\nexport { SecondsService };\n","import { domContainerFactory as containerFactory } from '../../utils';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n function DOMService() {\n this.itemHeight = 0;\n this.timeListHeight = 0;\n this.didCalculate = false;\n }\n DOMService.prototype.ensureHeights = function () {\n if (this.timeListHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n };\n DOMService.prototype.calculateHeights = function (container) {\n if (!canUseDOM) {\n return;\n }\n var div = containerFactory('div');\n var span = containerFactory('span');\n var ul = containerFactory('ul');\n var li = containerFactory('li');\n var listItem = function () { return li('02', 'k-item'); };\n var list = function () { return ul([listItem()], 'k-reset'); };\n var scrollable = function () { return (div([list()], 'k-content k-calendar-content k-scrollable k-time-container')); };\n var timeListWrapper = function () {\n return div([\n span('minute', 'k-title'),\n div([scrollable()], 'k-time-list')\n ], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });\n };\n var timeWrapper = timeListWrapper();\n var listContainer = container && container.querySelector('.k-time-container');\n var hostContainer = listContainer || document.body;\n var wrapper = hostContainer.appendChild(timeWrapper);\n this.timeListHeight = wrapper.querySelector('.k-scrollable').offsetHeight;\n this.itemHeight = wrapper.querySelector('li').offsetHeight;\n hostContainer.removeChild(wrapper);\n this.didCalculate = true;\n };\n return DOMService;\n}());\nexport { DOMService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { provideIntlService, provideLocalizationService, registerForIntl, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, now, selectNow } from '../messages';\nimport { TimeList } from './TimeList';\nimport { MIDNIGHT_DATE, MIN_TIME, MAX_TIME } from '../utils';\nimport { TIME_PART } from './models/TimePart';\nimport { generateSnappers, getNow, isInTimeRange, snapTime, timeInRange } from './utils';\nimport { Button } from '@progress/kendo-react-buttons';\nvar formatRegExp = new RegExp(\"\".concat(TIME_PART.hour, \"|\").concat(TIME_PART.minute, \"|\").concat(TIME_PART.second, \"|\").concat(TIME_PART.dayperiod, \"|literal\"));\n/**\n * @hidden\n */\nexport var Direction;\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n */\nvar TimePart = /** @class */ (function (_super) {\n __extends(TimePart, _super);\n function TimePart(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this._nowButton = null;\n _this.dateFormatParts = [];\n _this.timeLists = [];\n _this.focus = function (args) {\n Promise.resolve().then(function () {\n var timeList = _this.timeLists[0];\n if ((_this.state.activeListIndex === -1) && !_this.hasActiveButton() && timeList && timeList.element) {\n timeList.focus(args);\n }\n });\n };\n _this.timeFormatReducer = function (acc, current) { return acc + current.pattern; };\n // Filtering only the time part of the format.\n // Literal types are added if the previous part is\n // part of a time format.\n _this.timeFormatFilter = function (part, index, all) {\n var prevItem = index >= 1 && all[index - 1];\n if (!prevItem) {\n return formatRegExp.test(part.type || '');\n }\n if (prevItem && part.type === 'literal') {\n return formatRegExp.test(prevItem.type || '');\n }\n return formatRegExp.test(part.type || '');\n };\n _this.focusList = function (dir) {\n if (!_this.timeLists.length) {\n return;\n }\n _this.timeLists.reduce(_this.listReducer, ([]))\n .map(function (state) { return dir === Direction.Right ? state.next : state.prev; })\n .map(function (list) { return list && list.element && list.element.focus({ preventScroll: true }); });\n };\n _this.listReducer = function (state, list, idx, all) {\n if (state.length || list.props.id !== _this.state.activeListIndex) {\n return state;\n }\n return [{\n next: all[idx + 1] || list,\n prev: all[idx - 1] || list\n }];\n };\n _this.showNowButton = function () {\n return !_this.hasSteps() && _this.props.nowButton && isInTimeRange(getNow(), _this.min, _this.max);\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n switch (keyCode) {\n case Keys.left:\n event.preventDefault();\n _this.focusList(Direction.Left);\n return;\n case Keys.right:\n event.preventDefault();\n _this.focusList(Direction.Right);\n return;\n default:\n return;\n }\n };\n _this.handleListBlur = function () {\n _this.nextTick(function () {\n _this.setState({ activeListIndex: -1 });\n });\n };\n _this.handleListFocus = function (idx) {\n clearTimeout(_this.nextTickId);\n _this.setState({\n activeListIndex: idx\n });\n };\n _this.handleChange = function (candidate) {\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, candidate);\n }\n };\n _this.snapTime = snapTime(generateSnappers(_this.props.steps, _this.props.min || TimePart.defaultProps.min));\n _this.state = {\n activeListIndex: -1\n };\n _this.hasActiveButton = _this.hasActiveButton.bind(_this);\n return _this;\n }\n Object.defineProperty(TimePart.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"value\", {\n get: function () {\n return timeInRange(this.snapTime(cloneDate(this.props.value || MIDNIGHT_DATE)), this.min, this.max);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"intl\", {\n get: function () {\n return provideIntlService(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"min\", {\n get: function () {\n return this.snapTime(this.props.min || TimePart.defaultProps.min);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"max\", {\n get: function () {\n return this.snapTime(this.props.max || TimePart.defaultProps.max);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"steps\", {\n get: function () {\n return this.props.steps || TimePart.defaultProps.steps;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"boundRange\", {\n get: function () {\n return this.props.boundRange !== undefined\n ? this.props.boundRange\n : TimePart.defaultProps.boundRange;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TimePart.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n TimePart.prototype.componentDidMount = function () {\n var onMount = this.props.onMount;\n if (onMount) {\n onMount.call(undefined, this.value);\n }\n };\n /**\n * @hidden\n */\n TimePart.prototype.render = function () {\n var _this = this;\n var _a = this.props, format = _a.format, smoothScroll = _a.smoothScroll, onNowClick = _a.onNowClick, className = _a.className, disabled = _a.disabled;\n this.snapTime = snapTime(generateSnappers(this.steps, this.min));\n this.dateFormatParts = this.intl\n .splitDateFormat(format || TimePart.defaultProps.format)\n .filter(this.timeFormatFilter);\n var rootClassName = classNames({\n 'k-disabled': disabled\n }, className, 'k-time-part');\n this.timeLists = [];\n var localizationService = provideLocalizationService(this);\n var selectNowMessage = localizationService.toLanguageString(selectNow, messages[selectNow]);\n return (React.createElement(\"div\", { className: rootClassName },\n React.createElement(\"div\", { className: \"k-time-header\" },\n React.createElement(\"span\", { className: \"k-title\" }, this.intl.formatDate(this.value, this.dateFormatParts.reduce(this.timeFormatReducer, ''))),\n this.showNowButton() &&\n React.createElement(Button, __assign({ type: \"button\", ref: function (btn) { _this._nowButton = btn; }, className: \"k-time-now\", fillMode: \"flat\", themeColor: 'primary', title: selectNowMessage }, { 'aria-label': selectNowMessage }, { onClick: onNowClick, tabIndex: disabled ? -1 : 0 }), localizationService.toLanguageString(now, messages[now]))),\n React.createElement(\"div\", { className: \"k-time-list-container\", onKeyDown: this.handleKeyDown },\n React.createElement(\"span\", { className: \"k-time-highlight\" }),\n this.dateFormatParts.map(function (part, idx) {\n return (part.type !== 'literal'\n ? React.createElement(\"div\", { key: idx, className: classNames('k-time-list-wrapper', {\n 'k-focus': idx === _this.state.activeListIndex\n }), role: \"presentation\", tabIndex: -1 },\n React.createElement(\"span\", { className: \"k-title\", onMouseDown: function (e) { e.preventDefault(); } }, _this.intl.dateFieldName(part)),\n React.createElement(TimeList, { min: _this.min, max: _this.max, boundRange: _this.boundRange, part: part, step: part.type ? _this.steps[part.type] : 1, smoothScroll: smoothScroll, ref: function (el) { if (!el) {\n return;\n } _this.timeLists.push(el); }, id: idx, onFocus: function () { _this.handleListFocus(idx); }, onBlur: _this.handleListBlur, onChange: _this.handleChange, value: _this.value, disabled: disabled, show: _this.props.show }))\n : React.createElement(\"div\", { key: idx, className: \"k-time-separator\" }, part.pattern));\n }))));\n };\n TimePart.prototype.nextTick = function (f) {\n // XXX: use window.setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n clearTimeout(this.nextTickId);\n this.nextTickId = window.setTimeout(function () { return f(); });\n };\n TimePart.prototype.hasActiveButton = function () {\n return (this._nowButton && document.activeElement === this._nowButton.element);\n };\n TimePart.prototype.hasSteps = function () {\n var _this = this;\n var keys = Object.keys(this.steps);\n return keys.length !== keys.reduce(function (acc, k) { return acc + _this.steps[k]; }, 0);\n };\n TimePart.propTypes = {\n cancelButton: PropTypes.bool,\n disabled: PropTypes.bool,\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n nowButton: PropTypes.bool,\n steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date),\n show: PropTypes.bool\n };\n TimePart.defaultProps = {\n value: null,\n disabled: false,\n nowButton: true,\n cancelButton: true,\n format: 'hh:mm a',\n min: MIN_TIME,\n max: MAX_TIME,\n steps: {},\n boundRange: false\n };\n return TimePart;\n}(React.Component));\nexport { TimePart };\nregisterForIntl(TimePart);\nregisterForLocalization(TimePart);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, date, time, dateTimePickerCancel as cancel, dateTimePickerSet as set } from '../messages';\nimport { Button, ButtonGroup } from '@progress/kendo-react-buttons';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { TimePart } from '../timepicker/TimePart';\nimport { setTime, getToday, MIN_TIME, MAX_TIME } from '../utils';\nimport { isEqualDate } from '@progress/kendo-date-math';\nimport { Keys, classNames } from '@progress/kendo-react-common';\nimport { MIDNIGHT_DATE } from '../defaults';\nimport { getNow } from '../timepicker/utils';\n/**\n * @hidden\n */\nvar DateTimeSelector = /** @class */ (function (_super) {\n __extends(DateTimeSelector, _super);\n function DateTimeSelector(props) {\n var _this = _super.call(this, props) || this;\n _this._calendar = null;\n _this._timePart = null;\n _this._cancelButton = null;\n _this._acceptButton = null;\n _this._calendarWrap = null;\n _this.shouldFocusPart = false;\n _this.focus = function (args) {\n // Async to avoid stealing the focus from the DateInput on close\n Promise.resolve().then(function () {\n if (_this.state.tab === 'time' && _this._timePart) {\n _this._timePart.focus(args);\n }\n var calendarElement = _this.calendarElement();\n if (_this.state.tab === 'date' && calendarElement) {\n calendarElement.focus(args);\n }\n });\n };\n _this.calendarElement = function () {\n return (_this._calendar && _this._calendar.element) ||\n (_this._calendarWrap && _this._calendarWrap.querySelector('.k-widget.k-calendar'));\n };\n _this.move = function (direction) {\n if (direction === 'right' && _this.state.tab === 'time') {\n return;\n }\n if (direction === 'left' && _this.state.tab === 'date') {\n return;\n }\n var nextPart = direction === 'left' ? 'date' : 'time';\n _this.shouldFocusPart = true;\n _this.setState({ tab: nextPart });\n };\n _this.handleReject = function (event) {\n _this.setState({ dateValue: _this.props.value, timeValue: _this.props.value || MIDNIGHT_DATE });\n var value = _this.mergeDate(_this.props.value, _this.props.value || MIDNIGHT_DATE);\n if (_this.props.onReject) {\n var args = {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event,\n target: _this,\n value: value\n };\n _this.props.onReject.call(undefined, args);\n }\n };\n _this.handleAccept = function (event, timeOverride) {\n if (!_this.state.dateValue || !_this.state.timeValue || !_this.hasDateValue) {\n return;\n }\n var value = _this.mergeDate(_this.state.dateValue, timeOverride || _this.state.timeValue);\n _this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: value,\n target: _this\n });\n };\n _this.handleNowClick = function (event) {\n _this.setState({ timeValue: getNow() });\n _this.handleAccept(event, getNow());\n };\n _this.handleCalendarValueChange = function (event) {\n event.syntheticEvent.stopPropagation();\n _this.setState({ dateValue: event.value, tab: 'time' });\n _this.shouldFocusPart = true;\n };\n _this.handleTimeListContainerChange = function (candidate) {\n _this.setState({ timeValue: candidate });\n };\n _this.handleDateClick = function (event) {\n event.stopPropagation();\n _this.move('left');\n };\n _this.handleTimeClick = function (event) {\n event.stopPropagation();\n _this.move('right');\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode, altKey = event.altKey;\n switch (keyCode) {\n case Keys.enter:\n if (!_this.hasActiveButton() && _this.hasDateValue) {\n _this.handleAccept(event);\n }\n return;\n case Keys.left:\n if (!altKey) {\n return;\n }\n _this.move('left');\n return;\n case Keys.right:\n if (!altKey) {\n return;\n }\n _this.move('right');\n return;\n default:\n return;\n }\n };\n _this.handleTimePartMount = function (value) {\n _this.setState({ timeValue: value });\n };\n _this.state = {\n tab: 'date',\n dateValue: _this.props.value,\n timeValue: _this.props.value || MIDNIGHT_DATE\n };\n return _this;\n }\n Object.defineProperty(DateTimeSelector.prototype, \"calendar\", {\n get: function () {\n return this._calendar;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"timePart\", {\n get: function () {\n return this._timePart;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"hasDateValue\", {\n get: function () {\n return this.state.dateValue !== null;\n },\n enumerable: false,\n configurable: true\n });\n DateTimeSelector.prototype.componentDidUpdate = function () {\n if (this.shouldFocusPart) {\n this.focus({ preventScroll: true });\n }\n this.shouldFocusPart = false;\n };\n DateTimeSelector.prototype.render = function () {\n var _this = this;\n var _a = this.props, disabled = _a.disabled, cancelButton = _a.cancelButton, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, format = _a.format;\n var rootClassName = classNames({\n 'k-date-tab': this.state.tab === 'date',\n 'k-time-tab': this.state.tab === 'time',\n 'k-disabled': disabled\n }, 'k-datetime-wrap');\n var localizationService = provideLocalizationService(this);\n var dateMessage = localizationService.toLanguageString(date, messages[date]);\n var timeMessage = localizationService.toLanguageString(time, messages[time]);\n var cancelMessage = localizationService.toLanguageString(cancel, messages[cancel]);\n var setMessage = localizationService.toLanguageString(set, messages[set]);\n var calendarProps = {\n min: min,\n max: max,\n weekNumber: weekNumber,\n focusedDate: focusedDate,\n disabled: disabled || this.state.tab !== 'date',\n value: this.state.dateValue,\n onChange: this.handleCalendarValueChange,\n navigation: false\n };\n return (React.createElement(\"div\", { onKeyDown: this.handleKeyDown, className: rootClassName, tabIndex: -1 },\n React.createElement(\"div\", { className: \"k-datetime-buttongroup\" },\n React.createElement(ButtonGroup, { width: \"100%\" },\n React.createElement(Button, { type: \"button\", selected: this.state.tab === 'date', togglable: true, onClick: this.handleDateClick }, dateMessage),\n React.createElement(Button, { type: \"button\", selected: this.state.tab === 'time', togglable: true, onClick: this.handleTimeClick }, timeMessage))),\n React.createElement(\"div\", { className: \"k-datetime-selector\" },\n React.createElement(\"div\", { className: \"k-datetime-calendar-wrap\", ref: function (e) { return _this._calendarWrap = e; } }, this.props.calendar ?\n React.createElement(this.props.calendar, __assign({}, calendarProps)) :\n React.createElement(Calendar, __assign({ ref: function (calendar) { _this._calendar = calendar; } }, calendarProps))),\n React.createElement(\"div\", { className: \"k-datetime-time-wrap\" }, React.createElement(TimePart, { key: 1, onNowClick: this.handleNowClick, disabled: disabled || this.state.tab !== 'time', ref: function (timePart) { _this._timePart = timePart; }, min: this.minTime || MIN_TIME, max: this.maxTime || MAX_TIME, steps: this.props.steps, value: this.state.timeValue, format: format, onChange: this.handleTimeListContainerChange, onMount: this.handleTimePartMount }))),\n React.createElement(\"div\", { className: \"k-datetime-footer k-actions k-hstack k-justify-content-stretch\" },\n cancelButton && React.createElement(Button, __assign({ type: \"button\", ref: function (btn) { _this._cancelButton = btn; }, className: \"k-time-cancel\", onClick: this.handleReject, title: cancelMessage }, { 'aria-label': cancelMessage }), cancelMessage),\n React.createElement(Button, __assign({ type: \"button\", themeColor: \"primary\", ref: function (btn) { _this._acceptButton = btn; }, className: \"k-time-accept\", disabled: !this.hasDateValue, onClick: this.handleAccept, title: setMessage }, { 'aria-label': setMessage }), setMessage))));\n };\n Object.defineProperty(DateTimeSelector.prototype, \"minTime\", {\n get: function () {\n return this.props.minTime !== undefined\n ? this.props.minTime\n : this.normalizeRange(this.props.min, this.state.dateValue);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"maxTime\", {\n get: function () {\n return this.props.maxTime !== undefined\n ? this.props.maxTime\n : this.normalizeRange(this.props.max, this.state.dateValue);\n },\n enumerable: false,\n configurable: true\n });\n DateTimeSelector.prototype.normalizeRange = function (candidate, value) {\n return isEqualDate(candidate, value || getToday())\n ? candidate\n : null;\n };\n DateTimeSelector.prototype.hasActiveButton = function () {\n if (!this._acceptButton) {\n return false;\n }\n return (this._acceptButton && document.activeElement === this._acceptButton.element)\n || (this._cancelButton && document.activeElement === this._cancelButton.element);\n };\n DateTimeSelector.prototype.mergeTime = function (current, candidate) {\n return current && candidate ? setTime(candidate, current) : candidate;\n };\n DateTimeSelector.prototype.mergeDate = function (candidate, value) {\n return candidate ? setTime(candidate || getToday(), value) : value;\n };\n return DateTimeSelector;\n}(React.Component));\nexport { DateTimeSelector };\nregisterForLocalization(DateTimeSelector);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys, AsyncFocusBlur, createPropsContext, withPropsContext, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { DateInput } from '../dateinput/DateInput';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { packageMetadata } from '../package-metadata';\nimport { MIN_DATE, MAX_DATE, isInDateRange, MAX_TIME } from '../utils';\nimport { messages, toggleDateTimeSelector } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { DateTimeSelector } from './DateTimeSelector';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME } from '../defaults';\nimport { PickerFloatingLabel } from '../hooks/usePickerFloatingLabel';\n/** @hidden */\nvar DateTimePickerWithoutContext = /** @class */ (function (_super) {\n __extends(DateTimePickerWithoutContext, _super);\n function DateTimePickerWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this._popupId = guid();\n _this._element = null;\n _this._dateInput = React.createRef();\n _this._dateTimeSelector = null;\n _this.shouldFocusDateInput = false;\n _this.prevShow = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n var dateInputElement = _this.dateInputElement();\n if (dateInputElement) {\n dateInputElement.focus();\n }\n };\n _this.handleReject = function () {\n _this.shouldFocusDateInput = true;\n _this.setShow(false);\n };\n _this.handleValueChange = function (event) {\n _this.setState({\n value: cloneDate(event.value || undefined),\n show: false\n });\n _this.valueDuringOnChange = event.value;\n _this.showDuringOnChange = false;\n _this.shouldFocusDateInput = true;\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n };\n _this.handleFocus = function () {\n _this.setState({ focused: true });\n };\n _this.handleBlur = function () {\n _this.setState({ focused: false });\n _this.setShow(false);\n };\n _this.handleDateIconClick = function () {\n if (_this.props.disabled) {\n return;\n }\n _this.shouldFocusDateInput = true;\n _this.setShow(!_this.show);\n };\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n _this.shouldFocusDateInput = true;\n _this.setShow(false);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n _this.setShow(keyCode === Keys.down);\n }\n };\n _this.dateInputElement = function () {\n return (_this.dateInput && _this.dateInput.element) ||\n (_this.element && _this.element.querySelector('.k-dateinput > input.k-input-inner'));\n };\n validatePackage(packageMetadata);\n _this.state = {\n value: _this.props.defaultValue || DateTimePickerWithoutContext.defaultProps.defaultValue,\n show: _this.props.defaultShow || DateTimePickerWithoutContext.defaultProps.defaultShow,\n focused: false\n };\n return _this;\n }\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DateTimePicker.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the DateTimePicker component.\n */\n get: function () {\n return this._dateInput.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the DateTimePicker.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null) ? cloneDate(value) : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"show\", {\n /**\n * Gets the popup state of the DateTimePicker.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the DateTimePicker.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DateTimePickerWithoutContext.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DateTimePickerWithoutContext.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DateTimePicker is set.\n */\n get: function () {\n var inRange = isInDateRange(this.value, this.min, this.max)\n && isInTimeRange(this.value, this.props.minTime || MIN_TIME, this.props.maxTime || MAX_TIME);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DateTimePickerWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DateTimePickerWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"dateInputComp\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.dateInput || DateTimePickerWithoutContext.defaultProps.dateInput;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.prototype.componentDidMount = function () {\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n };\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.prototype.componentDidUpdate = function () {\n var dateInputElement = this.dateInputElement();\n if (this._dateTimeSelector && this.show && !this.prevShow) {\n this._dateTimeSelector.focus({ preventScroll: true });\n }\n if (dateInputElement\n && !this.show\n && this.shouldFocusDateInput) {\n dateInputElement.focus({ preventScroll: true });\n }\n this.prevShow = this.show;\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.size, size = _b === void 0 ? DateTimePickerWithoutContext.defaultProps.size : _b, _c = _a.rounded, rounded = _c === void 0 ? DateTimePickerWithoutContext.defaultProps.rounded : _c, _d = _a.fillMode, fillMode = _d === void 0 ? DateTimePickerWithoutContext.defaultProps.fillMode : _d, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, format = _a.format, formatPlaceholder = _a.formatPlaceholder, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, className = _a.className, width = _a.width, name = _a.name, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, cancelButton = _a.cancelButton, minTime = _a.minTime, maxTime = _a.maxTime, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, _e = _a.popup, PopupComponent = _e === void 0 ? Popup : _e, calendar = _a.calendar;\n var isValid = !this.validityStyles || this.validity.valid;\n var dataInputProps = {\n id: id,\n ariaLabelledBy: ariaLabelledBy,\n ariaDescribedBy: ariaDescribedBy,\n format: format,\n formatPlaceholder: formatPlaceholder,\n disabled: disabled,\n title: title,\n validityStyles: validityStyles,\n validationMessage: validationMessage,\n required: required,\n min: min,\n max: max,\n minTime: minTime,\n maxTime: maxTime,\n name: name,\n tabIndex: !this.show ? tabIndex : -1,\n valid: this.validity.valid,\n value: this.value,\n onChange: this.handleValueChange,\n steps: this.props.steps,\n label: undefined,\n placeholder: !this.state.focused ? this.props.placeholder : null,\n ariaHasPopup: true,\n ariaExpanded: this.show,\n size: null,\n fillMode: null,\n rounded: null\n };\n var dateTimePicker = (React.createElement(AsyncFocusBlur, { onFocus: this.handleFocus, onBlur: this.handleBlur, onSyncFocus: this.props.onFocus, onSyncBlur: this.props.onBlur }, function (_a) {\n var _b;\n var onFocus = _a.onFocus, onBlur = _a.onBlur;\n return (React.createElement(\"div\", { ref: function (div) {\n _this._element = div;\n }, className: classNames('k-input', 'k-datetimepicker', (_b = {},\n _b[\"k-input-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _b[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _b[\"k-input-\".concat(fillMode)] = fillMode,\n _b['k-invalid'] = !isValid,\n _b['k-required'] = _this.required,\n _b['k-disabled'] = _this.props.disabled,\n _b), className), onKeyDown: _this.handleKeyDown, style: { width: width }, onFocus: onFocus, onBlur: onBlur },\n React.createElement(_this.dateInputComp, __assign({ _ref: _this._dateInput }, dataInputProps)),\n React.createElement(Button, __assign({ tabIndex: -1, type: \"button\", icon: 'calendar', onMouseDown: _this.handleIconMouseDown, onClick: _this.handleDateIconClick, title: provideLocalizationService(_this)\n .toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector]), className: \"k-input-button\", rounded: null }, {\n 'aria-controls': _this._popupId,\n 'aria-label': provideLocalizationService(_this)\n .toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector])\n })),\n React.createElement(PopupComponent, { show: _this.show, animate: _this.element !== null, anchor: _this.element, className: \"k-datetime-container k-group k-reset\", id: _this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } },\n React.createElement(DateTimeSelector, { ref: function (dateTimeSelector) { _this._dateTimeSelector = dateTimeSelector; }, cancelButton: cancelButton, steps: _this.props.steps, value: _this.value, onChange: _this.handleValueChange, onReject: _this.handleReject, disabled: disabled, weekNumber: weekNumber, min: _this.min, max: _this.max, minTime: minTime, maxTime: maxTime, focusedDate: focusedDate, format: format, calendar: calendar }))));\n }));\n return this.props.label\n ? (React.createElement(PickerFloatingLabel, { dateInput: this._dateInput, label: this.props.label, editorId: id, editorValid: isValid, editorDisabled: this.props.disabled, children: dateTimePicker, style: { width: this.props.width } }))\n : dateTimePicker;\n };\n DateTimePickerWithoutContext.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n };\n DateTimePickerWithoutContext.prototype.nextTick = function (f) {\n // XXX: use window.setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n // Handles multiple focus events happening at the same time.\n clearTimeout(this.nextTickId);\n this.nextTickId = window.setTimeout(function () { return f(); });\n };\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.displayName = 'DateTimePicker';\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.propTypes = {\n className: PropTypes.string,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n name: PropTypes.string,\n popupSettings: PropTypes.shape({\n animate: PropTypes.bool,\n appendTo: PropTypes.any,\n popupClass: PropTypes.string\n }),\n show: PropTypes.bool,\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n value: PropTypes.instanceOf(Date),\n weekNumber: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool,\n cancelButton: PropTypes.bool,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n };\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n disabled: false,\n format: 'g',\n max: MAX_DATE,\n min: MIN_DATE,\n popupSettings: {},\n tabIndex: 0,\n weekNumber: false,\n required: false,\n validityStyles: true,\n cancelButton: true,\n dateInput: DateInput,\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n };\n return DateTimePickerWithoutContext;\n}(React.Component));\nexport { DateTimePickerWithoutContext };\n/**\n * Represents the PropsContext of the `DateTimePicker` component.\n * Used for global configuration of all `DateTimePicker` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var DateTimePickerPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare */\n/**\n * Represents the KendoReact DateTimePicker Component.\n *\n * Accepts properties of type [DateTimePickerProps]({% slug api_dateinputs_datetimepickerprops %}).\n * Obtaining the `ref` returns an object of type [DateTimePickerHandle]({% slug api_dateinputs_datetimepickerhandle %}).\n */\nexport var DateTimePicker = withPropsContext(DateTimePickerPropsContext, DateTimePickerWithoutContext);\nDateTimePicker.displayName = 'KendoReactDateTimePicker';\nregisterForLocalization(DateTimePickerWithoutContext);\n","import React from \"react\";\r\nimport { DatePicker, DateTimePicker } from \"@progress/kendo-react-dateinputs\";\r\nimport { DropDownList, MultiSelect } from \"@progress/kendo-react-dropdowns\";\r\nimport { TimePickerComponent } from \"@syncfusion/ej2-react-calendars\";\r\n\r\nconst Operators = {\r\n Number: [\r\n \"Equal to\",\r\n \"Not equal to\",\r\n \"Greater than\",\r\n \"Greater than or equal to\",\r\n \"Less than\",\r\n \"Less than or equal to\",\r\n \"Between\",\r\n // \"Positive\",\r\n // \"Negative\"\r\n ],\r\n \"State Field\": [\r\n \"Equal to\",\r\n \"Not equal to\",\r\n \"In\",\r\n \"Not in\"\r\n ],\r\n DateTime: [\r\n \"Equal to\",\r\n \"Not equal to\",\r\n \"Greater than\",\r\n \"Greater than or equal to\",\r\n \"Less than\",\r\n \"Less than or equal to\",\r\n \"Between\",\r\n \"Days selected\"\r\n ],\r\n Tags: [\r\n \"Equal to\",\r\n \"In\"\r\n ],\r\n \"Picklist String\": [\r\n \"Equal to\",\r\n \"Not equal to\",\r\n \"In\",\r\n \"Not in\"\r\n ],\r\n Boolean: [\r\n \"Equal to\",\r\n \"Not equal to\"\r\n ]\r\n};\r\n\r\nconst colorOptions = [\r\n \"Fill color\",\r\n \"Text color\"\r\n];\r\n\r\nconst colorPaletteSettings = {\r\n palette: [\r\n \"#222222\", \"#292e6b\", \"#009ccc\", \"#00643a\", \"#339947\", \"#fbbc3d\",\r\n \"#db552c\", \"#7f1725\", \"#ec008c\", \"#5c197b\", \"#51399f\", \"#444444\",\r\n \"#1b478b\", \"#43b4d5\", \"#207752\", \"#60af49\", \"#fbd144\", \"#e87025\",\r\n \"#b20b1e\", \"#ef33a3\", \"#71338d\", \"#6951aa\", \"#666666\", \"#0d60ab\",\r\n \"#86cdde\", \"#56987d\", \"#8dc54b\", \"#fbe74b\", \"#f58b1f\", \"#e60017\",\r\n \"#f266ba\", \"#9260a1\", \"#8874c2\", \"#888888\", \"#007acc\", \"#c9e7e7\",\r\n \"#7caf9a\", \"#a8ce4b\", \"#fbfd52\", \"#f7a24b\", \"#eb3345\", \"#f599d1\",\r\n \"#ae88b9\", \"#aa9cdf\", \"#aaaaaa\", \"#3f9bd8\", \"#d6eded\", \"#9cc3b2\",\r\n \"#c3d84c\", \"#fcfd7d\", \"#f9b978\", \"#f06673\", \"#f9cce8\", \"#c7abd0\",\r\n \"#c0b6e9\", \"#cccccc\", \"#7fbce5\", \"#e4f3f3\", \"#bfd8cd\", \"#d7e587\",\r\n \"#fcfea8\", \"#fbd0a5\", \"#f599a2\", \"#fbddef\", \"#e0cae7\", \"#dad4f7\"\r\n ],\r\n columns: 11,\r\n tileSize: 16,\r\n};\r\n\r\nexport const TextboxSingleSelect = ({ condition1, onChangeCondition1 }) => {\r\n return (\r\n
    \r\n onChangeCondition1(e.target.value)}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport const PositiveNegative = () => {\r\n return
    ;\r\n};\r\n\r\nexport const NumberSingleSelect = ({ condition1, onChangeCondition1 }) => {\r\n return (\r\n
    \r\n onChangeCondition1(e.target.value)} />\r\n
    \r\n );\r\n};\r\n\r\nexport const NumberMultiSelect = ({ condition1, condition2, onChangeCondition1, onChangeCondition2 }) => {\r\n return (\r\n <>\r\n
    \r\n onChangeCondition1(e.target.value)} />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n onChangeCondition2(e.target.value)} />\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport const DropdownSingleSelect = ({ data, condition1, onChangeCondition1 }) => {\r\n return (\r\n
    \r\n onChangeCondition1(e.target.value)}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport const DropdownMultiSelect = ({ data, condition1, onChangeCondition1, allowCustom, placeholder }) => {\r\n return (\r\n
    \r\n onChangeCondition1(e.target.value)}\r\n value={condition1}\r\n allowCustom={allowCustom}\r\n placeholder={placeholder}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport const DatePickerSingleSelect = ({ condition1, onChangeCondition1 }) => {\r\n let value = getDateValue(condition1);\r\n return (\r\n
    \r\n onChangeCondition1(e.target.value)} />\r\n
    \r\n );\r\n};\r\n\r\nexport const DatePickerMultiSelect = ({ condition1, condition2, onChangeCondition1, onChangeCondition2 }) => {\r\n\r\n let value1 = getDateValue(condition1)\r\n let value2 = getDateValue(condition2);\r\n\r\n return (\r\n
    \r\n
    \r\n onChangeCondition1(e.target.value)} />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n onChangeCondition2(e.target.value)} />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport const TimePickerSingleSelect = ({ condition1, onChangeCondition1 }) => {\r\n\r\n let dateValue = new Date();\r\n try {\r\n dateValue = new Date(condition1);\r\n if (isNaN(dateValue)) throw new Error(\"Invalid Date\");\r\n } catch (e) {\r\n dateValue = new Date();\r\n dateValue.setHours(10);\r\n dateValue.setMinutes(0);\r\n }\r\n\r\n return (\r\n
    \r\n onChangeCondition1(e.value)}\r\n format={'h:mm aa'}\r\n strictMode={true}\r\n openOnFocus={true}\r\n showClearButton={false}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport const TimePickerMultiSelect = ({ condition1, condition2, onChangeCondition1, onChangeCondition2 }) => {\r\n\r\n let dateValue1 = new Date(condition1);\r\n let dateValue2 = new Date(condition2);\r\n\r\n if (!condition1) {\r\n dateValue1 = new Date();\r\n dateValue1.setHours(10);\r\n dateValue1.setMinutes(0);\r\n }\r\n\r\n if (!condition2) {\r\n dateValue2 = new Date();\r\n dateValue2.setHours(12);\r\n dateValue2.setMinutes(0);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n onChangeCondition1(e.value)}\r\n format={'h:mm aa'}\r\n strictMode={true}\r\n openOnFocus={true}\r\n showClearButton={false}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n onChangeCondition2(e.value)}\r\n format={'h:mm aa'}\r\n strictMode={true}\r\n openOnFocus={true}\r\n showClearButton={false}\r\n />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport const DateTimePickerSingleSelect = ({ condition1, onChangeCondition1 }) => {\r\n\r\n const value = getDateValue(condition1);\r\n return (\r\n
    \r\n onChangeCondition1(e.target.value)} />\r\n
    \r\n );\r\n};\r\n\r\nexport const DateTimePickerMultiSelect = ({ condition1, condition2, onChangeCondition1, onChangeCondition2 }) => {\r\n\r\n const value1 = getDateValue(condition1);\r\n const value2 = getDateValue(condition2);\r\n\r\n return (\r\n
    \r\n
    \r\n onChangeCondition1(e.target.value)} />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n onChangeCondition2(e.target.value)} />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport const getOperators = (attributeType) => Operators[attributeType] || [];\r\nexport const getColorOptions = () => colorOptions;\r\nexport const getColorPaletteSettings = () => colorPaletteSettings;\r\n\r\nconst getDateValue = (value) => {\r\n if (value === \"\") return new Date();\r\n if (typeof value === \"string\") return new Date(value);\r\n return value;\r\n}","import React from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { getColorOptions, getColorPaletteSettings } from './CellFormatingHelper';\r\nimport { ColorPicker } from '@progress/kendo-react-inputs';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst Statement = ({\r\n label,\r\n color,\r\n onColorChange,\r\n colorOption,\r\n onColorOptionChange,\r\n removeTitle,\r\n onRemove,\r\n}) => {\r\n\r\n const { t } = useTranslation([\r\n \"attribute/cell_formatting\"\r\n ]);\r\n\r\n const paletteSettings = getColorPaletteSettings();\r\n const colorOptions = getColorOptions();\r\n\r\n const translatedColorOptions = colorOptions.map(option => {\r\n return {\r\n text: t(\"color_options.\" + option.trim().toLowerCase().replace(/ /g, \"_\")),\r\n value: option\r\n };\r\n });\r\n\r\n function getTranslatedColorOptionValue() {\r\n if (typeof colorOption === \"object\") {\r\n return {\r\n text: t(\"color_options.\" + colorOption.value.trim().toLowerCase().replace(/ /g, \"_\")),\r\n value: colorOption.value\r\n };\r\n }\r\n return {\r\n text: t(\"color_options.\" + colorOption.trim().toLowerCase().replace(/ /g, \"_\")),\r\n value: colorOption\r\n };\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n onColorOptionChange(e.target.value)}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n onColorChange(e.value)}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Statement;","import React from 'react';\r\nimport Statement from './Statement';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst CellFormatingElseStatement = (props) => {\r\n\r\n const { t } = useTranslation([\r\n \"attribute/cell_formatting\",\r\n ]);\r\n\r\n const { updateStatement, removeStatement, statement } = props;\r\n const { color, colorOption } = statement;\r\n\r\n const handleColorChange = (value) => {\r\n const updatedStatement = { ...statement, color: value };\r\n updateStatement(updatedStatement);\r\n }\r\n\r\n const handleColorOptionChange = (value) => {\r\n const updatedStatement = { ...statement, colorOption: value };\r\n updateStatement(updatedStatement);\r\n }\r\n\r\n const handleRemoveStatement = () => {\r\n removeStatement(statement.id);\r\n }\r\n\r\n return \r\n};\r\n\r\nexport default CellFormatingElseStatement;","import React from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { getOperators } from './CellFormatingHelper';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst Operators = ({ attributeType, operator, onOperatorChange }) => {\r\n\r\n const { t } = useTranslation([\r\n \"attribute/cell_formatting\"\r\n ]);\r\n\r\n const operators = getOperators(attributeType);\r\n\r\n const traslatedOperators = operators.map(operator => {\r\n return { text: t(\"operators.\" + operator.trim().toLowerCase().replace(/ /g, \"_\")), value: operator };\r\n });\r\n\r\n function getOperatorValue() {\r\n if (typeof operator === \"object\") {\r\n return {\r\n text: t(\"operators.\" + operator.value.trim().toLowerCase().replace(/ /g, \"_\")),\r\n value: operator.value\r\n };\r\n }\r\n return {\r\n text: t(\"operators.\" + operator.trim().toLowerCase().replace(/ /g, \"_\")),\r\n value: operator\r\n };\r\n }\r\n\r\n return (\r\n
    \r\n onOperatorChange(e.target.value)}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default Operators;","import React from 'react';\r\nimport {\r\n DatePickerSingleSelect,\r\n DatePickerMultiSelect,\r\n DropdownMultiSelect,\r\n DropdownSingleSelect,\r\n NumberSingleSelect,\r\n NumberMultiSelect,\r\n PositiveNegative,\r\n TextboxSingleSelect,\r\n TimePickerSingleSelect,\r\n TimePickerMultiSelect,\r\n DateTimePickerMultiSelect,\r\n DateTimePickerSingleSelect\r\n} from \"./CellFormatingHelper\";\r\n\r\nconst Conditions = ({\r\n attribute,\r\n operator,\r\n condition1,\r\n onChangeCondition1,\r\n condition2,\r\n onChangeCondition2\r\n}) => {\r\n const operatorValue = typeof operator === \"object\" ? operator.value : operator;\r\n\r\n const attributeType = attribute.attributeType === \"Mirror\" ? attribute.attribute.attributeType : attribute.attributeType;\r\n\r\n if (attributeType === \"Number\") {\r\n if (\r\n operatorValue === \"Equal to\" ||\r\n operatorValue === \"Not equal to\" ||\r\n operatorValue === \"Greater than\" ||\r\n operatorValue === \"Less than\" ||\r\n operatorValue === \"Greater than or equal to\" ||\r\n operatorValue === \"Less than or equal to\"\r\n ) {\r\n return (\r\n \r\n )\r\n } else if (operatorValue === \"Between\") {\r\n return (\r\n \r\n )\r\n } else if (\r\n operatorValue === \"Positive\" ||\r\n operatorValue === \"Negative\"\r\n ) {\r\n return (\r\n \r\n )\r\n }\r\n } else if (attributeType === \"Boolean\") {\r\n if (\r\n operatorValue === \"Equal to\" ||\r\n operatorValue === \"Not equal to\"\r\n ) {\r\n return (\r\n \r\n )\r\n }\r\n } else if (attributeType === \"DateTime\") {\r\n const dateTimeType = attributeType === \"Mirror\" ? attribute.attribute.dateTimeType : attribute.dateTimeType;\r\n if (\r\n operatorValue === \"Equal to\" ||\r\n operatorValue === \"Not equal to\" ||\r\n operatorValue === \"Greater than\" ||\r\n operatorValue === \"Less than\" ||\r\n operatorValue === \"Greater than or equal to\" ||\r\n operatorValue === \"Less than or equal to\"\r\n ) {\r\n let Component = DatePickerSingleSelect;\r\n if (dateTimeType === \"time\") {\r\n Component = TimePickerSingleSelect;\r\n } else if (dateTimeType === \"datetime\") {\r\n Component = DateTimePickerSingleSelect;\r\n }\r\n return (\r\n \r\n )\r\n } else if (operatorValue === \"Between\") {\r\n let Component = DatePickerMultiSelect;\r\n if (dateTimeType === \"time\") {\r\n Component = TimePickerMultiSelect;\r\n } else if (dateTimeType === \"datetime\") {\r\n Component = DateTimePickerMultiSelect;\r\n }\r\n return (\r\n \r\n )\r\n } else if (operatorValue === \"Days selected\") {\r\n return (\r\n \r\n )\r\n }\r\n } else if (attributeType === \"Tags\") {\r\n if (operatorValue === \"Equal to\") {\r\n return (\r\n \r\n )\r\n } else if (operatorValue === \"In\") {\r\n return (\r\n \r\n )\r\n }\r\n } else if (attributeType === \"Picklist String\") {\r\n\r\n const picklistValues = attribute.picklist ? attribute.picklist.split(\"ɖ\") : [];\r\n\r\n if (\r\n operatorValue === \"Equal to\" ||\r\n operatorValue === \"Not equal to\"\r\n ) {\r\n return (\r\n \r\n )\r\n } else if (\r\n operatorValue === \"In\" ||\r\n operatorValue === \"Not in\"\r\n ) {\r\n return (\r\n \r\n )\r\n }\r\n } else if (attributeType === \"State Field\") {\r\n const statefield = attribute.statefield ? attribute.statefield : [];\r\n const data = statefield.map((item) => item.name);\r\n if (operatorValue === \"Equal to\" || operatorValue === \"Not equal to\") {\r\n return (\r\n \r\n )\r\n } else if (operatorValue === \"In\" || operatorValue === \"Not in\") {\r\n return (\r\n \r\n )\r\n }\r\n\r\n }\r\n}\r\n\r\nexport default Conditions;","import React from 'react';\r\nimport Operators from './Operators';\r\nimport Conditions from './Conditions';\r\nimport Statement from './Statement';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst CellFormatingIfStatement = (props) => {\r\n const { t } = useTranslation([\r\n \"attribute/cell_formatting\",\r\n ]);\r\n const { updateStatement, removeStatement, statement, attribute } = props;\r\n const { color, colorOption, operator, condition1, condition2 } = statement;\r\n const attributeType = attribute.attributeType === \"Mirror\" ? attribute.attribute.attributeType : attribute.attributeType;\r\n\r\n const handleOperatorChange = (value) => {\r\n const updatedStatement = { ...statement, operator: value };\r\n updateStatement(updatedStatement);\r\n }\r\n\r\n const handleCondition1Change = (value) => {\r\n const updatedStatement = { ...statement, condition1: value };\r\n updateStatement(updatedStatement);\r\n }\r\n\r\n const handleCondition2Change = (value) => {\r\n const updatedStatement = { ...statement, condition2: value };\r\n updateStatement(updatedStatement);\r\n }\r\n\r\n const handleColorOptionChange = (value) => {\r\n const updatedStatement = { ...statement, colorOption: value };\r\n updateStatement(updatedStatement);\r\n }\r\n\r\n const handleColorChange = (value) => {\r\n const updatedStatement = { ...statement, color: value };\r\n updateStatement(updatedStatement);\r\n }\r\n\r\n const handleRemoveStatement = () => {\r\n removeStatement(statement.id);\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\nexport default CellFormatingIfStatement;","import React, { useState, useEffect } from \"react\";\r\nimport CellFormatingElseStatement from \"./CellFormatingElseStatement\";\r\nimport CellFormatingIfStatement from \"./CellFormatingIfStatement\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst setDependentValues = ({ attributeType, previousOperator, statement }) => {\r\n const operator = statement.operator.value;\r\n const updatedStatement = { ...statement };\r\n if (operator === \"Positive\" || operator === \"Negative\") {\r\n updatedStatement.condition1 = \"\";\r\n updatedStatement.condition2 = \"\";\r\n return updatedStatement;\r\n }\r\n if (attributeType === \"Picklist String\" || attributeType === \"State Field\" || attributeType === \"Tags\") {\r\n if (operator === \"Equal to\" || operator === \"Not equal to\") {\r\n if (typeof updatedStatement.condition1 === \"object\") {\r\n updatedStatement.condition1 = updatedStatement.condition1[0] || \"\";\r\n }\r\n } else if (operator === \"In\" || operator === \"Not in\") {\r\n if (typeof updatedStatement.condition1 === \"string\") {\r\n updatedStatement.condition1 = updatedStatement.condition1 === \"\" ? [] : [updatedStatement.condition1];\r\n }\r\n }\r\n return updatedStatement;\r\n }\r\n if (attributeType === \"Number\") {\r\n if (\r\n operator === \"Equal to\" ||\r\n operator === \"Not equal to\" ||\r\n operator === \"Greater than\" ||\r\n operator === \"Less than\" ||\r\n operator === \"Greater than or equal to\" ||\r\n operator === \"Less than or equal to\"\r\n ) {\r\n updatedStatement.condition2 = \"\";\r\n }\r\n return updatedStatement;\r\n }\r\n if (attributeType === \"DateTime\") {\r\n if (\r\n operator === \"Equal to\" ||\r\n operator === \"Not equal to\" ||\r\n operator === \"Greater than\" ||\r\n operator === \"Less than\" ||\r\n operator === \"Greater than or equal to\" ||\r\n operator === \"Less than or equal to\" ||\r\n operator === \"Days selected\"\r\n ) {\r\n updatedStatement.condition2 = \"\";\r\n }\r\n if (operator === \"Days selected\" && previousOperator !== \"Days selected\") {\r\n updatedStatement.condition1 = [];\r\n } else if (previousOperator === \"Days selected\" && operator !== \"Days selected\") {\r\n updatedStatement.condition1 = \"\";\r\n }\r\n return updatedStatement;\r\n }\r\n return updatedStatement;\r\n}\r\n\r\nconst intialState = {\r\n ifStatement: [],\r\n elseStatement: []\r\n}\r\n\r\nexport const CellFormating = (props) => {\r\n\r\n const { t } = useTranslation([\r\n \"attribute/cell_formatting\",\r\n ]);\r\n\r\n const { attribute, updateAttribute, } = props;\r\n\r\n const [state, setState] = useState(intialState);\r\n\r\n useEffect(() => {\r\n const { cellFormatting } = attribute;\r\n setState({\r\n ifStatement: cellFormatting?.ifStatement || [],\r\n elseStatement: cellFormatting?.elseStatement || []\r\n });\r\n }, [attribute]);\r\n\r\n const addNewIfStatement = () => {\r\n const newState = { ...state };\r\n const updatedIfStatement = [...newState.ifStatement];\r\n const id = updatedIfStatement.length + 1;\r\n updatedIfStatement.push({\r\n id: id,\r\n operator: {\r\n text: t(\"operators.equal_to\"),\r\n value: \"Equal to\"\r\n },\r\n colorOption: {\r\n text: t(\"color_options.text_color\"),\r\n value: \"Text color\"\r\n },\r\n color: \"rgba(34, 34, 34, 1)\",\r\n condition1: \"\",\r\n condition2: \"\"\r\n });\r\n\r\n newState.ifStatement = updatedIfStatement;\r\n setState(newState);\r\n updateAttribute(\"cellFormatting\", newState);\r\n }\r\n\r\n const removeIfStatement = (statementId) => {\r\n const newState = { ...state };\r\n const updatedIfStatement = newState.ifStatement.filter((statement) => statement.id !== statementId);\r\n if (updatedIfStatement.length === 0) {\r\n newState.elseStatement = [];\r\n }\r\n newState.ifStatement = updatedIfStatement;\r\n setState(newState);\r\n updateAttribute(\"cellFormatting\", newState);\r\n }\r\n\r\n const updateIfStatement = (updatedStatement) => {\r\n const newState = { ...state };\r\n const previousStatement = newState.ifStatement.find((statement) => statement.id === updatedStatement.id);\r\n const updatedDependentValueInStatement = setDependentValues({\r\n attributeType: attribute.attributeType,\r\n previousOperator: previousStatement.operator,\r\n statement: updatedStatement\r\n });\r\n const updatedIfStatement = newState.ifStatement.map((statement) => {\r\n if (statement.id === updatedDependentValueInStatement.id) {\r\n return updatedDependentValueInStatement;\r\n }\r\n return statement;\r\n });\r\n newState.ifStatement = updatedIfStatement;\r\n setState(newState);\r\n updateAttribute(\"cellFormatting\", newState);\r\n }\r\n\r\n const addNewElseStatement = () => {\r\n const newState = { ...state };\r\n newState.elseStatement = [\r\n {\r\n id: 1,\r\n colorOption: {\r\n text: t(\"color_options.text_color\"),\r\n value: \"Text color\"\r\n },\r\n color: \"rgba(34, 34, 34, 1)\"\r\n }\r\n ];\r\n setState(newState);\r\n updateAttribute(\"cellFormatting\", newState);\r\n }\r\n\r\n const removeElseStatement = (statementId) => {\r\n const newState = { ...state };\r\n const updatedElseStatement = newState.elseStatement.filter((statement) => statement.id !== statementId);\r\n newState.elseStatement = updatedElseStatement;\r\n setState(newState);\r\n updateAttribute(\"cellFormatting\", newState);\r\n }\r\n\r\n const updateElseStatement = (updatedStatement) => {\r\n const newState = { ...state };\r\n const updatedElseStatement = newState.elseStatement.map((statement) => {\r\n if (statement.id === updatedStatement.id) {\r\n return updatedStatement;\r\n }\r\n return statement;\r\n });\r\n newState.elseStatement = updatedElseStatement;\r\n setState(newState);\r\n updateAttribute(\"cellFormatting\", newState);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {state.ifStatement.length < 5 &&\r\n \r\n \r\n {state.ifStatement.length === 0 ?\r\n t(\"add_color_formatting\")\r\n :\r\n t(\"add_if_condition\")\r\n }\r\n \r\n }\r\n {state.ifStatement.length > 0 && (state.elseStatement === 0 || state.elseStatement < 2) && (\r\n \r\n {t(\"add_else_condition\")}\r\n \r\n )}\r\n
    0 ? \"mt-4\" : \"\"}>\r\n {\r\n state.ifStatement.map((statement) => (\r\n \r\n ))\r\n }\r\n
    \r\n
    0 ? \"mb-2\" : \"\"}>\r\n {\r\n state.elseStatement.map((statement) => (\r\n \r\n ))\r\n }\r\n
    \r\n
    \r\n
    \r\n );\r\n};","export function removeSpecialCharacters(str) {\r\n return str.replace(/[\\\\\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\_\\+\\-\\=\\{\\}\\|\\[\\]\\:\\\"\\;\\'\\<\\>?\\,\\.\\/]/g, '');\r\n}","import React from 'react';\r\nimport { RadioButton } from '@progress/kendo-react-inputs';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst SharedPropertyTypeField = ({ value, onChange, disabled }) => {\r\n const { t } = useTranslation([\r\n \"attribute/shared_property_field\",\r\n ], {\r\n useSuspense: false\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\nexport default SharedPropertyTypeField;\r\n","import { useEffect, useState } from \"react\";\r\nimport { getMirrorAttributeTargetEntities } from \"../../../API/Entity/Entity\";\r\nimport { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\n\r\nfunction MirrorField({\r\n entityId,\r\n entity, relation, attribute,\r\n onEntityChange, onRelationChange, onAttributeChange,\r\n attributes,\r\n disabled = false\r\n}) {\r\n\r\n const { t } = useTranslation(\"attribute/mirror_field\", { useSuspense: false });\r\n\r\n const [loading, setLoading] = useState(!disabled);\r\n const [entities, setEntities] = useState([]);\r\n\r\n const [selectedEntityData, setSelectedEntityData] = useState({});\r\n\r\n const [filteredEntities, setFilteredEntities] = useState([]);\r\n const [filteredAttributes, setFilteredAttributes] = useState([]);\r\n const [filteredRelations, setFilteredRelations] = useState([]);\r\n\r\n useEffect(() => {\r\n if (disabled) {\r\n setSelectedEntityData({\r\n attributes: [],\r\n relations: []\r\n })\r\n } else {\r\n getMirrorAttributeTargetEntities(entityId)\r\n .then(entities => {\r\n const filteredEntities = checkForStateFieldInEntity(entities);\r\n const sortedEntities = sortEntities(filteredEntities);\r\n setEntities(sortedEntities);\r\n setFilteredEntities(sortedEntities);\r\n })\r\n .finally(() => setLoading(false));\r\n }\r\n }, [])\r\n\r\n function checkForStateFieldInEntity(entities) {\r\n const isStateAttributeExist = attributes.find(attr =>\r\n attr.attributeType === \"State Field\" ||\r\n (attr.attributeType === \"Mirror\" && attr.attribute.attributeType === \"State Field\")\r\n );\r\n if (isStateAttributeExist) {\r\n return entities.map(entity => {\r\n const filteredAttributes = entity.attributes.filter(attr =>\r\n attr.attributeType !== \"State Field\" ||\r\n (attr.attributeType === \"Mirror\" && attr.attribute.attributeType !== \"State Field\")\r\n );\r\n return {\r\n ...entity,\r\n attributes: filteredAttributes\r\n };\r\n });\r\n } else {\r\n return entities;\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (selectedEntityData && selectedEntityData._id) {\r\n const sortedAttributes = sortAttributes(selectedEntityData.attributes);\r\n setFilteredAttributes(sortedAttributes);\r\n const sortedRelations = sortRelations(selectedEntityData.relations);\r\n setFilteredRelations(sortedRelations);\r\n }\r\n }, [selectedEntityData])\r\n\r\n useEffect(() => {\r\n if (!disabled && entity && entity._id) {\r\n const entityData = entities.find(ent => ent._id === entity._id);\r\n setSelectedEntityData(entityData);\r\n }\r\n }, [entity, entities])\r\n\r\n function handleEntityChange(e) {\r\n onEntityChange(e);\r\n }\r\n\r\n function handleRelationChange(e) {\r\n onRelationChange(e);\r\n }\r\n\r\n function handleAttributeChange(e) {\r\n onAttributeChange(e);\r\n }\r\n\r\n function showRelationsDropdown() {\r\n const entitiesPresent = entities.length > 0;\r\n const isEntityValid = typeof selectedEntityData === \"object\" && typeof selectedEntityData._id === \"string\";\r\n const hasRelations = isEntityValid && Array.isArray(selectedEntityData.relations) && selectedEntityData.relations.length > 0;\r\n return disabled ? true : entitiesPresent && isEntityValid && hasRelations;\r\n }\r\n\r\n function showAttributesDropdown() {\r\n const relationsPresent = showRelationsDropdown();\r\n const isRelationValid = typeof selectedEntityData === \"object\" && typeof selectedEntityData._id === \"string\";\r\n const hasAttributes = isRelationValid && Array.isArray(selectedEntityData.attributes) && selectedEntityData.attributes.length > 0;\r\n return disabled ? true : relationsPresent && isRelationValid && hasAttributes;\r\n }\r\n\r\n function getSourceObjectProperties() {\r\n const isStateAttributeExist = attributes.find(attr =>\r\n attr.attributeType === \"State Field\" ||\r\n (attr.attributeType === \"Mirror\" && attr.attribute.attributeType === \"State Field\")\r\n );\r\n if (isStateAttributeExist) {\r\n return selectedEntityData.attributes.filter(attr =>\r\n attr.attributeType !== \"State Field\" ||\r\n (attr.attributeType === \"Mirror\" && attr.attribute.attributeType !== \"State Field\")\r\n );\r\n }\r\n return selectedEntityData.attributes;\r\n }\r\n\r\n function handleEntityFilterChange(e) {\r\n let data = filterBy(entities, e.filter);\r\n data = sortEntities(data);\r\n setFilteredEntities(data);\r\n }\r\n\r\n function handleRelationsFilterChange(e) {\r\n let data = filterBy(selectedEntityData.relations, e.filter);\r\n data = sortRelations(data);\r\n setFilteredRelations(data);\r\n }\r\n\r\n function handleAttributeFilterChange(e) {\r\n let data = filterBy(getSourceObjectProperties(), e.filter);\r\n data = sortAttributes(data);\r\n setFilteredAttributes(data);\r\n }\r\n\r\n function sortEntities(entities) {\r\n return entities.sort((a, b) => a.name.localeCompare(b.name));\r\n }\r\n\r\n function sortRelations(relations) {\r\n return relations.sort((a, b) => a.identifier.localeCompare(b.identifier));\r\n }\r\n\r\n function sortAttributes(attributes) {\r\n const systemAttributes = attributes.filter(attr => attr.isSystemAttribute);\r\n const nonSystemAttributes = attributes.filter(attr => !attr.isSystemAttribute && attr.attributeType !== \"Image\");\r\n return [\r\n ...nonSystemAttributes.sort((a, b) => a.attributeName.localeCompare(b.attributeName)),\r\n ...systemAttributes,\r\n ]\r\n }\r\n\r\n if (loading) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n {\r\n !disabled && entities.length === 0 ?\r\n \r\n {t(\"no_linked_objects_found\")}\r\n \r\n :\r\n
    \r\n \r\n \r\n
    \r\n }\r\n {\r\n showRelationsDropdown()\r\n ?\r\n
    \r\n \r\n \r\n
    \r\n :\r\n \r\n {\r\n selectedEntityData && selectedEntityData.relations && selectedEntityData.relations.length === 0 ?\r\n t(\"no_relations_found\") : \"\"\r\n }\r\n \r\n }\r\n {\r\n showAttributesDropdown() ?\r\n
    \r\n \r\n \r\n
    \r\n :\r\n \r\n {\r\n relation && relation.attributes && relation.attributes.length === 0 ?\r\n t(\"no_properties_found\") : \"\"\r\n }\r\n \r\n }\r\n
    \r\n )\r\n}\r\n\r\nexport default MirrorField;","import React, { Component } from \"react\";\r\nimport { Input, NumericTextBox, MaskedTextBox, Checkbox, Switch } from \"@progress/kendo-react-inputs\";\r\nimport { DropDownList, ComboBox, MultiSelect } from \"@progress/kendo-react-dropdowns\";\r\nimport { TimePickerComponent } from \"@syncfusion/ej2-react-calendars\";\r\nimport { Fields } from \"./AttributeTypes\";\r\nimport DummyLabelHelper from \"./DummyLabel\"\r\nimport NumberField, { NumberDefaultValueField } from \"./Fields/NumberField\";\r\nimport { PicklistOptionsField, PicklistDefaultValueField } from \"./Fields/PicklistStringFields\";\r\nimport DateTimeTypeField from \"./Fields/DateTimeTypeField\";\r\nimport NumberTypeField from \"./Fields/NumberTypeField\";\r\nimport RelativeDateField from \"./Fields/RelativeDateField\";\r\nimport BooleanDefaultValueField from \"./Fields/BooleanDefaultValueField\";\r\nimport EditorActions from \"../Shared/Edit/EditorActions\";\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport ShowMore from \"../Display/ShowMore\";\r\nimport SaveDialog from \"../Shared/Remove/SaveDialog\";\r\nimport AttributeTypeField from \"./Fields/AttributeTypeField\";\r\nimport NumericInput from \"./Fields/NumericInput\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport FormulaDialog from \"./FormulaDialog/FormulaDialog\";\r\nimport StatesRulesDialog from \"./StatesRulesDialog\"\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\"\r\nimport { ATTRIBUTE_LABEL } from \"../Helpers/Labels/AttributeLabel\";\r\nimport { isLibraryOrganization } from \"../Helpers/Organization/Organization\";\r\nimport { StateFeildOptionsField } from \"./Fields/StateFields\";\r\nimport { getEntityLookupReferencedAttribute, getIsStartOrEndAttributeInGanttChart, unlinkPicklistAttribute, updateAttributeFormula, updateAttributeNode } from \"../../API/Attribute/Attribute\";\r\nimport RemoveDialog from \"../Shared/Remove/RemoveDialog\";\r\nimport TreeDropdown from \"./Fields/TreeDropdown\";\r\nimport { CheckErrorInTree, CheckIfTreeIsSame } from \"./Fields/TreeDropdownHelper\";\r\nimport { removeExtraSpaceFromTreeElement } from \"./Fields/TreeDropdownHelper\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { CellFormating } from \"./Fields/CellFormatting/CellFormating\";\r\nimport { removeSpecialCharacters } from \"../Entities/utils\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport SharedPropertyTypeField from \"./Fields/SharedPropertyTypeField\";\r\nimport MirrorField from \"./Fields/MirrorField\";\r\nimport { uuidv4 } from \"./Fields/TreeDropdownHelper\";\r\nimport { createAttributeTemplate, getAttributeTemplates, updateAttributeTemplate } from \"../../API/AttributeTemplate/AttributeTemplate\";\r\nimport GenericTranslationDialog from \"../Entities/GenericTranslationDialog\";\r\n\r\nclass SidebarAttribute extends Component {\r\n\tstatic contextType = GlobalContext\r\n\tKendoMaskToRegexMap = {\r\n\t\t0: \"[0-9]\",\r\n\t\t9: \"[0-9 ]\",\r\n\t\t\"#\": \"[0-9 +-]\",\r\n\t\tL: \"[a-zA-Z]\",\r\n\t\t\"?\": \"[a-zA-Z ]\",\r\n\t\tA: \"[0-9a-zA-Z]\",\r\n\t\ta: \"[0-9a-zA-Z ]\",\r\n\t\t\"&\": \"[^ ]\",\r\n\t\tC: \"*\",\r\n\t};\r\n\r\n\tinterval = [\"1\", \"5\", \"10\", \"15\", \"30\"];\r\n\tallowedFileTypes = [\"JPEG\", \"PNG\", \"GIF\", \"TIFF\", \"SVG\"];\r\n\r\n\tisLibrary = isLibraryOrganization(this.props.organisationId);\r\n\tbelongsToUserProfileEntity = this.props.entityName === \"User Profile\";\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tloadFormula: false,\r\n\t\t\tisAttrLoaded: false,\r\n\t\t\tdisabled: true,\r\n\t\t\tshowAdditionalFields: false,\r\n\t\t\tshowSaveAndContinueDialog: false,\r\n\t\t\tshowOverwriteTemplateDialog: false,\r\n\t\t\tshowLabelTranslationDialog: false,\r\n\t\t\tshowStatesRulesDialog: false,\r\n\t\t\tformFields: {},\r\n\t\t\tformula: '',\r\n\t\t\tformulaJson: '',\r\n\t\t\ttriggerSetting: {},\r\n\t\t\tremoveFormula: false,\r\n\t\t\tsaveAsTemplate: false,\r\n\t\t\tresetFlag: false,\r\n\t\t\tgroups: [],\r\n\t\t\tlookupAttributeError: false,\r\n\t\t\tisUsedInStartOrEndAttribute: false,\r\n\t\t\terrors: {\r\n\t\t\t\tisNameValid: true,\r\n\t\t\t\tisMinValid: true,\r\n\t\t\t\tisLabelValid: true,\r\n\t\t\t\tisMaxValid: true,\r\n\t\t\t\tisDefaultValueValid: true,\r\n\t\t\t\tisDefaultDateValid: true,\r\n\t\t\t\tisPicklistValid: true,\r\n\t\t\t\tisStatefieldValid: true,\r\n\t\t\t\tisTreedropdownValid: true,\r\n\t\t\t\tisPatternValid: true,\r\n\t\t\t\tisMaxFileSizeValid: true,\r\n\t\t\t\tisNumberOfAttachmentsValid: true,\r\n\t\t\t\tisAllowedFileTypesValid: true,\r\n\t\t\t\tnameError: \"\",\r\n\t\t\t\tminError: \"\",\r\n\t\t\t\tlabelError: \"\",\r\n\t\t\t\tmaxError: \"\",\r\n\t\t\t\tdefaultValueError: \"\",\r\n\t\t\t\tdefaultDateError: \"\",\r\n\t\t\t\tpicklistError: \"\",\r\n\t\t\t\ttreedropdownError: \"\",\r\n\t\t\t\tstatefieldError: \"\",\r\n\t\t\t\tpatternError: \"\",\r\n\t\t\t\tmaxFileSizeError: \"\",\r\n\t\t\t\tnumberOfAttachmentsError: \"\",\r\n\t\t\t\tallowedFileTypesError: \"\"\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { disabled, showAdditionalFields, showSaveAndContinueDialog, showOverwriteTemplateDialog, showStatesRulesDialog, formFields, errors, groups, removeFormula } = this.state;\r\n\r\n\t\tconst { onDelete } = this.props;\r\n\t\tconst { isSystemAttribute } = this.props.SideData;\r\n\t\tconst { subscription } = this.context.state;\r\n\t\tconst filteredAttributes = this.props.attributes.filter(attribute => !attribute.isSystemAttribute);\r\n\t\tconst { t } = this.props;\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{\r\n\t\t\t\t\tthis.state.loading &&\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t{showSaveAndContinueDialog && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{showOverwriteTemplateDialog && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{removeFormula && }\r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{this.state.loadFormula && }\r\n\t\t\t\t\t{this.state.loadFormula === false &&\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{t(\"form.name\")}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t this.handleChange(e)} />\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    {t(\"form.type\")}
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Mirror\" && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t{formFields.attributeType === \"DateTime\" && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t{formFields.attributeType === \"Number\" && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t{formFields.attributeType === \"Shared Lookup\" && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    {t(\"form.control\")}
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t\t{(!(formFields.triggerSetting && JSON.parse(formFields.triggerSetting).formulaEnabled)) &&\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t(<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{formFields.attributeType !== \"Boolean\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tthis.showReadOnly() &&\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t{(!(formFields.triggerSetting && JSON.parse(formFields.triggerSetting).formulaEnabled)) &&\r\n\t\t\t\t\t\t\t\t\t\t\t!this.isAzureAttributeFromUserEntity() &&\r\n\t\t\t\t\t\t\t\t\t\t\t(<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"String\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t{/*
    \r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    Section\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    */}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{t(\"form.label\")}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    {\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\tshowLabelTranslationDialog: true\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{t(\"form.label_translation\")}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{this.state.showLabelTranslationDialog && (\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tshowLabelTranslationDialog: false\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tonSave={this.setLabelTranslation}\r\n\t\t\t\t\t\t\t\t\t\tlanguages={this.state.formFields.languages}\r\n\t\t\t\t\t\t\t\t\t\tproject={this.props.project}\r\n\t\t\t\t\t\t\t\t\t\tfields={[\r\n\t\t\t\t\t\t\t\t\t\t\t\"label\",\r\n\t\t\t\t\t\t\t\t\t\t\t\"tooltip\"\r\n\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t\ttype={t(\"editor_actions.property\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.isLibrary &&\r\n\t\t\t\t\t\t\t\t\tthis.props.isInternalUser &&\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\tRecommendation Configuration\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tformFields.required && formFields.readOnly &&\r\n\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"DateTime\" && !showAdditionalFields &&\r\n\t\t\t\t\t\t\t\t\t!formFields.defaultValue && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"Picklist String\" && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.dropdown_values\")}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setPicklistError(err);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t// autoFocus={true}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"State Field\" && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.state_values\")}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t { this.setStateFieldError(err) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\tshowColorPicker={true}\r\n\t\t\t\t\t\t\t\t\t\t\t\tTooltipPosition={'left'}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.state_rules\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tformFields.setStatesRules &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{showStatesRulesDialog && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Mirror\" &&\r\n\t\t\t\t\t\t\t\t\t\tformFields.attribute &&\r\n\t\t\t\t\t\t\t\t\t\tformFields.attribute.attributeType === \"State Field\" &&\r\n\t\t\t\t\t\t\t\t\t\t(this.props.isInternalUser && this.props.developerMode) &&\r\n\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.state_rules\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tformFields.setStatesRules &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{showStatesRulesDialog && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"Tree Dropdown\" && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.tree_dropdown_values\")}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"Mirror\" &&\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tsubscription.showCalculatedField && !isSystemAttribute &&\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Number\" ||\r\n\t\t\t\t\t\t\t\t\t\t(formFields.attributeType === \"DateTime\" && formFields.dateTimeType !== \"time\") ||\r\n\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"String\"\r\n\t\t\t\t\t\t\t\t\t) &&\r\n\t\t\t\t\t\t\t\t\t!this.isAzureAttributeFromUserEntity() &&\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t{showAdditionalFields && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"String\" && !isSystemAttribute && (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{(!(formFields.triggerSetting && JSON.parse(formFields.triggerSetting).formulaEnabled)) &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.min_length\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.max_length\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.pattern\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.default_value\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.handleChange(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terrors: {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisDefaultValueValid: true,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"Number\" && !isSystemAttribute && (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{(!(formFields.triggerSetting && JSON.parse(formFields.triggerSetting).formulaEnabled)) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{(!(formFields.triggerSetting && JSON.parse(formFields.triggerSetting).formulaEnabled)) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.min_value\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t 0} className=\"form-control\" name=\"min\" format={formFields.numberType === \"integer\" ? \"n0\" : \"n\" + formFields.decimalPlace} value={formFields.min} onChange={this.handleChange} maxLength={10} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.max_value\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t 0} className=\"form-control\" name=\"max\" format={formFields.numberType === \"integer\" ? \"n0\" : \"n\" + formFields.decimalPlace} value={formFields.max} onChange={this.handleChange} maxLength={10} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    )}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Mirror\" && formFields.attribute && formFields.attribute.attributeType === \"Number\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Mirror\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attribute &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attribute.attributeType === \"DateTime\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\tformFields.attribute.dateTimeType === \"time\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tformFields.attribute.dateTimeType === \"datetime\"\r\n\t\t\t\t\t\t\t\t\t\t\t) &&\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.time.interval\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"Picklist String\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.default_value\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{(formFields.attributeType === \"DateTime\" && !isSystemAttribute && (!(formFields.triggerSetting && JSON.parse(formFields.triggerSetting).formulaEnabled)) &&\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{(formFields.dateTimeType === \"date\" || formFields.dateTimeType === \"datetime\") && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{errors.defaultDateError && }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t{(formFields.dateTimeType === \"time\" || formFields.dateTimeType === \"datetime\") && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formFields.setDefaultDate && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.time.default_value\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{this.state.errors.defaultValueError}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{(!(formFields.triggerSetting && JSON.parse(formFields.triggerSetting).formulaEnabled)) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.time.interval\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.time.earliest_time\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{this.state.errors.minError}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.time.latest_time\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{this.state.errors.maxError}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"User Identity\" && !isSystemAttribute && (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{/*
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.user_identity.default_value\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"Boolean\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.default_value\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{formFields.attributeType === \"Entity Lookup\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state.lookupAttributeError ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.entity_lookup.target_entity\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.entity_lookup.target_property\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Image\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.image.file_type\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.image.number_of_attachments\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.image.maximum_size\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t{formFields.attributeType !== \"String\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"State Field\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"Number\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"Picklist String\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"DateTime\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"User Identity\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"Boolean\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"Tags\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"Mirror\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"Entity Lookup\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"Shared Lookup\" &&\r\n\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType !== \"Image\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.default_value\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Number\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Picklist String\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Mirror\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attribute &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attribute.attributeType === \"Number\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attribute.attributeType === \"Picklist String\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.color_formatting\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.tooltip\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.description\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{/* {\r\n\t\t\t\t\t\t\t\t\t\t\t\t(this.props.developerMode) &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"String\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"URL\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Email\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Multiline Text\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tformFields.attributeType === \"Html\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    {t(\"form.dummy_label\")}
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t} */}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t!this.isAzureAttributeFromUserEntity() &&\r\n\t\t\t\t\t\t\t\t this.toggleFields(o)} more={this.state.showAdditionalFields}>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t
    }\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tgetMirrorSubType = () => {\r\n\t\tif (this.state.formFields.attribute) {\r\n\t\t\tconst { attribute } = this.state.formFields;\r\n\t\t\treturn attribute.attributeType;\r\n\t\t}\r\n\t}\r\n\r\n\tgetFormulaDataAttr = async (value) => {\r\n\t\tvar { formula, saveAsTemplate, disabled, triggerSetting } = this.state;\r\n\t\tformula = value;\r\n\t\tsaveAsTemplate = value.formula.length > 0;\r\n\t\tlet dataTrigger = value.triggerSetting;\r\n\t\ttriggerSetting = dataTrigger;\r\n\t\tlet oldDisValue = disabled;\r\n\t\tthis.updateForm('formula', value.formula && value.formula.length > 0 ? value.formula : \"\");\r\n\t\tthis.updateForm('formulaJson', value.formulaJson ? JSON.stringify(value.formulaJson) : \"\");\r\n\t\tthis.updateForm('triggerSetting', dataTrigger ? JSON.stringify(dataTrigger) : \"\");\r\n\t\tawait this.updateFormula(dataTrigger, value.formula, value.formulaJson);\r\n\t\tdisabled = oldDisValue;\r\n\t\tthis.setState({ formula, saveAsTemplate, triggerSetting, disabled });\r\n\t\tthis.updateAttribute();\r\n\t}\r\n\r\n\tupdateFormula = async (triggerSetting, formula, formulaJson) => {\r\n\t\tconst { entityId, SideData, loadAttribute } = this.props;\r\n\r\n\t\ttriggerSetting[\"formulaEnabled\"] = true;\r\n\r\n\t\tawait updateAttributeFormula({\r\n\t\t\tentityId,\r\n\t\t\tformula,\r\n\t\t\tformulaJson,\r\n\t\t\ttriggerSetting,\r\n\t\t\tattributeId: SideData._id\r\n\t\t})\r\n\r\n\t\tloadAttribute();\r\n\t}\r\n\r\n\tformulaStatus = (formulaEnabled) => {\r\n\t\tvar { triggerSetting, formula, formFields } = this.state;\r\n\t\tlet formFieldsTriggerSetting = this.state.formFields.triggerSetting;\r\n\t\tif (Object.keys(triggerSetting).length === 0 && (typeof formFieldsTriggerSetting === \"string\")) {\r\n\t\t\ttriggerSetting = JSON.parse(formFieldsTriggerSetting);\r\n\t\t}\r\n\t\ttriggerSetting[\"formulaEnabled\"] = formulaEnabled;\r\n\t\tconst defaultTriggerSettings = this.defaultFormFields.triggerSetting ? JSON.parse(this.defaultFormFields.triggerSetting) : { formulaEnabled: false };\r\n\t\t// For disable only formula enabled is checked and readOnly is not checked\r\n\t\t// Because in read-only checkbox there triggerSetting.formulaEnabled is used\r\n\t\t// to determine check state of readonly when formula is there\r\n\t\t// also done to fix #8619\r\n\t\tconst disabled = (\r\n\t\t\ttriggerSetting.formulaEnabled === defaultTriggerSettings.formulaEnabled ||\r\n\t\t\t!formFields.formulaJson\r\n\t\t);\r\n\t\tconst newFormFields = {\r\n\t\t\t...formFields,\r\n\t\t\ttriggerSetting: JSON.stringify(triggerSetting),\r\n\t\t\treadOnly: formulaEnabled\r\n\t\t}\r\n\t\tconst errors = this.validate(newFormFields);\r\n\t\tthis.setState({\r\n\t\t\tformFields: newFormFields,\r\n\t\t\tdisabled,\r\n\t\t\terrors,\r\n\t\t\ttriggerSetting\r\n\t\t})\r\n\t\t// if (!val) {\r\n\t\t// this.updateForm('readOnly', val, this.defaultFormFields['readOnly']);\r\n\t\t// }\r\n\t\t// this.updateForm('triggerSetting', triggerSetting ? JSON.stringify(triggerSetting) : \"\");\r\n\t\t// if (val) {\r\n\t\t// \tthis.updateForm('readOnly', val, this.defaultFormFields['readOnly']);\r\n\t\t// }\r\n\t\t// this.setState({ triggerSetting });\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tif (this.props.mutators) {\r\n\t\t\tthis.props.mutators.setFormSaveFunction(() => this.updateAttribute);\r\n\t\t}\r\n\t}\r\n\r\n\tisLanguagesChanged(languages, defaultLanguages) {\r\n\t\tconst keys = Object.keys(languages);\r\n\t\tfor (const key of keys) {\r\n\t\t\tif (\r\n\t\t\t\tlanguages[key].label !== defaultLanguages[key].label\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tasync componentDidUpdate(props, state) {\r\n\t\t// If the selected attribute changes\r\n\t\tif (this.props.SideData._id !== props.SideData._id) {\r\n\t\t\tthis.setState({ isAttrLoaded: false });\r\n\t\t\tconst formFields = await this.getFormFields();\r\n\t\t\tconst isUsedInStartOrEndAttribute = await this.getIsUsedInStartOrEndAttribute();\r\n\t\t\tconst groups = this.getGroups();\r\n\t\t\tconst showAdditionalFields = this.getShowMoreValueById(this.props.entityId, this.props.SideData._id);\r\n\t\t\tconst errors = {};\r\n\t\t\tconst disabled = true;\r\n\t\t\tthis.addRecommendationFieldIfApplicable(formFields);\r\n\t\t\tthis.addUserProfileRelatedFieldsIfApplicable(formFields);\r\n\t\t\tthis.defaultFormFields = { ...formFields };\r\n\t\t\tthis.setState({\r\n\t\t\t\tformFields,\r\n\t\t\t\tgroups,\r\n\t\t\t\terrors,\r\n\t\t\t\tdisabled,\r\n\t\t\t\tshowAdditionalFields,\r\n\t\t\t\tisUsedInStartOrEndAttribute,\r\n\t\t\t\tisAttrLoaded: true\r\n\t\t\t});\r\n\t\t} else if (\r\n\t\t\ttypeof this.props.SideData.sharedLookupId === \"string\" &&\r\n\t\t\tthis.props.SideData._id === props.SideData._id &&\r\n\t\t\t(\r\n\t\t\t\tthis.props.SideData.attributeName !== props.SideData.attributeName ||\r\n\t\t\t\tthis.isLanguagesChanged(this.props.SideData.languages, props.SideData.languages)\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tconst formFields = this.state.formFields;\r\n\t\t\tformFields.attributeName = this.props.SideData.attributeName;\r\n\t\t\tformFields.attributeLabel = this.props.SideData.attributeLabel;\r\n\t\t\tformFields.tooltip = this.props.SideData.tooltip;\r\n\t\t\tformFields.languages = this.props.SideData.languages\r\n\t\t\tthis.setState({\r\n\t\t\t\tformFields\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.state.disabled !== state.disabled) {\r\n\t\t\tif (this.props.mutators) {\r\n\t\t\t\tthis.props.mutators.setFormsWithChanges(prevValue => ({\r\n\t\t\t\t\t...prevValue,\r\n\t\t\t\t\tattributeForm: state.disabled\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\taddRecommendationFieldIfApplicable = (formFields) => {\r\n\t\tif (this.isLibrary && this.props.isInternalUser) {\r\n\t\t\tformFields.alwaysRecommended = this.props.SideData.alwaysRecommended;\r\n\t\t\tformFields.requiredInAlice = this.props.SideData.requiredInAlice;\r\n\t\t}\r\n\t}\r\n\r\n\taddUserProfileRelatedFieldsIfApplicable = (formFields) => {\r\n\t\tif (this.props.isUserEntity) {\r\n\t\t\tformFields.isAzureAttribute = this.props.SideData.isAzureAttribute;\r\n\t\t}\r\n\t}\r\n\r\n\tgetFormFields = async () => {\r\n\t\tconst { SideData } = this.props;\r\n\t\tconst { attributeType } = SideData;\r\n\t\tconst formFields = {};\r\n\t\tconst fieldsForAttributeType = Fields[attributeType] || Fields[\"Base\"];\r\n\t\tfor (let fieldData of fieldsForAttributeType) {\r\n\t\t\tconst { field, state, type } = fieldData;\r\n\t\t\tconst initialValue = SideData[field];\r\n\t\t\tlet value = initialValue;\r\n\t\t\tformFields[state] = value;\r\n\t\t}\r\n\t\tif (this.isEntityLookup()) {\r\n\t\t\tconst { referenceEntity, referencedAttribute } = await this.getLookupProperties();\r\n\t\t\tif (referenceEntity && referencedAttribute) {\r\n\t\t\t\tformFields.referenceEntity = referenceEntity;\r\n\t\t\t\tformFields.referencedAttribute = referencedAttribute;\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tlookupAttributeError: this.props.t(\"errors.cannot_fetch_reference_attribute\")\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t} else if (attributeType === \"Number\") {\r\n\t\t\tformFields.unit = formFields.unit.replace(/\\\\\\\"/, '\"');\r\n\t\t} else if (attributeType === \"Tree Dropdown\") {\r\n\t\t\tif (typeof (formFields.treeDropdown) === \"string\") {\r\n\t\t\t\tformFields.treeDropdown = JSON.parse(formFields.treeDropdown);\r\n\t\t\t}\r\n\t\t} else if (attributeType === \"Mirror\") {\r\n\t\t\tformFields.attribute = SideData.attribute;\r\n\t\t\tformFields.entity = SideData.entity;\r\n\t\t\tformFields.relation = SideData.relation;\r\n\t\t\tformFields.relationId = SideData.relationId;\r\n\t\t\tif (formFields.attribute) {\r\n\t\t\t\tthis.setTargetAttributeDependentProperties(formFields, SideData);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (attributeType === \"Shared Lookup\") {\r\n\t\t\tformFields.sharedLookupType = SideData.sharedLookupType;\r\n\t\t}\r\n\t\treturn formFields;\r\n\t};\r\n\r\n\tgetIsUsedInStartOrEndAttribute = async () => {\r\n\t\tconst { _id, attributeType } = this.props.SideData;\r\n\t\tif (attributeType === \"DateTime\") {\r\n\t\t\tconst response = await getIsStartOrEndAttributeInGanttChart(_id);\r\n\t\t\treturn response.isStartOrEndAttribute;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tsetTargetAttributeDependentProperties = (formFields, sideData) => {\r\n\t\tconst { attribute } = formFields;\r\n\t\tswitch (attribute.attributeType) {\r\n\t\t\tcase \"Number\":\r\n\t\t\t\tformFields.unit = sideData.unit;\r\n\t\t\t\tformFields.unitSide = sideData.unitSide;\r\n\t\t\t\tformFields.useThousandSeparator = sideData.useThousandSeparator;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"Picklist String\":\r\n\t\t\t\tformFields.picklist = formFields.attribute.picklist;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"DateTime\":\r\n\t\t\t\tif (attribute.dateTimeType === \"datetime\" || attribute.dateTimeType === \"time\") {\r\n\t\t\t\t\tformFields['interval'] = sideData['interval'] || \"30\";\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tisEntityLookup = () => {\r\n\t\tconst { SideData } = this.props;\r\n\t\tconst { attributeType } = SideData;\r\n\t\treturn attributeType === \"Entity Lookup\";\r\n\t};\r\n\r\n\tisImageAttribute = () => {\r\n\t\tconst { SideData } = this.props;\r\n\t\tconst { attributeType } = SideData;\r\n\t\treturn attributeType === \"Image\";\r\n\t};\r\n\r\n\tisUserEntityEmail = () => {\r\n\t\tconst { SideData } = this.props;\r\n\t\tconst { attributeName } = SideData;\r\n\t\treturn attributeName === \"Email\" && this.props.isUserEntity;\r\n\t};\r\n\r\n\tshowReadOnly = () => {\r\n\t\tconst { formFields } = this.state\r\n\t\tif (this.isUserEntityEmail()) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (formFields.attributeType === \"Picklist String\" || formFields.attributeType === \"Tree Dropdown\" || formFields.attributeType === \"State Field\" || formFields.attributeType === \"Shared Lookup\") {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t!(this.isAzureAttributeFromUserEntity() && this.isUserEntityEmail()) &&\r\n\t\t\t!this.isImageAttribute()\r\n\t\t);\r\n\t}\r\n\r\n\tgetGroups = () => {\r\n\t\tconst { attributes } = this.props;\r\n\t\tconst allAttributesGroups = attributes.map((attr) => attr.group).filter((group) => group && group.trim());\r\n\t\tconst groups = [...new Set(allAttributesGroups)];\r\n\t\treturn groups;\r\n\t};\r\n\r\n\thasErrors = (e) => {\r\n\t\tlet errors = !this.state.disabled\r\n\t\tif (\r\n\t\t\tthis.state.errors.isNameValid === false ||\r\n\t\t\tthis.state.errors.isMinValid === false ||\r\n\t\t\tthis.state.errors.isMaxValid === false ||\r\n\t\t\tthis.state.errors.isDefaultValueValid === false ||\r\n\t\t\tthis.state.errors.isDefaultDateValid === false ||\r\n\t\t\tthis.state.errors.isPicklistValid === false ||\r\n\t\t\tthis.state.errors.isStatefieldValid === false ||\r\n\t\t\tthis.state.errors.isTreedropdownValid === false ||\r\n\t\t\tthis.state.errors.isPatternValid === false ||\r\n\t\t\tthis.state.errors.isLabelValid === false\r\n\t\t) {\r\n\t\t\terrors = true\r\n\t\t}\r\n\t\treturn errors\r\n\t}\r\n\r\n\tgetLookupProperties = async () => {\r\n\t\tconst { _id } = this.props.SideData;\r\n\t\tconst response = await getEntityLookupReferencedAttribute(_id);\r\n\t\tconst { message } = response;\r\n\t\tif (message === \"Reference attribute found\") {\r\n\t\t\tconst { referenceEntity, referencedAttribute } = response.data;\r\n\t\t\treturn {\r\n\t\t\t\treferenceEntity,\r\n\t\t\t\treferencedAttribute,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\t//\r\n\t\t}\r\n\t};\r\n\r\n\tgetShowMoreValueById = (entityId, attributeId) => {\r\n\t\tconst entityConfigLocalStorageString = localStorage.getItem(\"entity-config\");\r\n\t\tif (entityConfigLocalStorageString === null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tconst entityConfig = JSON.parse(entityConfigLocalStorageString);\r\n\t\tif (entityConfig[entityId] === undefined) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (entityConfig[entityId][attributeId] === undefined) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn entityConfig[entityId][attributeId][\"showMoreAttributeProperties\"];\r\n\t};\r\n\r\n\t// Render functions\r\n\tshouldSaveAsAttributeTemplateBeDisabled = () => (\r\n\t\t!this.state.disabled || this.props.SideData.isSystemAttribute || this.props.SideData.attributeType === \"Entity Lookup\" || ((this.state.formFields.triggerSetting && JSON.parse(this.state.formFields.triggerSetting).formulaEnabled) && (this.state.formFields.formula != undefined && this.state.formFields.formula.length > 0))\r\n\t)\r\n\r\n\tshouldDeleteBeDisabled = () => {\r\n\t\treturn (\r\n\t\t\tthis.props.SideData.isSystemAttribute ||\r\n\t\t\tthis.isAzureAttributeFromUserEntity()\r\n\t\t);\r\n\t}\r\n\r\n\tisAzureAttributeFromUserEntity = () => {\r\n\t\treturn this.props.isUserEntity && this.state.formFields.isAzureAttribute\r\n\t}\r\n\r\n\t// handlers\r\n\r\n\ttoggleStatesRulesDialog = () => {\r\n\t\tthis.setState({ showStatesRulesDialog: !this.state.showStatesRulesDialog });\r\n\t};\r\n\r\n\tfilterDummyData = (attributeType) => {\r\n\t\tif (attributeType === \"String\") {\r\n\t\t\treturn DummyLabelHelper.DummyLabelValues\r\n\t\t} else {\r\n\t\t\tlet filterValue = DummyLabelHelper.TypeMap.find(type => type.type === attributeType).value\r\n\t\t\tlet dummyLabeldData = DummyLabelHelper.DummyLabelValues.filter(label => label === filterValue || label === \"No Match\")\r\n\t\t\treturn dummyLabeldData\r\n\t\t}\r\n\t}\r\n\r\n\thandleChangeWithName = (name, value) => {\r\n\t\tthis.updateForm(name, value);\r\n\t};\r\n\r\n\t// handleChangeWithoutValidation = (e) => {\r\n\t// \tconst { name, value } = e.target;\r\n\t// \tthis.updateForm(name, value, true);\r\n\t// };\r\n\r\n\thandleGroupChange = (e) => {\r\n\t\tconst { name } = e.target;\r\n\t\tlet { value } = e.target;\r\n\t\tif (value === null) {\r\n\t\t\tvalue = '';\r\n\t\t}\r\n\t\tthis.updateForm(name, value);\r\n\t}\r\n\r\n\thandleStateFieldChange = (data) => {\r\n\t\tthis.updateForm(\"statefield\", data);\r\n\t};\r\n\r\n\thandleTreeDropdownChange = (data) => {\r\n\t\tthis.updateForm(\"treeDropdown\", data);\r\n\t};\r\n\r\n\thandleChange = (e) => {\r\n\t\tlet { name, value } = e.target;\r\n\t\tif (value === null && (name === 'min' || name === 'max')) {\r\n\t\t\tthis.updateForm(name, \"\");\r\n\t\t} else {\r\n\t\t\tthis.updateForm(name, value);\r\n\t\t}\r\n\t};\r\n\r\n\thandleCheckbox = (e) => {\r\n\t\tconst { name } = e.target.element;\r\n\t\tconst { value } = e;\r\n\t\tthis.updateForm(name, value);\r\n\t};\r\n\r\n\tsetLabelTranslation = (data) => {\r\n\t\tthis.updateForm(\"languages\", data);\r\n\t\tthis.setState({\r\n\t\t\tshowLabelTranslationDialog: false\r\n\t\t});\r\n\t}\r\n\r\n\thandleTimeFields = (e) => {\r\n\t\tif (e.event === null) return;\r\n\t\tconst { text } = e;\r\n\t\tconst { name } = e.element;\r\n\t\tthis.updateForm(name, text);\r\n\t};\r\n\r\n\tclearTimeField = (name) => {\r\n\t\tthis.updateForm(name, \"\");\r\n\t};\r\n\r\n\tupdateData = (type, data) => {\r\n\t\tthis.defaultFormFields[type] = data;\r\n\t\tthis.updateForm(type, data)\r\n\t};\r\n\tupdateForm = (property, value, validate = true) => {\r\n\t\tconst { formFields } = this.state;\r\n\t\tformFields[property] = value;\r\n\t\tthis.setDependentProperties(formFields, property);\r\n\t\tif (validate) {\r\n\t\t\tconst errors = this.validate(formFields);\r\n\t\t\tconst disabled = property === 'formula' || property === 'formulaJson' ? false : this.disableSave(formFields, errors);\r\n\t\t\t// const disabled = this.disableSave(formFields, errors);\r\n\t\t\tthis.setState({ formFields, disabled, errors });\r\n\t\t} else {\r\n\t\t\tthis.setState({ formFields });\r\n\t\t}\r\n\t};\r\n\r\n\tsetDependentProperties = (formFields, property) => {\r\n\t\tif (property === \"defaultDate\") {\r\n\t\t\tif (formFields[property]) {\r\n\t\t\t\t// control the null value\r\n\t\t\t\tformFields.defaultDate = formFields.defaultDate.replace(\"__\", \"_0_\")\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (property === \"setDefaultDate\" && formFields.attributeType === \"DateTime\") {\r\n\t\t\tformFields.defaultDate = \"Today_+_0_Days\";\r\n\t\t\tformFields.defaultTime = \"10:00 AM\";\r\n\t\t} else if (property === \"unit\" && formFields[property].trim() === \"\") {\r\n\t\t\tformFields[\"unit\"] = \"none\";\r\n\t\t\tformFields[\"unitSide\"] = this.defaultFormFields.unitSide || \"Right\";\r\n\t\t} else if (property === \"picklist\") {\r\n\t\t\tlet dropdownValues = formFields.picklist.split('ɖ')\r\n\t\t\tlet exist = dropdownValues.includes(formFields.defaultValue)\r\n\t\t\tif (!exist) {\r\n\t\t\t\tformFields.defaultValue = \"\"\r\n\t\t\t}\r\n\t\t} else if ((property === \"readOnly\" || property === \"defaultValue\") && formFields.readOnly && formFields.defaultValue !== \"\" && formFields.attributeType === \"Number\") {\r\n\t\t\tformFields.min = \"\"\r\n\t\t\tformFields.max = \"\"\r\n\t\t} else if (property === \"entity\") {\r\n\t\t\tformFields.relation = {};\r\n\t\t\tformFields.attribute = {};\r\n\t\t} else if (property === \"relation\") {\r\n\t\t\tformFields.attribute = {};\r\n\t\t} else if (formFields.attributeType === \"Picklist String\" && property === \"defaultValue\") {\r\n\t\t\tif (formFields.defaultValue === null || formFields.defaultValue === undefined) {\r\n\t\t\t\tformFields.defaultValue = \"\"\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Change detection\r\n\tdisableSave = (formFields, errors) => {\r\n\t\tconst errorKeys = Object.keys(errors).filter((key) => key.startsWith(\"is\"));\r\n\t\tfor (const key of errorKeys) {\r\n\t\t\tif (!errors[key]) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst { defaultFormFields } = this;\r\n\t\tconst { attributeType } = formFields;\r\n\t\tconst fieldData = [...Fields[attributeType]];\r\n\t\tif (attributeType === \"Mirror\") {\r\n\t\t\tif (\r\n\t\t\t\tformFields.attribute &&\r\n\t\t\t\t(\r\n\t\t\t\t\tformFields.attribute.attributeType === \"Number\" ||\r\n\t\t\t\t\tformFields.attribute.attributeType === \"DateTime\" ||\r\n\t\t\t\t\tformFields.attribute.attributeType === \"Picklist String\" ||\r\n\t\t\t\t\tformFields.attribute.attributeType === \"State Field\"\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\t\t\t\tlet otherFieldsArr = Fields[formFields.attribute.attributeType];\r\n\t\t\t\tfor (let fieldElement of otherFieldsArr) {\r\n\t\t\t\t\tconst { field } = fieldElement;\r\n\t\t\t\t\tconst isIncluded = fieldData.some((fieldDataElement) => fieldDataElement.field === field)\r\n\t\t\t\t\tif (!isIncluded) {\r\n\t\t\t\t\t\tfieldData.push(fieldElement)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet isChanged = true;\r\n\t\tfor (const field of fieldData) {\r\n\t\t\tif (field.state === \"formula\" || field.state === \"formulaJson\") {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (field.state === \"triggerSetting\") {\r\n\t\t\t\tif (formFields.formula === undefined) {\r\n\t\t\t\t\tisChanged = true;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tlet formFieldsTriggerSetting = formFields[field.state];\r\n\t\t\t\tif (defaultFormFields[field.state] === undefined) {\r\n\t\t\t\t\tif (typeof formFieldsTriggerSetting === \"string\") {\r\n\t\t\t\t\t\tformFieldsTriggerSetting = JSON.parse(formFieldsTriggerSetting);\r\n\t\t\t\t\t\tif (formFieldsTriggerSetting.formulaEnabled === true) {\r\n\t\t\t\t\t\t\tisChanged = true;\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tlet defaultFormFieldsTriggerSetting = defaultFormFields[field.state];\r\n\t\t\t\tif (typeof defaultFormFieldsTriggerSetting === \"string\" && typeof formFieldsTriggerSetting === \"string\") {\r\n\t\t\t\t\tdefaultFormFieldsTriggerSetting = JSON.parse(defaultFormFieldsTriggerSetting);\r\n\t\t\t\t\tformFieldsTriggerSetting = JSON.parse(formFieldsTriggerSetting);\r\n\t\t\t\t\tif (defaultFormFieldsTriggerSetting.formulaEnabled !== formFieldsTriggerSetting.formulaEnabled) {\r\n\t\t\t\t\t\tisChanged = true;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// check for name and color change in statefield for each items\r\n\t\t\tif (field.state === \"statefield\" && attributeType === \"State Field\") {\r\n\t\t\t\tif (formFields.statefield.length !== defaultFormFields.statefield.length) {\r\n\t\t\t\t\tisChanged = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tfor (let i = 0; i < formFields.statefield.length; i++) {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tformFields.statefield[i].name !== defaultFormFields.statefield[i].name ||\r\n\t\t\t\t\t\tformFields.statefield[i].color.replace(/\\s/g, '') !== defaultFormFields.statefield[i].color.replace(/\\s/g, '')\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tisChanged = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!isChanged) break;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (field.state === \"cellFormatting\") {\r\n\t\t\t\tconst isCellFormattingChanged = this.checkCellFormattingHasChanged(formFields[field.state], defaultFormFields[field.state]);\r\n\t\t\t\tif (isCellFormattingChanged) {\r\n\t\t\t\t\tisChanged = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (field.state === \"treeDropdown\") {\r\n\t\t\t\tconst isSame = CheckIfTreeIsSame(formFields[field.state], defaultFormFields[field.state]);\r\n\t\t\t\tif (!isSame) {\r\n\t\t\t\t\tisChanged = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (field.state === \"allowedFileTypes\") {\r\n\t\t\t\tif (formFields.allowedFileTypes.length !== defaultFormFields.allowedFileTypes.length) {\r\n\t\t\t\t\tisChanged = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tfor (let i = 0; i < formFields.allowedFileTypes.length; i++) {\r\n\t\t\t\t\tif (formFields.allowedFileTypes[i] !== defaultFormFields.allowedFileTypes[i]) {\r\n\t\t\t\t\t\tisChanged = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!isChanged) break;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (field.state === \"attribute\" || field.state === \"entity\" || field.state === \"relation\") {\r\n\t\t\t\tif (!formFields[field.state] && defaultFormFields[field.state]) {\r\n\t\t\t\t\tisChanged = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (\r\n\t\t\t\t\t(formFields[field.state] && !defaultFormFields[field.state]) ||\r\n\t\t\t\t\t(formFields[field.state] && defaultFormFields[field.state] && formFields[field.state]._id !== defaultFormFields[field.state]._id)\r\n\t\t\t\t) {\r\n\t\t\t\t\tisChanged = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif ((defaultFormFields[field.state] !== formFields[field.state])) {\r\n\t\t\t\tisChanged = false;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isLibrary && this.props.isInternalUser) {\r\n\t\t\tif (\r\n\t\t\t\tformFields.alwaysRecommended !== defaultFormFields.alwaysRecommended ||\r\n\t\t\t\tformFields.requiredInAlice !== defaultFormFields.requiredInAlice\r\n\t\t\t) {\r\n\t\t\t\tisChanged = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn isChanged;\r\n\t};\r\n\r\n\tcheckCellFormattingHasChanged = (cellFormatting, defaultCellFormatting) => {\r\n\t\tif (typeof cellFormatting !== \"object\") {\r\n\t\t\tcellFormatting = JSON.parse(cellFormatting);\r\n\t\t}\r\n\t\tif (typeof defaultCellFormatting !== \"object\") {\r\n\t\t\tdefaultCellFormatting = JSON.parse(defaultCellFormatting);\r\n\t\t}\r\n\t\tconst { ifStatement, elseStatement } = cellFormatting\r\n\t\tconst { ifStatement: defaultIfStatement, elseStatement: defaultElseStatement } = defaultCellFormatting\r\n\t\tif (ifStatement.length !== defaultIfStatement.length || elseStatement.length !== defaultElseStatement.length) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tfor (let i = 0; i < ifStatement.length; i++) {\r\n\t\t\tif (\r\n\t\t\t\ttypeof ifStatement[i].condition1 !== typeof defaultIfStatement[i].condition1 ||\r\n\t\t\t\ttypeof ifStatement[i].condition2 !== typeof defaultIfStatement[i].condition2\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (typeof ifStatement[i].condition1 === \"object\") {\r\n\t\t\t\tif (ifStatement[i].condition1.length !== defaultIfStatement[i].condition1.length) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tfor (let j = 0; j < ifStatement[i].condition1.length; j++) {\r\n\t\t\t\t\tif (ifStatement[i].condition1[j] !== defaultIfStatement[i].condition1[j]) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (\r\n\t\t\t\tifStatement[i].condition1 !== defaultIfStatement[i].condition1 ||\r\n\t\t\t\tifStatement[i].condition2 !== defaultIfStatement[i].condition2 ||\r\n\t\t\t\tifStatement[i].color !== defaultIfStatement[i].color ||\r\n\t\t\t\tifStatement[i].colorOption.value !== defaultIfStatement[i].colorOption.value ||\r\n\t\t\t\tifStatement[i].operator.value !== defaultIfStatement[i].operator.value\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (let i = 0; i < elseStatement.length; i++) {\r\n\t\t\tif (\r\n\t\t\t\telseStatement[i].color !== defaultElseStatement[i].color ||\r\n\t\t\t\telseStatement[i].colorOption.value !== defaultElseStatement[i].colorOption.value\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Validation\r\n\tvalidate = (formFields) => {\r\n\t\tconst { attributes } = this.props;\r\n\t\tconst { _id } = this.props.SideData;\r\n\t\tconst errors = {\r\n\t\t\tisNameValid: true,\r\n\t\t\tisLabelValid: true,\r\n\t\t\tisMinValid: true,\r\n\t\t\tisMaxValid: true,\r\n\t\t\tisDefaultValueValid: true,\r\n\t\t\tisDefaultDateValid: true,\r\n\t\t\tisPicklistValid: true,\r\n\t\t\tisStatefieldValid: true,\r\n\t\t\tisTreedropdownValid: true,\r\n\t\t\tisPatternValid: true,\r\n\t\t\tisNumberOfAttachmentsValid: true,\r\n\t\t\tisMaxFileSizeValid: true,\r\n\t\t\tisAllowedFileTypesValid: true,\r\n\t\t\tnameError: \"\",\r\n\t\t\tlabelError: \"\",\r\n\t\t\tminError: \"\",\r\n\t\t\tmaxError: \"\",\r\n\t\t\tdefaultValueError: \"\",\r\n\t\t\tdefaultDateError: \"\",\r\n\t\t\tpicklistError: \"\",\r\n\t\t\ttreedropdownError: \"\",\r\n\t\t\tstatefieldError: \"\",\r\n\t\t\tpatternError: \"\",\r\n\t\t\tnumberOfAttachmentsError: \"\",\r\n\t\t\tmaxFileSizeError: \"\",\r\n\t\t\tallowedFileTypesError: \"\"\r\n\t\t};\r\n\r\n\t\tif (!formFields.attributeName.trim()) {\r\n\t\t\terrors.isNameValid = false;\r\n\t\t\terrors.nameError = this.props.t(\"errors.name_is_required\");\r\n\t\t} else if (formFields.attributeName.trim().match(/^\\d/)) {\r\n\t\t\terrors.isNameValid = false;\r\n\t\t\terrors.nameError = this.props.t(\"errors.name_cannot_start_with_number\");\r\n\t\t} else if (/^\\[SYS\\]/i.test(formFields.attributeName.trim())) {\r\n\t\t\terrors.isNameValid = false;\r\n\t\t\terrors.nameError = this.props.t(\"errors.name_cannot_have_sys_prefix\");\r\n\t\t} else if (formFields.attributeName.trim().length > 30) {\r\n\t\t\terrors.isNameValid = false;\r\n\t\t\terrors.nameError = this.props.t(\"errors.name_length_exceeded\");\r\n\t\t} else if (formFields.attributeName.toLowerCase().replace(/[^a-zA-Z0-9]/g, \"\").trim() === \"id\") {\r\n\t\t\terrors.isNameValid = false;\r\n\t\t\terrors.nameError = this.props.t(\"errors.name_is_reserved\")\r\n\t\t} else {\r\n\t\t\tconst nameInUse = attributes.find((attr) => (\r\n\t\t\t\tremoveSpecialCharacters(attr.attributeName.toLowerCase().trim()) === removeSpecialCharacters(formFields.attributeName.toLowerCase().trim()) &&\r\n\t\t\t\tattr._id !== _id\r\n\t\t\t));\r\n\t\t\tif (nameInUse) {\r\n\t\t\t\terrors.isNameValid = false;\r\n\t\t\t\terrors.nameError = this.props.t(\"errors.name_in_use\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (formFields.attributeLabel.trim() === \"\") {\r\n\t\t\terrors.isLabelValid = false\r\n\t\t\terrors.labelError = this.props.t(\"errors.label_required\");\r\n\t\t}\r\n\r\n\t\tif (formFields.required && formFields.readOnly && formFields.defaultValue === \"\") {\r\n\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\terrors.defaultValueError = this.props.t(\"errors.default_value_required\");\r\n\t\t}\r\n\r\n\t\tif (formFields.attributeType === \"String\") {\r\n\t\t\tconst { min, max, pattern, defaultValue } = formFields;\r\n\t\t\tconst patternRegex = /^[09\\#LAa\\&()C-]+$/g;\r\n\r\n\t\t\tif (pattern && !patternRegex.test(pattern)) {\r\n\t\t\t\terrors.isPatternValid = false;\r\n\t\t\t\terrors.patternError = this.props.t(\"errors.invalid_pattern_characters\")\r\n\t\t\t}\r\n\r\n\t\t\tconst minValue = parseInt(min);\r\n\t\t\tconst maxValue = parseInt(max);\r\n\t\t\tconst defaultValueLength = defaultValue ? defaultValue.length : 0;\r\n\r\n\t\t\tif (errors.isMinValid && minValue < 1) {\r\n\t\t\t\terrors.isMinValid = false;\r\n\t\t\t\terrors.minError = this.props.t(\"errors.min_length_must_be_greater_than_0\");\r\n\t\t\t}\r\n\r\n\t\t\tif (errors.isMaxValid && maxValue < 1) {\r\n\t\t\t\terrors.isMaxValid = false;\r\n\t\t\t\terrors.maxError = this.props.t(\"errors.max_length_must_be_greater_than_0\");\r\n\t\t\t}\r\n\r\n\t\t\tif (errors.isMaxValid && maxValue > 256) {\r\n\t\t\t\terrors.isMaxValid = false;\r\n\t\t\t\terrors.maxError = this.props.t(\"errors.maximum_length_cannot_exceed_256\");\r\n\t\t\t}\r\n\r\n\t\t\tif (errors.isMaxValid && errors.isMinValid && minValue > maxValue) {\r\n\t\t\t\terrors.isMinValid = false;\r\n\t\t\t\terrors.minError = this.props.t(\"errors.minimum_length_cannot_exceed_maximum_length\");\r\n\t\t\t}\r\n\r\n\t\t\tif (errors.isMinValid && defaultValueLength > 0 && minValue > defaultValueLength && !pattern) {\r\n\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\terrors.defaultValueError = this.props.t(\"errors.default_value_cannot_below_min_length\");\r\n\t\t\t}\r\n\t\t\tif (errors.isMaxValid && defaultValueLength > 0 && maxValue < defaultValueLength && !pattern) {\r\n\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\terrors.defaultValueError = this.props.t(\"errors.default_value_cannot_exceed_max_length\");\r\n\t\t\t}\r\n\t\t\tif (errors.isPatternValid && errors.isDefaultValueValid && defaultValueLength > 0) {\r\n\t\t\t\tconst { KendoMaskToRegexMap } = this;\r\n\t\t\t\tlet patternRegexString = \"\";\r\n\t\t\t\tfor (let letter of pattern) {\r\n\t\t\t\t\tpatternRegexString += KendoMaskToRegexMap[letter] || letter;\r\n\t\t\t\t}\r\n\t\t\t\tconst patternRegex = new RegExp(patternRegexString);\r\n\t\t\t\tif (!patternRegex.test(defaultValue)) {\r\n\t\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\t\terrors.defaultValueError = this.props.t(\"errors.default_value_must_match_pattern\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (formFields.attributeType === \"Picklist String\") {\r\n\t\t\tconst picklistValues = formFields.picklist\r\n\t\t\t\t.split(\"ɖ\")\r\n\t\t\t\t.filter((option) => option.trim() !== \"\")\r\n\t\t\t\t.map((option) => option.trim());\r\n\t\t\tconst picklistValuesMap = {};\r\n\r\n\t\t\tlet isPicklistValid = true;\r\n\r\n\t\t\tif (picklistValues.length === 0) {\r\n\t\t\t\terrors.isPicklistValid = false;\r\n\t\t\t\terrors.picklistError = this.props.t(\"errors.dropdown_values_is_required\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tfor (const value of picklistValues) {\r\n\t\t\t\t\tpicklistValuesMap[value] = picklistValuesMap[value] ? ++picklistValuesMap[value] : 1;\r\n\t\t\t\t\tif (picklistValuesMap[value] > 1) {\r\n\t\t\t\t\t\tisPicklistValid = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!isPicklistValid) {\r\n\t\t\t\t\terrors.isPicklistValid = isPicklistValid;\r\n\t\t\t\t\terrors.picklistError = this.props.t(\"errors.duplicate_values_not_allowed\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (formFields.attributeType === \"State Field\") {\r\n\t\t\tconst statefieldValues = formFields.statefield\r\n\t\t\t\t.filter((option) => option.name.trim() !== \"\")\r\n\t\t\t\t.map((option) => option.name.trim());\r\n\t\t\tconst statefieldValuesMap = {};\r\n\r\n\t\t\tlet isStatefieldValid = true;\r\n\r\n\t\t\tif (statefieldValues.length === 0) {\r\n\t\t\t\terrors.isStatefieldValid = false;\r\n\t\t\t\terrors.statefieldError = this.props.t(\"errors.dropdown_values_is_required\")\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tfor (const value of statefieldValues) {\r\n\t\t\t\t\tstatefieldValuesMap[value] = statefieldValuesMap[value] ? ++statefieldValuesMap[value] : 1;\r\n\t\t\t\t\tif (statefieldValuesMap[value] > 1) {\r\n\t\t\t\t\t\tisStatefieldValid = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!isStatefieldValid) {\r\n\t\t\t\t\terrors.isStatefieldValid = isStatefieldValid;\r\n\t\t\t\t\terrors.statefieldError = this.props.t(\"errors.duplicate_values_not_allowed\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (formFields.attributeType === \"DateTime\") {\r\n\t\t\tif (formFields.dateTimeType === \"time\" || formFields.dateTimeType === \"datetime\") {\r\n\t\t\t\tconst { minTime, maxTime, defaultTime } = formFields;\r\n\t\t\t\tlet min = minTime;\r\n\t\t\t\tlet max = maxTime;\r\n\t\t\t\tlet DefaultTime = defaultTime\r\n\t\t\t\tif (min !== \"\") {\r\n\t\t\t\t\tmin = new Date('2020-01-01 ' + minTime);\r\n\t\t\t\t}\r\n\t\t\t\tif (max !== \"\") {\r\n\t\t\t\t\tmax = new Date('2020-01-01 ' + maxTime);\r\n\t\t\t\t}\r\n\t\t\t\tif (defaultTime !== \"\") {\r\n\t\t\t\t\tDefaultTime = new Date('2020-01-01 ' + defaultTime)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (min && max && min > max) {\r\n\t\t\t\t\terrors.isMinValid = false;\r\n\t\t\t\t\terrors.minError = this.props.t(\"errors.earliest_time_cannot_exceed_latest_time\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\terrors.isMinValid = true;\r\n\t\t\t\t\terrors.minError = \"\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (DefaultTime === \"\" && formFields.dateTimeType === \"datetime\" && formFields.setDefaultDate) {\r\n\t\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\t\terrors.defaultValueError = this.props.t(\"errors.default_time_cannot_be_blank\");\r\n\t\t\t\t} else if (DefaultTime && min && DefaultTime < min && formFields.setDefaultDate) {\r\n\t\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\t\terrors.defaultValueError = this.props.t(\"errors.default_time_cannot_exceed_earliest_time\");\r\n\t\t\t\t} else if (DefaultTime && max && DefaultTime > max && formFields.setDefaultDate) {\r\n\t\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\t\terrors.defaultValueError = this.props.t(\"errors.default_time_cannot_be_later_than_latest_time\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\terrors.isDefaultValueValid = true;\r\n\t\t\t\t\terrors.defaultValueError = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (formFields.setDefaultDate && (formFields.dateTimeType === \"date\" || formFields.dateTimeType === \"datetime\")) {\r\n\t\t\t\tconst { defaultDate } = formFields;\r\n\t\t\t\tconst defaultDateValue = defaultDate.split(\"_\");\r\n\t\t\t\tconst defaultDateDayDifference = defaultDateValue[2];\r\n\t\t\t\tif (parseInt(defaultDateDayDifference) > 365) {\r\n\t\t\t\t\terrors.isDefaultDateValid = false;\r\n\t\t\t\t\terrors.defaultDateError = this.props.t(\"errors.difference_must_be_less_than_365\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (formFields.attributeType === \"Number\") {\r\n\t\t\tlet { min, max, defaultValue } = formFields;\r\n\t\t\tconst minValue = parseInt(min);\r\n\t\t\tconst maxValue = parseInt(max);\r\n\t\t\tdefaultValue = defaultValue === null ? \"\" : defaultValue;\r\n\t\t\tconst defaultValueLength = defaultValue === \"\" ? 0 : defaultValue.toString().length;\r\n\t\t\tif (minValue > 2147483647) {\r\n\t\t\t\terrors.isMinValid = false;\r\n\t\t\t\terrors.minError = this.props.t(\"errors.min_value_cannot_exceed_limit\");\r\n\t\t\t}\r\n\t\t\tif (maxValue > 2147483647) {\r\n\t\t\t\terrors.isMaxValid = false;\r\n\t\t\t\terrors.maxError = this.props.t(\"errors.max_value_cannot_exceed_limit\");\r\n\t\t\t}\r\n\t\t\tif (defaultValueLength > 0 && parseInt(defaultValue) > 2147483647) {\r\n\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\terrors.defaultValueError = this.props.t(\"errors.default_value_cannot_exceed_limit\");\r\n\t\t\t}\r\n\r\n\t\t\tif (errors.isMaxValid && errors.isMinValid && minValue > maxValue) {\r\n\t\t\t\terrors.isMinValid = false;\r\n\t\t\t\terrors.minError = this.props.t(\"errors.min_value_cannot_exceed_max_value\");\r\n\t\t\t}\r\n\r\n\t\t\tif (errors.isMinValid && minValue > defaultValue && defaultValueLength > 0) {\r\n\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\terrors.defaultValueError = this.props.t(\"errors.default_value_cannot_be_less_than_min_value\");\r\n\t\t\t}\r\n\t\t\tif (errors.isMaxValid && maxValue < defaultValue && defaultValueLength > 0) {\r\n\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\terrors.defaultValueError = this.props.t(\"errors.default_value_cannot_exceed_max_value\");\r\n\t\t\t}\r\n\t\t} else if (formFields.attributeType === \"Email\") {\r\n\t\t\tconst re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\t\t\tlet validEmail = re.test(formFields.defaultValue.toLowerCase());\r\n\t\t\tif (!validEmail && formFields.defaultValue.length > 0) {\r\n\t\t\t\terrors.isDefaultValueValid = false;\r\n\t\t\t\terrors.defaultValueError = this.props.t(\"errors.incorrect_email_format\");\r\n\t\t\t}\r\n\t\t} else if (formFields.attributeType === \"Tree Dropdown\") {\r\n\t\t\tconst error = CheckErrorInTree(formFields.treeDropdown);\r\n\t\t\tif (error !== \"\") {\r\n\t\t\t\terrors.isTreedropdownValid = false;\r\n\t\t\t\terrors.treedropdownError = this.props.t(\"treedropdownerrors.\" + error, { ns: \"attribute/tree_dropdown\" });\r\n\t\t\t}\r\n\t\t} else if (formFields.attributeType === \"Image\") {\r\n\t\t\tconst { allowedFileTypes, maxNumberOfImages, maxFileSize } = formFields;\r\n\t\t\tif (!allowedFileTypes || allowedFileTypes.length === 0) {\r\n\t\t\t\terrors.isAllowedFileTypesValid = false;\r\n\t\t\t\terrors.allowedFileTypesError = this.props.t(\"errors.atleast_one_file_type_required\");\r\n\t\t\t}\r\n\t\t\tif (maxNumberOfImages < 1) {\r\n\t\t\t\terrors.isNumberOfAttachmentsValid = false;\r\n\t\t\t\terrors.numberOfAttachmentsError = this.props.t(\"errors.minimum_one_required\");\r\n\t\t\t} else if (maxNumberOfImages > 30) {\r\n\t\t\t\terrors.isNumberOfAttachmentsValid = false;\r\n\t\t\t\terrors.numberOfAttachmentsError = this.props.t(\"errors.maximum_thiry_allowed\");\r\n\t\t\t}\r\n\t\t\tif (maxFileSize < 1) {\r\n\t\t\t\terrors.isMaxFileSizeValid = false;\r\n\t\t\t\terrors.maxFileSizeError = this.props.t(\"errors.minimum_one_required\");\r\n\t\t\t} else if (maxFileSize > 10) {\r\n\t\t\t\terrors.isMaxFileSizeValid = false;\r\n\t\t\t\terrors.maxFileSizeError = this.props.t(\"errors.maximum_ten_allowed\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn errors;\r\n\t};\r\n\r\n\tsetPicklistError = (err) => {\r\n\t\tconst { errors } = this.state;\r\n\t\tif (err.lengt > 0) {\r\n\t\t\terrors.isPicklistValid = false;\r\n\t\t} else {\r\n\t\t\terrors.isPicklistValid = true;\r\n\t\t}\r\n\t\terrors.picklistError = err;\r\n\t\tthis.setState(errors);\r\n\t};\r\n\r\n\tsetStateFieldError = (err) => {\r\n\t\tconst { errors } = this.state;\r\n\t\tif (err.lengt > 0) {\r\n\t\t\terrors.isStatefieldValid = false;\r\n\t\t} else {\r\n\t\t\terrors.isStatefieldValid = true;\r\n\t\t}\r\n\t\terrors.statefieldError = err;\r\n\t\tthis.setState(errors);\r\n\t};\r\n\r\n\t// Reset Part\r\n\tresetForm = async (e) => {\r\n\t\tconst formFields = await this.getFormFields();\r\n\t\tconst groups = this.getGroups();\r\n\t\tconst errors = {};\r\n\t\tconst disabled = true;\r\n\t\tthis.defaultFormFields = { ...formFields };\r\n\t\tconst resetFlag = !this.state.resetFlag;\r\n\t\tthis.addUserProfileRelatedFieldsIfApplicable(formFields);\r\n\t\tconst { triggerSetting } = formFields;\r\n\t\tthis.setState({\r\n\t\t\tformFields,\r\n\t\t\tgroups,\r\n\t\t\terrors,\r\n\t\t\tdisabled,\r\n\t\t\tresetFlag,\r\n\t\t\ttriggerSetting: triggerSetting ? JSON.parse(triggerSetting) : {}\r\n\t\t});\r\n\t};\r\n\r\n\tupdateAllFormulaByEntityId = async () => {\r\n\t\tconst { entityId, entityName, SideData, loadAttribute } = this.props;\r\n\t\tlet reqObj = {};\r\n\t\treqObj[\"entityId\"] = entityId;\r\n\t\treqObj[\"entityName\"] = entityName;\r\n\t\treqObj[\"oldAttrName\"] = SideData.attributeName;\r\n\t\treqObj[\"newAttrName\"] = this.state.formFields.attributeName;\r\n\t\treqObj[\"attributeId\"] = SideData._id;\r\n\r\n\t\tconst checkFormulaRequest = await callApiWithAuthorization(\r\n\t\t\t\"/api/v0/nodes/updateAllFormulaByEntityId\",\r\n\t\t\t{\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Content-Type\": \"application/json\"\r\n\t\t\t\t},\r\n\t\t\t\tbody: JSON.stringify(reqObj)\r\n\t\t\t}\r\n\t\t)\r\n\t\tconst checkFormulaResponse = await checkFormulaRequest.json();\r\n\t\tthis.setState({\r\n\t\t\treferenceAttr: Array.from(new Set(checkFormulaResponse.message)),\r\n\t\t\treferenceChecked: true\r\n\t\t}, () => loadAttribute(SideData._id));\r\n\t}\r\n\tcancelRemoveDialog = (removeFormula) => {\r\n\t\tthis.setState({ removeFormula: false, disabled: false });\r\n\t\tthis.resetForm();\r\n\r\n\t}\r\n\r\n\tdeleteFormula = async (e) => {\r\n\t\tthis.setState({ loadFormula: true });\r\n\t\tthis.updateForm('formula', \"\");\r\n\t\tthis.updateForm('formulaJson', \"\");\r\n\t\tthis.setState({ removeFormula: false });\r\n\t\tawait this.updateAttribute(e);\r\n\t\tvar { formFields } = this.state;\r\n\t\tdelete formFields.formula;\r\n\t\tdelete formFields.formulaJson;\r\n\t\tdelete formFields.triggerSetting;\r\n\t\tthis.setState({ formFields });\r\n\t\tthis.setState({ loadFormula: false });\r\n\t}\r\n\r\n\t// Update part\r\n\tupdateAttributeConfirm = async (e) => {\r\n\t\tvar { formFields } = this.state;\r\n\t\tif (formFields.formula && this.state.triggerSetting.formulaEnabled === false) {\r\n\t\t\tthis.setState({ removeFormula: true });\r\n\t\t} else {\r\n\t\t\tawait this.updateAttribute(e);\r\n\t\t}\r\n\t}\r\n\r\n\tupdateAttribute = async (e) => {\r\n\t\tif (e && e.preventDefault) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\tthis.setState({ loading: true, disabled: true })\r\n\t\tconst { formFields, errors } = this.state;\r\n\t\tformFields.attributeName = formFields.attributeName.trim()\r\n\t\tconst { _id, attributeName } = this.props.SideData;\r\n\t\tconst { updateAttribute, loadAttribute } = this.props;\r\n\t\tif (formFields.attributeType === \"Picklist String\") {\r\n\t\t\tthis.handlePicklistPropertiesAndLinks(formFields);\r\n\t\t} else if (formFields.attributeType === \"String\") {\r\n\t\t\tformFields.max = formFields.max === null ? \"\" : formFields.max;\r\n\t\t\tformFields.min = formFields.min === null ? \"\" : formFields.min;\r\n\t\t\tif (formFields.pattern !== \"\") {\r\n\t\t\t\tformFields.max = \"\"\r\n\t\t\t\tformFields.min = \"\"\r\n\t\t\t}\r\n\t\t} else if (formFields.attributeType === \"Number\") {\r\n\t\t\tformFields.unit = formFields.unit.replace(/\\\"/g, '\\\\\"');\r\n\t\t\tformFields.max = formFields.max === null ? \"\" : formFields.max;\r\n\t\t\tformFields.min = formFields.min === null ? \"\" : formFields.min;\r\n\t\t\tformFields.defaultValue = formFields.defaultValue === null ? \"\" : formFields.defaultValue;\r\n\t\t}\r\n\t\tif (!formFields.group) {\r\n\t\t\tformFields.group = \"\";\r\n\t\t}\r\n\t\tif (this.defaultFormFields.attributeLabel !== formFields.attributeLabel && formFields.attributeType === \"String\") {\r\n\t\t\tformFields.dummyLabel = DummyLabelHelper.getDummyLabel(formFields.attributeLabel, formFields.attributeType)\r\n\t\t}\r\n\t\tif (\r\n\t\t\tformFields.attributeType === \"DateTime\" ||\r\n\t\t\tformFields.attributeType === \"Tags\" ||\r\n\t\t\tformFields.attributeType === \"Picklist String\" ||\r\n\t\t\tformFields.attributeType === \"State Field\" ||\r\n\t\t\tformFields.attributeType === \"Number\" ||\r\n\t\t\tformFields.attributeType === \"Mirror\"\r\n\t\t) {\r\n\t\t\tformFields.cellFormatting = typeof formFields.cellFormatting === \"string\" ? formFields.cellFormatting : JSON.stringify(formFields.cellFormatting);\r\n\t\t}\r\n\t\t//this.handleAttributeLinks();\r\n\r\n\r\n\t\t// clear empty item from picklist - ali\r\n\t\tif (formFields['picklist']) {\r\n\t\t\tlet values = formFields['picklist'].split('ɖ')\r\n\t\t\tvalues = values.filter(o => o.length > 0)\r\n\t\t\tfor (let i = 0; i < values.length; i++) {\r\n\t\t\t\tvalues[i] = values[i].trim()\r\n\t\t\t}\r\n\t\t\tvalues = values.join('ɖ');\r\n\t\t\tformFields['picklist'] = values\r\n\t\t}\r\n\r\n\t\tif (this.defaultFormFields.attributeName !== formFields.attributeName) {\r\n\t\t\tthis.handleAttributeNameChange(formFields);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\r\n\t\t\tconst isFormulaEnabled = formFields.triggerSetting && JSON.parse(formFields.triggerSetting)?.formulaEnabled;\r\n\t\t\tif (isFormulaEnabled) {\r\n\t\t\t\tswitch (formFields.attributeType) {\r\n\t\t\t\t\tcase \"String\":\r\n\t\t\t\t\t\tformFields.defaultValue = \"\";\r\n\t\t\t\t\t\tformFields.min = \"\";\r\n\t\t\t\t\t\tformFields.max = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"Number\":\r\n\t\t\t\t\t\tformFields.defaultValue = \"\";\r\n\t\t\t\t\t\tformFields.min = \"\";\r\n\t\t\t\t\t\tformFields.max = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"DateTime\":\r\n\t\t\t\t\t\tformFields.defaultTime = \"\";\r\n\t\t\t\t\t\tformFields.minTime = \"\";\r\n\t\t\t\t\t\tformFields.maxTime = \"\";\r\n\t\t\t\t\t\tformFields.defaultDate = \"\";\r\n\t\t\t\t\t\tformFields.setDefaultDate = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst properties = structuredClone(formFields);\r\n\r\n\t\t\tdebugger;\r\n\t\t\tif (properties.attributeType === \"Tree Dropdown\") {\r\n\t\t\t\tconst trimmedTreeDropdown = removeExtraSpaceFromTreeElement(properties['treeDropdown'])\r\n\t\t\t\tproperties['treeDropdown'] = JSON.stringify(trimmedTreeDropdown)\r\n\t\t\t} else if (properties.attributeType === \"Entity Lookup\") {\r\n\t\t\t\tdelete properties['referenceEntity'];\r\n\t\t\t\tdelete properties['referencedAttribute'];\r\n\t\t\t} else if (properties.attributeType === \"Mirror\") {\r\n\t\t\t\tproperties.references = {\r\n\t\t\t\t\tentityId: properties.entity._id,\r\n\t\t\t\t\tlinkedEntityId: properties.relation._id,\r\n\t\t\t\t\tattributeId: properties.attribute._id\r\n\t\t\t\t}\r\n\t\t\t\tdelete properties['entity'];\r\n\t\t\t\tdelete properties['relation'];\r\n\t\t\t\tdelete properties['attribute'];\r\n\t\t\t} else if (properties.attributeType === \"State Field\") {\r\n\t\t\t\tlet values = this.state.formFields.statefield;\r\n\t\t\t\tvalues = values.filter(o => o.name.trim().length > 0)\r\n\t\t\t\tfor (let i = 0; i < values.length; i++) {\r\n\t\t\t\t\tvalues[i]._id = values[i]._id || uuidv4()\r\n\t\t\t\t\tvalues[i].name = values[i].name.trim()\r\n\t\t\t\t\tvalues[i].order = parseInt((i + 1) * 10000000000);\r\n\t\t\t\t}\r\n\t\t\t\tproperties['statefield'] = values\r\n\t\t\t\tformFields['statefield'] = values\r\n\t\t\t\tlet newStates = values;\r\n\t\t\t\tlet { rules } = this.state.formFields\r\n\t\t\t\tnewStates = newStates\r\n\t\t\t\t\t.filter(state => state._id)\r\n\t\t\t\t\t.sort((a, b) => a.order - b.order)\r\n\t\t\t\t\t.filter((state, index, self) => index === self.findIndex((t) => t._id === state._id))\r\n\t\t\t\tconst deletedStates = this.defaultFormFields.statefield.filter(state => !newStates.find(t => t._id === state._id))\r\n\t\t\t\tconst rulesNeedTobeDeleted = rules.filter(rule => deletedStates.find(state => state._id === rule.fromStateId) || deletedStates.find(state => state._id === rule.toStateId))\r\n\t\t\t\trules = rules.filter(rule => !rulesNeedTobeDeleted.find(t => t._id === rule._id))\r\n\t\t\t\tproperties['rules'] = rules\r\n\t\t\t\tformFields['rules'] = rules\r\n\t\t\t}\r\n\r\n\t\t\tconst isLabelChanged = this.defaultFormFields.attributeLabel !== formFields.attributeLabel;\r\n\t\t\tconst isTooltipChanged = this.defaultFormFields.tooltip !== formFields.tooltip;\r\n\r\n\t\t\tproperties['isLabelChanged'] = isLabelChanged;\r\n\t\t\tproperties['isTooltipChanged'] = isTooltipChanged;\r\n\t\t\tproperties.projectId = this.props.project._id;\r\n\t\t\tconst attribute = await updateAttributeNode(_id, properties);\r\n\t\t\tif (attributeName !== formFields.attributeName) {\r\n\t\t\t\tthis.updateAllFormulaByEntityId();\r\n\t\t\t}\r\n\t\t\tformFields.languages = attribute.languages;\r\n\t\t\tif (formFields.attributeType === \"Mirror\") {\r\n\t\t\t\tif (this.defaultFormFields.attribute._id !== formFields.attribute._id) {\r\n\t\t\t\t\tformFields.entity = formFields.entity;\r\n\t\t\t\t\tformFields.relation = formFields.relation;\r\n\t\t\t\t\tformFields.attribute = formFields.attribute;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (attribute instanceof Array && attribute.length === 0) {\r\n\t\t\t\tthrow \"error\";\r\n\t\t\t}\r\n\t\t\tconst saveFormFields = { ...formFields };\r\n\t\t\tconst attributeWithCellFormatting = [\"DateTime\", \"Tags\", \"Picklist String\", \"State Field\", \"Number\"];\r\n\t\t\tif (\r\n\t\t\t\tattributeWithCellFormatting.includes(formFields.attributeType) ||\r\n\t\t\t\t(\r\n\t\t\t\t\tformFields.attributeType === \"Mirror\" &&\r\n\t\t\t\t\tattributeWithCellFormatting.includes(formFields.attribute.attributeType)\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\t\t\t\tsaveFormFields.cellFormatting = JSON.parse(saveFormFields.cellFormatting);\r\n\t\t\t\tformFields.cellFormatting = JSON.parse(formFields.cellFormatting);\r\n\t\t\t}\r\n\t\t\tthis.defaultFormFields = { ...formFields };\r\n\t\t\tconst disabled = this.disableSave(formFields, errors);\r\n\t\t\tthis.setState({\r\n\t\t\t\tformFields,\r\n\t\t\t\terrors,\r\n\t\t\t\tdisabled,\r\n\t\t\t});\r\n\t\t\tupdateAttribute(_id, saveFormFields);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.error(e);\r\n\t\t\tconst { errors } = this.state;\r\n\t\t\terrors.isTransactionValid = false;\r\n\t\t\terrors.transactionError = \"Something went wrong. Please refresh the page and try again.\";\r\n\t\t\tthis.setState({\r\n\t\t\t\terrors,\r\n\t\t\t});\r\n\t\t} finally {\r\n\t\t\tthis.setState({ loading: false })\r\n\t\t\tif (this.props.mutators && this.props.mutators.setFormsWithChanges) {\r\n\t\t\t\tthis.props.mutators.setFormsWithChanges(prevValue => ({\r\n\t\t\t\t\t...prevValue,\r\n\t\t\t\t\tattributeForm: false\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\thandleAttributeNameChange = (formFields) => {\r\n\t\tconst isLabelSame = this.defaultFormFields.attributeLabel === formFields.attributeLabel;\r\n\t\tconst isTooltipSame = this.defaultFormFields.tooltip === formFields.tooltip;\r\n\t\tconst isDescriptionSame = this.defaultFormFields.description === formFields.description;\r\n\r\n\t\tif (isLabelSame) {\r\n\t\t\tformFields.attributeLabel = formFields.attributeName;\r\n\t\t}\r\n\r\n\t\tif (isTooltipSame) {\r\n\t\t\tformFields.tooltip = formFields.attributeName;\r\n\t\t}\r\n\r\n\t\tif (isDescriptionSame) {\r\n\t\t\tformFields.description = formFields.attributeName;\r\n\t\t}\r\n\t}\r\n\r\n\t// Update links / other properties\r\n\thandlePicklistPropertiesAndLinks = (formFields) => {\r\n\t\tconst currentPicklist = formFields.picklist.split(\",\").filter((option) => option !== \"\");\r\n\t\tif (\r\n\t\t\tcurrentPicklist.length > 15 ||\r\n\t\t\t(formFields.multiSelect === true &&\r\n\t\t\t\tthis.props.SideData.multiSelect === false)\r\n\t\t) {\r\n\t\t\tunlinkPicklistAttribute(this.props.SideData._id);\r\n\t\t}\r\n\t\tformFields[\"picklist\"] = currentPicklist.join(\",\");\r\n\t};\r\n\r\n\t//\r\n\ttoggleFields = () => {\r\n\t\tthis.syncChangeToLocalStorage(!this.state.showAdditionalFields);\r\n\t\tthis.setState({\r\n\t\t\tshowAdditionalFields: !this.state.showAdditionalFields,\r\n\t\t});\r\n\t};\r\n\r\n\tsyncChangeToLocalStorage = (value) => {\r\n\t\tconst { entityId: id } = this.props;\r\n\t\tconst { _id: attributeId } = this.props.SideData;\r\n\t\tconst entityConfigLocalStorageString = localStorage.getItem(\"entity-config\");\r\n\t\tconst entityConfig = entityConfigLocalStorageString === null ? {} : JSON.parse(entityConfigLocalStorageString);\r\n\t\tif (entityConfig[id] === undefined) {\r\n\t\t\tentityConfig[id] = {};\r\n\t\t}\r\n\t\tif (entityConfig[id][attributeId] === undefined) {\r\n\t\t\tentityConfig[id][attributeId] = {};\r\n\t\t}\r\n\t\tentityConfig[id][attributeId][\"showMoreAttributeProperties\"] = value;\r\n\t\tlocalStorage.setItem(\"entity-config\", JSON.stringify(entityConfig));\r\n\t};\r\n\r\n\t// Save and continue part\r\n\r\n\tgetDisabled() {\r\n\t\treturn this.state.disabled;\r\n\t}\r\n\r\n\ttoggleSaveAndContinueDialog = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tshowSaveAndContinueDialog: !this.state.showSaveAndContinueDialog,\r\n\t\t});\r\n\t};\r\n\r\n\tupdateAttributeAndContinue = async (e) => {\r\n\t\tawait this.updateAttributeConfirm(e);\r\n\t\tthis.toggleSaveAndContinueDialog();\r\n\t\tif (this.state.removeFormula === false) {\r\n\t\t\tthis.props.selectNextAttribute();\r\n\t\t}\r\n\t};\r\n\r\n\tcancelUpdatingAttribute = (e) => {\r\n\t\tthis.toggleSaveAndContinueDialog();\r\n\t\t// this.props.selectNextAttribute();\r\n\t};\r\n\r\n\t// Save As Attribute Template part\r\n\ttoggleOverwriteTemplateDialog = () => {\r\n\t\tthis.setState({\r\n\t\t\tshowOverwriteTemplateDialog: !this.state.showOverwriteTemplateDialog,\r\n\t\t});\r\n\t};\r\n\r\n\tcreateAttributeTemplate = async (e) => {\r\n\t\tconst { organisationId } = this.props;\r\n\t\tconst { formFields } = this.state;\r\n\t\tconst { attributeName: LookupName, attributeType: lookupType, defaultValue, ...otherProperties } = formFields;\r\n\t\tthis.setState({\r\n\t\t\tloading: true\r\n\t\t})\r\n\t\ttry {\r\n\t\t\tconst attributeTemplates = await getAttributeTemplates(organisationId);\r\n\t\t\tconst lookupNameInUse = attributeTemplates.findIndex((template) => template.LookupName.toLowerCase() === LookupName.toLowerCase()) > -1;\r\n\r\n\t\t\tif (lookupNameInUse) {\r\n\t\t\t\tthis.toggleOverwriteTemplateDialog();\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tloading: false\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tconst sysName = this.getLookupSysName(LookupName, attributeTemplates);\r\n\t\t\t\tconst properties = {\r\n\t\t\t\t\tLookupName,\r\n\t\t\t\t\tlookupType,\r\n\t\t\t\t\tsysName,\r\n\t\t\t\t\t...otherProperties,\r\n\t\t\t\t}\r\n\t\t\t\tawait createAttributeTemplate(organisationId, properties)\r\n\t\t\t\tthis.props.ShowNotification(this.props.t(\"template_created_successfully\"));\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tloading: false\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconst { errors } = this.state;\r\n\t\t\tconst error = e.message;\r\n\t\t\terrors.isTransactionValid = false;\r\n\t\t\terrors.transactionError = this.props.t(\"errors.transaction_error\");\r\n\t\t\tthis.setState({\r\n\t\t\t\terrors,\r\n\t\t\t\tloading: false\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\toverwriteTemplate = async () => {\r\n\t\tconst { organisationId } = this.props;\r\n\t\tconst { formFields } = this.state;\r\n\t\tconst { attributeName: LookupName, attributeType: lookupType, defaultValue, ...otherProperties } = formFields;\r\n\t\tthis.setState({\r\n\t\t\tloading: true\r\n\t\t})\r\n\t\ttry {\r\n\t\t\tconst attributeTemplates = await getAttributeTemplates(organisationId);\r\n\t\t\tconst lookup = attributeTemplates.find((template) => template.LookupName.toLowerCase() === LookupName.toLowerCase());\r\n\t\t\tconst properties = {\r\n\t\t\t\tLookupName,\r\n\t\t\t\tlookupType,\r\n\t\t\t\t...otherProperties,\r\n\t\t\t}\r\n\t\t\tawait updateAttributeTemplate(lookup._id, properties)\r\n\t\t\tthis.toggleOverwriteTemplateDialog();\r\n\t\t\tthis.setState({\r\n\t\t\t\tloading: false\r\n\t\t\t})\r\n\t\t\tthis.props.ShowNotification(ATTRIBUTE_LABEL + \" template updated successfully\");\r\n\t\t} catch (e) {\r\n\t\t\tconst { errors } = this.state;\r\n\t\t\terrors.isTransactionValid = false;\r\n\t\t\terrors.transactionError = this.props.t(\"errors.transaction_error\");\r\n\t\t\tthis.setState({\r\n\t\t\t\terrors,\r\n\t\t\t\tloading: false\r\n\t\t\t});\r\n\t\t\tthis.toggleOverwriteTemplateDialog();\r\n\t\t}\r\n\t};\r\n\r\n\tgetLookupSysName = (lookupName, lookups) => {\r\n\t\tlet sysName = lookupName.toLowerCase().replace(/[^0-9a-zA-Z]/g, \"\");\r\n\t\tlet counter = 0;\r\n\t\tfor (let lookupIndex = 0; lookupIndex < lookups.length; lookupIndex++) {\r\n\t\t\tif (lookups[lookupIndex].LookupName === lookupName) {\r\n\t\t\t\t++counter;\r\n\t\t\t\tsysName = lookupName + String(counter);\r\n\t\t\t\tlookupIndex = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn sysName;\r\n\t};\r\n}\r\n\r\nexport default withTranslation([\r\n\t\"attribute/property_panel\",\r\n\t\"attribute/tree_dropdown\",\r\n]\r\n\t, {\r\n\t\twithRef: true\r\n\t})(SidebarAttribute);\r\n","import React, { Component } from \"react\";\r\nimport AttributeTypes from \"./AttributeTypes\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport DateTimeTypeField from \"./Fields/DateTimeTypeField\";\r\nimport NumberTypeField from \"./Fields/NumberTypeField\";\r\nimport DummyLabelHelper from \"./DummyLabel\"\r\nimport { PicklistOptionsField } from \"./Fields/PicklistStringFields\";\r\nimport { StateFeildOptionsField } from \"./Fields/StateFields\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport AttributeTypePopup from \"./AttributeTypePopup\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport { createAttribute } from \"../../API/Attribute/Attribute\";\r\nimport TreeDropdown from \"./Fields/TreeDropdown\";\r\nimport { CheckErrorInTree, removeExtraSpaceFromTreeElement, uuidv4 } from \"./Fields/TreeDropdownHelper\";\r\nimport { removeSpecialCharacters } from \"../Entities/utils\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport MirrorField from \"./Fields/MirrorField\";\r\nimport { createRelationshipV1 } from \"../Helpers/Relationships\";\r\n\r\nclass CreateAttributeDialog extends Component {\r\n\r\n\tDataTypes = AttributeTypes.Types;\r\n\tIcons = AttributeTypes.Icons;\r\n\tBaseFields = AttributeTypes.BaseFields;\r\n\tFields = AttributeTypes.Fields;\r\n\r\n\tattributeTypeRender = (li, itemProps) => {\r\n\t\tconst itemChildren = (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t{itemProps.dataItem.text}\r\n\t\t\t
    \r\n\t\t);\r\n\t\treturn React.cloneElement(li, { tabIndex: 0 }, itemChildren);\r\n\t};\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.DataTypes = AttributeTypes.getTranslatedTypes(props.t);\r\n\t\tthis.state = {\r\n\t\t\tdata: [],\r\n\t\t\tallAttributes: [],\r\n\t\t\tattributeName: \"\",\r\n\t\t\tnameError: \"\",\r\n\t\t\tvalidName: true,\r\n\t\t\tDataTypes: this.DataTypes,\r\n\t\t\tattributeType: this.DataTypes[0],\r\n\t\t\tpicklistError: {\r\n\t\t\t\tisValid: true,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t},\r\n\t\t\tstatefieldError: {\r\n\t\t\t\tisValid: true,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t},\r\n\t\t\ttreedropdownError: {\r\n\t\t\t\tisValid: true,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t},\r\n\t\t\ttreeDropdown: [{\r\n\t\t\t\tid: uuidv4(),\r\n\t\t\t\ttext: \"\",\r\n\t\t\t\tparentId: null,\r\n\t\t\t\titems: [],\r\n\t\t\t\troot: true,\r\n\t\t\t\texpandedLevel: 1,\r\n\t\t\t}],\r\n\t\t\tdateTimeType: \"date\",\r\n\t\t\tnumberType: \"integer\",\r\n\t\t\tcreatingAttribute: false,\r\n\t\t\tshowAttributeTypePopup: false,\r\n\t\t};\r\n\t\tthis.createBtn = React.createRef();\r\n\t\tthis.createAndNewBtn = React.createRef();\r\n\t}\r\n\r\n\tcomponentDidMount = async () => {\r\n\t\tthis.setState({\r\n\t\t\tdata: [...this.props.data],\r\n\t\t\tallAttributes: [...this.props.allAttributes],\r\n\t\t});\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst { t } = this.props;\r\n\t\tconst hasStateField = this.state.data.some(attribute =>\r\n\t\t\tattribute.attributeType === \"State Field\" ||\r\n\t\t\t(attribute.attributeType === \"Mirror\" && attribute.attribute.attributeType === \"State Field\")\r\n\t\t);\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{t(\"name_field_label\")}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t (this.attributeNameInput = rf)} value={this.state.attributeName} />\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{t(\"type_field_label\")}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{t(\"tell_me_more_text\")}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{this.state.attributeType.value === \"DateTime\" &&
    }\r\n\t\t\t\t\t\t\t\t{this.state.attributeType.value === \"Number\" &&
    }\r\n\t\t\t\t\t\t\t\t{this.state.attributeType.value === \"Picklist String\" && (\r\n\t\t\t\t\t\t\t\t\t// \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{t(\"dropdown_values_label\")}\r\n\t\t\t\t\t\t\t\t\t\t\t{this.state.picklistError.isValid === false && {this.state.picklistError.message}}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlet { picklistError } = this.state;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpicklistError.isValid = e.length < 0;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpicklistError: picklistError,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tautoFocus={true}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.state.attributeType.value === \"State Field\" && (\r\n\t\t\t\t\t\t\t\t\t// \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{t(\"state_field_label\")}\r\n\t\t\t\t\t\t\t\t\t\t\t{this.state.statefieldError.isValid === false && {this.state.statefieldError.message}}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlet { statefieldError } = this.state;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstatefieldError.isValid = e.length < 0;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstatefieldError: statefieldError,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tautoFocus={true}\r\n\t\t\t\t\t\t\t\t\t\t\t\tshowColorPicker={false}\r\n\t\t\t\t\t\t\t\t\t\t\t\tTooltipPosition={'left'}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.state.attributeType.value === \"Tree Dropdown\" && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{t(\"tree_dropdown_label\")}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.state.attributeType.value === \"Mirror\" && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{t(\"mirror_label\")}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{this.state.creatingAttribute && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{this.state.creatingAttribute &&\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t
    \r\n\t\t\t\t{\r\n\t\t\t\t\tthis.state.showAttributeTypePopup &&\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tgetDataTypes = () => {\r\n\t\tconst isStateAttributeExist = this.state.data.findIndex((attribute) =>\r\n\t\t\tattribute.attributeType === \"State Field\" ||\r\n\t\t\t(attribute.attributeType === \"Mirror\" && attribute.attribute.attributeType === \"State Field\")\r\n\t\t) > -1\r\n\t\tif (isStateAttributeExist) {\r\n\t\t\treturn this.state.DataTypes.filter((item) => item.value !== \"State Field\" && item.value !== \"Shared Lookup\");\r\n\t\t}\r\n\t\treturn this.state.DataTypes.filter((item) => item.value !== \"Shared Lookup\");\r\n\t}\r\n\r\n\tcloseAttributeDialog = () => {\r\n\t\tthis.props.closeDialog(false);\r\n\t};\r\n\r\n\ttoggleAttributeTypesPopup = () => {\r\n\t\tthis.setState({ showAttributeTypePopup: !this.state.showAttributeTypePopup });\r\n\t}\r\n\r\n\tselectAttributeTypeAndClosePopup = (value) => {\r\n\t\tthis.setAttributeType({ target: { value } });\r\n\t\tthis.toggleAttributeTypesPopup();\r\n\t}\r\n\r\n\thandleName = (e) => {\r\n\t\tconst nameIsReserved = e.target.value.toLowerCase().replace(/[^a-zA-Z0-9]/g, \"\").trim() === \"id\"\r\n\t\tconst nameIsBlank = e.target.value.trim() === \"\"\r\n\t\tconst nameInUse = this.state.data.findIndex((attribute) => (\r\n\t\t\tremoveSpecialCharacters(attribute.attributeName.toLowerCase()) === removeSpecialCharacters(e.target.value.trim().toLowerCase())\r\n\t\t)) > -1;\r\n\t\tconst nameContainsSys = /^\\[SYS\\]/i.test(e.target.value);\r\n\t\tconst nameStartWithNumber = e.target.value.trim().match(/^\\d/)\r\n\t\tconst isNameLong = e.target.value.trim().length > 30;\r\n\t\tconst validName = !nameIsBlank && !nameStartWithNumber && !nameInUse && !nameContainsSys && !nameIsReserved && !isNameLong;\r\n\t\tlet nameError = \"\";\r\n\t\tif (nameIsBlank) {\r\n\t\t\tnameError = this.props.t(\"errors.name_required\")\r\n\t\t} else if (nameStartWithNumber) {\r\n\t\t\tnameError = this.props.t(\"errors.name_starts_with_number\")\r\n\t\t} else if (nameInUse) {\r\n\t\t\tnameError = this.props.t(\"errors.name_in_use\")\r\n\t\t} else if (isNameLong) {\r\n\t\t\tnameError = this.props.t(\"errors.name_too_long\")\r\n\t\t} else if (nameContainsSys) {\r\n\t\t\tnameError = this.props.t(\"errors.name_contains_sys\")\r\n\t\t} else if (nameIsReserved) {\r\n\t\t\tnameError = this.props.t(\"errors.name_reserved\")\r\n\t\t} else {\r\n\t\t\tnameError = \"\"\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tattributeName: e.target.value,\r\n\t\t\tvalidName: validName,\r\n\t\t\tnameError,\r\n\t\t});\r\n\t};\r\n\r\n\thandleType = (e) => {\r\n\t\tlet { DataTypes } = this;\r\n\r\n\t\tif (e.filter.value.trim() !== \"\") {\r\n\t\t\tDataTypes = DataTypes.filter((x) => x.text.toLowerCase().startsWith(e.filter.value.toLowerCase()));\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tDataTypes: DataTypes,\r\n\t\t});\r\n\t};\r\n\r\n\tsetAttributeType = (e) => {\r\n\t\tif (e.target.value === null) {\r\n\t\t\tthis.setState({ attributeType: this.DataTypes[0] });\r\n\t\t} else {\r\n\t\t\tthis.setState({ attributeType: e.target.value });\r\n\t\t}\r\n\t\tif (e.target.value !== \"Picklist String\") {\r\n\t\t\tthis.setState({\r\n\t\t\t\tpicklistError: {\r\n\t\t\t\t\tisValid: true,\r\n\t\t\t\t\tmessage: \"\",\r\n\t\t\t\t},\r\n\t\t\t\tpicklist: \"\",\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (e.target.value !== \"State Field\") {\r\n\t\t\tthis.setState({\r\n\t\t\t\tstatefieldError: {\r\n\t\t\t\t\tisValid: true,\r\n\t\t\t\t\tmessage: \"\",\r\n\t\t\t\t},\r\n\t\t\t\tstatefield: [],\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (e.target.value !== \"Tree Dropdown\") {\r\n\t\t\tthis.setState({\r\n\t\t\t\ttreedropdownError: {\r\n\t\t\t\t\tisValid: true,\r\n\t\t\t\t\tmessage: \"\",\r\n\t\t\t\t},\r\n\t\t\t\ttreeDropdown: [{\r\n\t\t\t\t\tid: uuidv4(),\r\n\t\t\t\t\ttext: \"\",\r\n\t\t\t\t\tparentId: null,\r\n\t\t\t\t\titems: [],\r\n\t\t\t\t\troot: true,\r\n\t\t\t\t\texpandedLevel: 1,\r\n\t\t\t\t}]\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\thandleDateTimeType = (e) => {\r\n\t\tthis.setState({ dateTimeType: e.value });\r\n\t};\r\n\r\n\thandleNumberType = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tnumberType: e.value,\r\n\t\t});\r\n\t};\r\n\r\n\thandleDropdownChange = (e) => {\r\n\t\tlet picklistError = this.CheckPicklistisProper(e.target.value);\r\n\t\tthis.setState({\r\n\t\t\tpicklist: e.target.value,\r\n\t\t\tpicklistError: picklistError,\r\n\t\t});\r\n\t};\r\n\r\n\thandleStateFieldChange = (data) => {\r\n\t\tlet statefieldError = this.CheckStateFieldisProper(data);\r\n\t\tthis.setState({\r\n\t\t\tstatefield: data,\r\n\t\t\tstatefieldError: statefieldError,\r\n\t\t});\r\n\t};\r\n\r\n\thandleTreeDropdownChange = (data) => {\r\n\t\tconst { treedropdownError } = this.state;\r\n\t\tconst error = CheckErrorInTree(data);\r\n\t\tif (error !== \"\") {\r\n\t\t\ttreedropdownError.isValid = false;\r\n\t\t\ttreedropdownError.message = this.props.t(\"treedropdownerrors.\" + error, { ns: \"attribute/tree_dropdown\" });\r\n\t\t} else {\r\n\t\t\ttreedropdownError.isValid = true;\r\n\t\t\ttreedropdownError.message = \"\";\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\ttreeDropdown: data,\r\n\t\t\ttreedropdownError: treedropdownError,\r\n\t\t});\r\n\t};\r\n\r\n\thandleMirrorFieldChange = (e) => {\r\n\t\tthis.setState({\r\n\t\t\t[e.target.name]: e.target.value,\r\n\t\t});\r\n\t\tswitch (e.target.name) {\r\n\t\t\tcase \"entity\":\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\trelation: {},\r\n\t\t\t\t\tattribute: {},\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"relation\":\r\n\t\t\t\tif (this.state.attribute === undefined || this.state.attribute === null || !this.state.attribute._id) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tattribute: {},\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t};\r\n\r\n\tCheckPicklistisProper = (data) => {\r\n\t\tconst picklistValues = data\r\n\t\t\t.split(\"ɖ\")\r\n\t\t\t.filter((option) => option.trim() !== \"\")\r\n\t\t\t.map((option) => option.trim());\r\n\t\tconst picklistValuesMap = {};\r\n\t\tlet picklistError = {\r\n\t\t\tisValid: true,\r\n\t\t\tmessage: \"\",\r\n\t\t};\r\n\r\n\t\tif (picklistValues.length === 0) {\r\n\t\t\tpicklistError.isValid = false\r\n\t\t\treturn picklistError;\r\n\t\t}\r\n\r\n\t\tfor (const value of picklistValues) {\r\n\t\t\tpicklistValuesMap[value] = picklistValuesMap[value] ? ++picklistValuesMap[value] : 1;\r\n\t\t\tif (picklistValuesMap[value] > 1) {\r\n\t\t\t\tpicklistError.isValid = false;\r\n\t\t\t\tpicklistError.message = this.props.t(\"errors.duplicate_picklist_values\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn picklistError;\r\n\t};\r\n\r\n\tCheckStateFieldisProper = (data) => {\r\n\t\tconst statefieldValues = data\r\n\t\t\t.filter((option) => option.name.trim() !== \"\")\r\n\t\t\t.map((option) => option.name.trim());\r\n\r\n\t\tconst statefieldValuesMap = {};\r\n\t\tlet statefieldError = {\r\n\t\t\tisValid: true,\r\n\t\t\tmessage: \"\",\r\n\t\t};\r\n\r\n\t\tif (statefieldValues.length === 0) {\r\n\t\t\tstatefieldError.isValid = false\r\n\t\t\treturn statefieldError;\r\n\t\t}\r\n\t\tfor (const value of statefieldValues) {\r\n\t\t\tstatefieldValuesMap[value] = statefieldValuesMap[value] ? ++statefieldValuesMap[value] : 1;\r\n\t\t\tif (statefieldValuesMap[value] > 1) {\r\n\t\t\t\tstatefieldError.isValid = false;\r\n\t\t\t\tstatefieldError.message = this.props.t(\"errors.duplicate_picklist_values\");\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn statefieldError;\r\n\t};\r\n\r\n\tshouldCreateBeDisabled = () => {\r\n\t\tif (this.state.attributeName.trim() === \"\") {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!this.state.validName) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (this.state.attributeType.value === \"Picklist String\") {\r\n\t\t\tif (!this.state.picklistError.isValid) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.state.picklist !== undefined && this.state.picklist.length === 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.state.attributeType.value === \"State Field\") {\r\n\t\t\tif (!this.state.statefieldError.isValid) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.state.statefield !== undefined && this.state.statefield.length === 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.state.attributeType.value === \"Tree Dropdown\") {\r\n\t\t\tif (!this.state.treedropdownError.isValid) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.state.treeDropdown.length === 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.state.treeDropdown[0].text === \"\") {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.state.attributeType.value === \"Mirror\") {\r\n\t\t\tif (!this.state.entity || !this.state.entity._id) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.state.relation || !this.state.relation._id) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.state.attribute || !this.state.attribute._id) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\tcreateAttribute = async (e, keepFormVisible = false) => {\r\n\t\tthis.setState({\r\n\t\t\tcreatingAttribute: true,\r\n\t\t});\r\n\t\te.preventDefault();\r\n\t\tlet { createBtn, createAndNewBtn } = this;\r\n\t\tconst { projectId } = this.props;\r\n\r\n\t\tcreateBtn.current.disabled = true;\r\n\t\tcreateAndNewBtn.current.disabled = true;\r\n\r\n\t\tlet order = 10000000000;\r\n\t\tconst sysName = this.generateSystemName(this.state.attributeName);\r\n\r\n\t\tif (this.props.allAttributes.length > 0) {\r\n\t\t\tlet highestOrder = 10000000000;\r\n\t\t\tfor (let attribute of this.props.allAttributes) {\r\n\t\t\t\tconst order = parseInt(attribute.order);\r\n\t\t\t\tif (order > highestOrder) {\r\n\t\t\t\t\thighestOrder = order;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\torder = highestOrder + 10000000000;\r\n\t\t}\r\n\r\n\t\tlet data = this.Fields[this.state.attributeType.value];\r\n\r\n\t\tlet properties = {};\r\n\r\n\t\tthis.state.attributeName = this.state.attributeName.trim()\r\n\r\n\t\tfor (let item of data) {\r\n\t\t\tproperties[item.field] = this.state[item.state] || item.defaultValue;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tproperties.attributeType.value === \"Mirror\" &&\r\n\t\t\t(\r\n\t\t\t\tproperties.attribute.attributeType === \"Number\" ||\r\n\t\t\t\tproperties.attribute.attributeType === \"DateTime\" ||\r\n\t\t\t\tproperties.attribute.attributeType === \"Picklist String\" ||\r\n\t\t\t\tproperties.attribute.attributeType === \"State Field\"\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tlet otherProperties = this.Fields[properties.attribute.attributeType];\r\n\t\t\tfor (let item of otherProperties) {\r\n\t\t\t\tproperties[item.field] = this.state[item.state] || item.defaultValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// clear empty item from picklist - ali\r\n\t\tif (properties['picklist']) {\r\n\t\t\tlet values = properties['picklist'].split('ɖ')\r\n\t\t\tvalues = values.filter(o => o.length > 0)\r\n\t\t\tfor (let i = 0; i < values.length; i++) {\r\n\t\t\t\tvalues[i] = values[i].trim()\r\n\t\t\t}\r\n\t\t\tvalues = values.join('ɖ');\r\n\t\t\tproperties['picklist'] = values\r\n\t\t}\r\n\r\n\t\tproperties.attributeLabel = this.state.attributeName;\r\n\t\tproperties.attributeType = this.state.attributeType.value;\r\n\t\tif (\r\n\t\t\tproperties.attributeType === \"String\"\r\n\t\t) {\r\n\t\t\tproperties.dummyLabel = DummyLabelHelper.getDummyLabel(properties.attributeLabel, properties.attributeType)\r\n\t\t} else if (properties.attributeType === \"Image\") {\r\n\t\t\tproperties.allowedFileTypes = [\"JPEG\"];\r\n\t\t}\r\n\t\tproperties.description = this.state.attributeName;\r\n\t\tproperties.tooltip = this.state.attributeName;\r\n\t\tproperties.required = false;\r\n\t\tproperties.readOnly = false;\r\n\t\tproperties.order = String(order);\r\n\t\tproperties.sysName = sysName;\r\n\t\tif (properties.attributeType === \"DateTime\" && properties.dateTimeType === \"time\") {\r\n\t\t\tproperties.setDefaultDate = true\r\n\t\t\tproperties.defaultTime = \"\"\r\n\t\t}\r\n\t\tif (properties.attributeType === \"State Field\") {\r\n\t\t\tproperties['required'] = true\r\n\t\t} else if (properties.attributeType === \"Mirror\") {\r\n\t\t\t// this is stored so find the mirror attributetype \r\n\t\t\tproperties.mirroredAttributeType = properties.attribute.attributeType;\r\n\t\t\tproperties.references = {\r\n\t\t\t\tentityId: properties.entity._id,\r\n\t\t\t\tlinkedEntityId: properties.relation._id,\r\n\t\t\t\tattributeId: properties.attribute._id\r\n\t\t\t}\r\n\t\t\tdelete properties['attribute'];\r\n\t\t\tdelete properties['entity'];\r\n\t\t\tdelete properties['relation'];\r\n\t\t\tdelete properties['relationId'];\r\n\t\t}\r\n\t\tconsole.time(\"Create attribute\");\r\n\t\tif (properties.attributeType === \"Tree Dropdown\") {\r\n\t\t\tconst trimmedTreeDropdown = removeExtraSpaceFromTreeElement(properties['treeDropdown'])\r\n\t\t\tproperties['treeDropdown'] = JSON.stringify(trimmedTreeDropdown)\r\n\t\t}\r\n\t\tif (properties.cellFormatting) {\r\n\t\t\tproperties.cellFormatting.ifStatement = []\r\n\t\t\tproperties.cellFormatting.elseStatement = []\r\n\t\t\tproperties.cellFormatting = JSON.stringify(properties.cellFormatting)\r\n\t\t}\r\n\t\tif (properties.attributeType === \"State Field\") {\r\n\t\t\tlet values = this.state.statefield\r\n\t\t\tvalues = values.filter(o => o.name.trim().length > 0)\r\n\t\t\tfor (let i = 0; i < values.length; i++) {\r\n\t\t\t\tvalues[i]._id = uuidv4()\r\n\t\t\t\tvalues[i].name = values[i].name.trim()\r\n\t\t\t\tvalues[i].order = parseInt((i + 1) * 10000000000);\r\n\t\t\t}\r\n\t\t\tproperties['statefield'] = values\r\n\t\t}\r\n\t\tproperties.languages = {}\r\n\t\tconst attribute = await createAttribute(this.props.entityId, {\r\n\t\t\tsubscriptionId: this.props.subscriptionId,\r\n\t\t\tprojectId: projectId,\r\n\t\t\tproperties: properties,\r\n\t\t});\r\n\t\tif (properties.attributeType === \"Mirror\") {\r\n\t\t\tattribute['entity'] = this.state.entity\r\n\t\t\tattribute['relation'] = this.state.relation\r\n\t\t\tattribute['attribute'] = this.state.attribute\r\n\t\t}\r\n\t\tconsole.timeEnd(\"Create attribute\");\r\n\t\tif (attribute.status && attribute.status === \"Failure\") {\r\n\t\t\tthis.props.closeDialog(true)\r\n\t\t} else {\r\n\t\t\tattribute.typeText = this.DataTypes.find((type) => type.value === this.state.attributeType.value).text;\r\n\t\t\tattribute.required = attribute.required === true;\r\n\t\t\tattribute.readOnly = attribute.readOnly === true;\r\n\t\t\tattribute.multiSelect = attribute.multiSelect === true;\r\n\t\t\tif (attribute.cellFormatting) {\r\n\t\t\t\tattribute.cellFormatting = JSON.parse(attribute.cellFormatting)\r\n\t\t\t}\r\n\r\n\t\t\tcreateBtn.current.disabled = false;\r\n\t\t\tcreateAndNewBtn.current.disabled = false;\r\n\r\n\t\t\tthis.props.onCreate(attribute, keepFormVisible);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tattributeName: \"\",\r\n\t\t\t\tattributeType: this.DataTypes[0],\r\n\t\t\t\tdata: [...this.state.data, ...[attribute]],\r\n\t\t\t\tDataTypes: this.DataTypes,\r\n\t\t\t\tvalidName: true,\r\n\t\t\t\tnameError: \"\",\r\n\t\t\t\tpicklistError: {\r\n\t\t\t\t\tisValid: true,\r\n\t\t\t\t\tmessage: \"\",\r\n\t\t\t\t},\r\n\t\t\t\tdateTimeType: \"date\",\r\n\t\t\t\tnumberType: \"integer\",\r\n\t\t\t\tcreatingAttribute: false,\r\n\t\t\t\ttreeDropdown: [{\r\n\t\t\t\t\tid: uuidv4(),\r\n\t\t\t\t\ttext: \"\",\r\n\t\t\t\t\tparentId: null,\r\n\t\t\t\t\titems: [],\r\n\t\t\t\t\troot: true,\r\n\t\t\t\t\texpandedLevel: 1\r\n\t\t\t\t}],\r\n\t\t\t\ttreedropdownError: {\r\n\t\t\t\t\tisValid: true,\r\n\t\t\t\t\tmessage: \"\"\r\n\t\t\t\t}\r\n\t\t\t}, () => {\r\n\t\t\t\tconst { attributeNameInput } = this;\r\n\t\t\t\tattributeNameInput.focus();\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tcreateAttributeandResetForm = (e) => {\r\n\t\tthis.createAttribute(e, true);\r\n\t\tconst { attributeNameInput } = this;\r\n\t\tattributeNameInput.focus();\r\n\t};\r\n\r\n\tgenerateSystemName = (attributeName) => {\r\n\t\tconst initialSysName = attributeName.toLowerCase().trim().replace(/[^a-zA-Z]/g, \"\") || \"attribute\";\r\n\t\tconst isSySNameInEnglish = this.isStringInEnglish(initialSysName);\r\n\t\tif (!isSySNameInEnglish) {\r\n\t\t\treturn \"attribute\";\r\n\t\t} else {\r\n\r\n\t\t\tlet sysName = initialSysName;\r\n\t\t\tlet counter = 0;\r\n\t\t\twhile (this.props.allAttributes.find((attribute) => attribute.sysName === sysName)) {\r\n\t\t\t\tcounter++;\r\n\t\t\t\tsysName = initialSysName + counter;\r\n\t\t\t}\r\n\t\t\treturn sysName;\r\n\t\t}\r\n\t}\r\n\r\n\tisStringInEnglish = (str) => {\r\n\t\tconst isEnglish = /^[a-zA-Z0-9_]*$/.test(str);\r\n\t\treturn isEnglish;\r\n\t}\r\n}\r\n\r\nconst CreateAttributeDialogWithT = withTranslation([\r\n\t'attribute/create_dialog',\r\n\t\"attribute/attribute_type\",\r\n\t\"attribute/tree_dropdown\",\r\n\t\"attribute/state_field\",\r\n])(CreateAttributeDialog);\r\n\r\nCreateAttributeDialogWithT.defaultProps = {\r\n\tuseSuspense: false\r\n}\r\n\r\nexport default CreateAttributeDialogWithT","import React, { Component } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport DummyLabelHelper from \"./DummyLabel\"\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport AttributeTypes from \"./AttributeTypes\";\r\nimport NoRecord from \"../Display/NoRecord\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getAttributeTemplate, getAttributeTemplates } from \"../../API/AttributeTemplate/AttributeTemplate\";\r\nimport { createAttribute } from \"../../API/Attribute/Attribute\";\r\nclass SelectAttributeTemplate extends Component {\r\n\r\n DataTypes = AttributeTypes.Types;\r\n Icons = AttributeTypes.Icons;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n searchValue: \"\",\r\n AttributeTemplate: [],\r\n allAttributeTemplate: [],\r\n selectedItem: {},\r\n adding: false,\r\n creatingAttribute: false\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.getAttributeTemplate();\r\n };\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n\r\n const { t } = this.props;\r\n\r\n return (\r\n \r\n {this.state.creatingAttribute && }\r\n
    \r\n {/* TODO: Support unicode inside placeholder */}\r\n \r\n {/* \r\n Manage Property Template\r\n */}\r\n
    \r\n\r\n {this.state.allAttributeTemplate.length === 0 && (\r\n \r\n )}\r\n {this.state.allAttributeTemplate.length !== 0 && (\r\n \r\n
    \r\n ({\r\n ...item,\r\n selected: item._id === this.state.selectedItem._id,\r\n index,\r\n })\r\n )}\r\n onRowClick={this.SelectAttributeTemplate}\r\n selectedField=\"selected\"\r\n >\r\n \r\n (\r\n \r\n \r\n {props.dataItem.attributeName}\r\n \r\n \r\n )}\r\n />\r\n (\r\n \r\n \r\n {\r\n props.dataItem.typeText\r\n }\r\n \r\n )}\r\n />\r\n \r\n (\r\n \r\n {\r\n (this.state.creatingAttribute && this.state.selectedItem._id === props.dataItem._id) ? (\r\n
    \r\n \r\n \r\n
    \r\n ) : (\r\n this.state.creatingAttribute ?\r\n \r\n {t(\"buttons.add\")}\r\n \r\n :\r\n this.CreateAttribute(props.dataItem)}\r\n disabled={this.shouldAddBeDisabledForAttribute(props.dataItem)}\r\n className=\"btn p-0 border-0 t-primary fw-bold\"\r\n >\r\n {t(\"buttons.add\")}\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 {t(\"buttons.cancel\")}\r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n\r\n getAttributeTemplate = async () => {\r\n let results = await getAttributeTemplates(this.props.organization._id)\r\n for (let i = 0; i < results.length; i++) {\r\n results[i] = this.setProperties(results[i]);\r\n results[i].indexId = i + 1;\r\n }\r\n if (results.length > 0) {\r\n this.SelectAttributeTemplate(results[0]);\r\n }\r\n this.setState({\r\n AttributeTemplate: results,\r\n allAttributeTemplate: results,\r\n loading: false,\r\n });\r\n };\r\n\r\n setProperties = (dataItem) => {\r\n let properties = {};\r\n properties.attributeName = dataItem.LookupName;\r\n properties.attributeType = dataItem.lookupType;\r\n properties.attributeLabel = dataItem.LookupName;\r\n properties.tooltip = dataItem.LookupName;\r\n properties.typeText = this.DataTypes.find(\r\n (type) => type.value === properties.attributeType\r\n ).text;\r\n properties.readonly = false;\r\n properties.group = \"\";\r\n properties.defaultValue = dataItem.lookupType === \"Boolean\" ? false : \"\";\r\n delete dataItem[\"lookupType\"];\r\n delete dataItem[\"LookupName\"];\r\n delete dataItem[\"createdDate\"];\r\n delete dataItem[\"order\"];\r\n delete dataItem[\"label\"];\r\n delete dataItem[\"updatedDate\"];\r\n return { ...dataItem, ...properties };\r\n };\r\n\r\n shouldAddBeDisabledForAttribute = (attribute) => {\r\n const isStateAttribute = attribute.attributeType === \"State Field\";\r\n const hasStateAttribute = this.props.allAttributes.findIndex(attribute => (\r\n attribute.attributeType === \"State Field\"\r\n )) > -1;\r\n return isStateAttribute && hasStateAttribute;\r\n }\r\n\r\n SelectAttributeTemplate = (dataItem) => {\r\n var data = {};\r\n\r\n if (dataItem[\"dataItem\"]) {\r\n data = dataItem.dataItem;\r\n } else {\r\n data = dataItem;\r\n }\r\n this.setState({\r\n selectedItem: data,\r\n });\r\n };\r\n\r\n gotoURl = (dataItem) => {\r\n this.SelectAttributeTemplate(dataItem);\r\n\r\n let url =\r\n process.env.REACT_APP_DESIGNER_URL +\r\n \"/\" +\r\n this.props.organization.orgName +\r\n \"/_Organisation/AttributeTemplate/\" +\r\n dataItem.sysName;\r\n\r\n window.open(url, \"_blank\");\r\n };\r\n\r\n closeAttributeDialog = () => {\r\n this.props.closeDialog(false);\r\n };\r\n\r\n getProducts = (sort) => {\r\n return orderBy(this.state.AttributeTemplate, sort);\r\n };\r\n\r\n sortAttributeTemplate = (e) => {\r\n let AttributeTemplate = this.state.allAttributeTemplate;\r\n\r\n if (e.target.value !== \"\") {\r\n AttributeTemplate = AttributeTemplate.filter((attr) => attr.attributeName.toLowerCase().includes(e.target.value.trim().toLowerCase()));\r\n }\r\n\r\n this.setState({\r\n AttributeTemplate: AttributeTemplate,\r\n searchValue: e.target.value,\r\n });\r\n };\r\n\r\n CreateAttribute = async (data) => {\r\n this.setState({\r\n adding: true,\r\n selectedItem: data,\r\n creatingAttribute: true\r\n })\r\n\r\n let dataItem = { ...data };\r\n\r\n let latestAttributeTemplate = await getAttributeTemplate(dataItem._id);\r\n debugger;\r\n dataItem = this.setProperties(latestAttributeTemplate);\r\n\r\n let order = 10000000000\r\n\r\n if (this.props.allAttributes.length > 0) {\r\n order = parseInt(this.props.allAttributes[this.props.allAttributes.length - 1].order) + 10000000000;\r\n }\r\n let counter = 0;\r\n const initialName = dataItem.attributeName;\r\n let finalName = initialName;\r\n for (\r\n let attributeIndex = 0;\r\n attributeIndex < this.props.allAttributes.length;\r\n attributeIndex++\r\n ) {\r\n if (\r\n this.props.allAttributes[attributeIndex].attributeName ===\r\n finalName\r\n ) {\r\n ++counter;\r\n finalName = initialName + \"(\" + counter + \")\";\r\n }\r\n }\r\n\r\n dataItem.attributeName = finalName;\r\n dataItem.attributeLabel = finalName;\r\n dataItem.required = this.props.data.length === 0;\r\n dataItem.readOnly = false;\r\n dataItem.tooltip = finalName;\r\n dataItem.order = order || 10000000000;\r\n dataItem.sysName = \"attribute\";\r\n delete dataItem[\"_id\"];\r\n delete dataItem[\"typeText\"];\r\n delete dataItem[\"indexId\"];\r\n delete dataItem[\"cellFormatting\"];\r\n\r\n if (\r\n dataItem.attributeType === \"String\"\r\n ) {\r\n dataItem.dummyLabel = DummyLabelHelper.getDummyLabel(dataItem.attributeLabel, dataItem.attributeType)\r\n } else if (\r\n dataItem.attributeType === \"URL\" ||\r\n dataItem.attributeType === \"Email\" ||\r\n dataItem.attributeType === \"Multiline Text\" ||\r\n dataItem.attributeType === \"Html\"\r\n ) {\r\n dataItem.dummyLabel = DummyLabelHelper.TypeMap.find(type => type.type === dataItem.attributeType).value\r\n } else if (dataItem.attributeType === \"State Field\") {\r\n dataItem.required = true;\r\n dataItem.setStatesRules = false;\r\n } else if (dataItem.attributeType === \"Tree Dropdown\") {\r\n dataItem.treeDropdown = JSON.stringify(dataItem.treeDropdown);\r\n }\r\n\r\n const attributeWithCellFormatting = [\"DateTime\", \"Tags\", \"Picklist String\", \"State Field\", \"Number\"];\r\n if (attributeWithCellFormatting.includes(dataItem.attributeType)) {\r\n dataItem.cellFormatting = JSON.stringify({ ifStatement: [], elseStatement: [] });\r\n }\r\n\r\n const attribute = await createAttribute(this.props.entityId, {\r\n subscriptionId: this.props.organization.subscriptionId,\r\n projectId: this.props.project._id,\r\n properties: dataItem,\r\n });\r\n\r\n if (attribute.status && attribute.status === \"Failure\") {\r\n this.props.closeDialog(true)\r\n } else {\r\n attribute.typeText = this.DataTypes.find((type) => type.value === dataItem.attributeType).text;\r\n attribute.required = attribute.required === true;\r\n attribute.readOnly = attribute.readOnly === true;\r\n attribute.multiSelect = attribute.multiSelect === true;\r\n attribute.indexId = this.props.data.length + 1;\r\n this.setState({\r\n adding: false,\r\n creatingAttribute: false\r\n });\r\n this.props.onSelect(attribute, false);\r\n }\r\n };\r\n}\r\n\r\nexport default withTranslation([\"attribute/select_attribute_template_dialog\"])(\r\n SelectAttributeTemplate\r\n);\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport { getAliceRecommendedAttributes, importAttributeInEntity } from '../../../API/AliceGPT/AliceGPT';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { convertTypeToDesignerType } from '../../Helpers/Recommendation/AliceGPT';\r\nimport { getDatalakeImageUrl } from '../../Helpers/DateLakeStorage';\r\nimport EditPicklistDialog from '../../Dashboard/Project/AliceGPT/EditPicklistDialog';\r\nimport FailedToLoadError from '../../Shared/Recommendation/Error/FailedToLoadError';\r\nimport AttributeTypeDropdown, { recommendationAttributeType } from '../../Shared/Recommendation/AttributeTypeDropdown';\r\nimport { useTranslation } from 'react-i18next';\r\nimport InnerLoader from '../../Shared/Loader/InnerLoader';\r\nimport { getEntities } from '../../../API/Entity/Entity';\r\nimport { OPENAI_MODEL } from '../../../Constants/OpenAI';\r\n\r\nfunction AliceAttributeRecommendationDialog({\r\n organization, project, entityName, entityId, existingAttributeNames, hasStateAttribute, domain, description,\r\n toggleDialog, onAttributesImported\r\n}) {\r\n\r\n const { t } = useTranslation([\r\n \"attribute/recommendation_dialog\",\r\n \"common/attribute_type_dropdown\"\r\n ], { useSuspense: false });\r\n\r\n const numStateAttributesAllowedToSelect = hasStateAttribute ? 0 : 1;\r\n const [loading, setLoading] = useState(true);\r\n const [recommendedAttributes, setRecommendedAttributes] = useState([]);\r\n const [picklistAttributeToEdit, setPicklistAttributeToEdit] = useState(null);\r\n const [creatingAttribute, setCreatingAttribute] = useState(false);\r\n const [entities, setEntities] = useState([]);\r\n const [editAttributeTypeIndex, setEditAttributeTypeIndex] = useState(-1);\r\n\r\n const [error, setError] = useState(\"\");\r\n\r\n useEffect(() => {\r\n getAttributes();\r\n }, [])\r\n\r\n async function getAttributes() {\r\n try {\r\n const entities = await getEntities(project._id);\r\n const attributes = await getAliceRecommendedAttributes(\r\n entityName, OPENAI_MODEL, existingAttributeNames, domain, description,\r\n project.language\r\n )\r\n const filteredAttributes = attributes.filter(attribute => !existingAttributeNames.includes(attribute[0]));\r\n const attributesForDrawer = filteredAttributes.map(attributesToStateArrayElement);\r\n const allEntityNames = entities.map(entity => entity.name);\r\n const attributesWithoutEntityNames = removeAttributeWithOtherEntityName(attributesForDrawer, allEntityNames);\r\n setRecommendedAttributes(attributesWithoutEntityNames);\r\n } catch (error) {\r\n setError(error.message);\r\n }\r\n setLoading(false);\r\n }\r\n\r\n function attributesToStateArrayElement(attribute) {\r\n return {\r\n name: attribute[0],\r\n type: convertTypeToDesignerType(attribute[1]),\r\n picklist: attribute[2],\r\n unique: attribute[3],\r\n checked: false,\r\n selected: false\r\n }\r\n }\r\n\r\n function removeAttributeWithOtherEntityName(attributes, entityNames) {\r\n const newAttributes = attributes.filter((attribute) => {\r\n return !entityNames.some(name => (\r\n name !== entityName &&\r\n attribute.name.toLowerCase().includes(name.toLowerCase())\r\n ))\r\n });\r\n return newAttributes;\r\n }\r\n\r\n function handleToggle() {\r\n toggleDialog();\r\n }\r\n\r\n function toggleSelectAttribute(attributeIndex) {\r\n const newAttributes = [...recommendedAttributes];\r\n newAttributes[attributeIndex].checked = !newAttributes[attributeIndex].checked;\r\n setRecommendedAttributes(newAttributes);\r\n }\r\n\r\n function handleEditPicklistClick(attribute) {\r\n setPicklistAttributeToEdit(attribute);\r\n }\r\n\r\n async function handlePicklistUpdate(picklist) {\r\n setRecommendedAttributes(recommendedAttributes.map(attribute => {\r\n if (attribute.name === picklistAttributeToEdit.name) {\r\n return {\r\n ...attribute,\r\n picklist\r\n }\r\n }\r\n return attribute;\r\n }));\r\n setPicklistAttributeToEdit(null);\r\n }\r\n\r\n function toggleSelectAllAttributes() {\r\n const allAttributesSelected = recommendedAttributes.every(attribute => attribute.checked);\r\n setRecommendedAttributes(\r\n prevValue => prevValue.map(attribute => ({\r\n ...attribute,\r\n checked: !allAttributesSelected\r\n }))\r\n )\r\n }\r\n\r\n async function handleSubmit() {\r\n try {\r\n setCreatingAttribute(true);\r\n const attributes = recommendedAttributes.filter(attribute => attribute.checked).map(attribute => {\r\n let picklist = attribute.picklist;\r\n if (attribute.type === \"State Field\" && picklist.length === 0) {\r\n picklist = [\"Not Started\", \"In Progress\", \"Completed\"];\r\n }\r\n return {\r\n name: attribute.name?.trim(),\r\n type: attribute.type,\r\n picklist: picklist,\r\n required: attribute.type === \"State Field\" ? true : attribute.required,\r\n unique: attribute.unique\r\n }\r\n });\r\n const response = await importAttributeInEntity(organization.subscriptionId, project._id, entityId, attributes);\r\n onAttributesImported(response);\r\n } catch (e) {\r\n console.log(e);\r\n } finally {\r\n handleToggle();\r\n setCreatingAttribute(false);\r\n }\r\n }\r\n\r\n function handleAttributeTypeClick(event, index) {\r\n setEditAttributeTypeIndex(index);\r\n }\r\n\r\n function handleAttributeTypeChange(event, index) {\r\n const attribute = recommendedAttributes[index];\r\n setRecommendedAttributes(\r\n prevValue => prevValue.map((attribute, i) => {\r\n if (i === index) {\r\n return {\r\n ...attribute,\r\n type: event.target.value.value,\r\n picklist: attribute.picklist ? attribute.picklist : [\"Value 1\"]\r\n }\r\n }\r\n return attribute;\r\n })\r\n )\r\n clearEditAttributeIndex()\r\n }\r\n\r\n function clearEditAttributeIndex() {\r\n setEditAttributeTypeIndex(-1);\r\n }\r\n\r\n function getAttributeType(attributeType) {\r\n const type = recommendationAttributeType.find((item) => item.value === attributeType);\r\n return type ? t(type.value, { ns: \"common/attribute_type_dropdown\" }) : \"\";\r\n }\r\n\r\n function disableSave() {\r\n return (\r\n recommendedAttributes.filter(attribute => attribute.checked).length === 0 ||\r\n recommendedAttributes.filter(\r\n attribute => attribute.checked && attribute.type === \"State Field\"\r\n ).length > numStateAttributesAllowedToSelect ||\r\n recommendedAttributes.some(attribute =>\r\n (attribute.type === \"Picklist String\" || attribute.type === \"State Field\") &&\r\n (!attribute.picklist || attribute.picklist.length === 0) &&\r\n attribute.checked\r\n ) ||\r\n creatingAttribute\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n picklistAttributeToEdit &&\r\n handleEditPicklistClick(null)}\r\n onClose={() => handleEditPicklistClick(null)}\r\n onSubmit={handlePicklistUpdate} />\r\n }\r\n \r\n {\r\n loading &&\r\n
    \r\n \"\"\r\n

    {t(\"loading_message\")}

    \r\n
    \r\n }\r\n {\r\n !loading &&\r\n error.length > 0 &&\r\n \r\n }\r\n {\r\n !loading &&\r\n error.length === 0 &&\r\n ({\r\n ...attribute,\r\n _id: index + 1\r\n }))\r\n }\r\n rowHeight={46}\r\n >\r\n \r\n (\r\n attribute.checked)}\r\n value={recommendedAttributes.every(attribute => attribute.checked)}\r\n onChange={toggleSelectAllAttributes}\r\n className='mt-0'\r\n style={{ marginBottom: '7px', marginLeft: '6px', marginTop: \"0px\" }}\r\n />\r\n )}\r\n cell={({ dataIndex, dataItem }) => (\r\n \r\n toggleSelectAttribute(dataIndex)}\r\n />\r\n \r\n )}\r\n />\r\n \r\n (\r\n \r\n {\r\n editAttributeTypeIndex === index ?\r\n
    \r\n
    \r\n handleAttributeTypeChange(event, index)} />\r\n
    \r\n    \r\n \r\n
    \r\n :\r\n <>\r\n \r\n {\r\n (dataItem.type === 'Picklist String' || dataItem.type === \"State Field\")\r\n &&\r\n handleEditPicklistClick(dataItem)}\r\n >\r\n \r\n \r\n }\r\n {\r\n (dataItem.type === 'Picklist String' || dataItem.type === \"State Field\")\r\n &&\r\n {dataItem.picklist?.slice(0, 3).join(', ')}\r\n }\r\n {\r\n (dataItem.type === 'Picklist String' || dataItem.type === \"State Field\") &&\r\n (!dataItem.picklist || dataItem.picklist.length === 0) &&\r\n \r\n {\r\n dataItem.type === 'Picklist String' ?\r\n t(\"errors.no_picklist_error\") :\r\n t(\"errors.no_state_error\")\r\n }\r\n \r\n }\r\n \r\n }\r\n \r\n )} />\r\n \r\n }\r\n {\r\n !loading &&\r\n \r\n
    \r\n {\r\n recommendedAttributes.filter(attribute => attribute.checked && attribute.type === \"State Field\").length > numStateAttributesAllowedToSelect &&\r\n \r\n {t(\"errors.one_state_field_allowed\")}\r\n \r\n }\r\n {\r\n creatingAttribute &&\r\n \r\n }\r\n \r\n \r\n {t(\"buttons.add_label\")}\r\n \r\n
    \r\n
    \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default AliceAttributeRecommendationDialog;","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function getSharedLookups(projectId) {\r\n const request = await callApiWithAuthorization(`/api/v0/project/${projectId}/getSharedLookups`);\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function createSharedLookup(projectId, properties) {\r\n const request = await callApiWithAuthorization(`/api/v0/project/${projectId}/createSharedLookup`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(properties),\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateSharedLookup(sharedLookupId, projectId, properties) {\r\n const request = await callApiWithAuthorization(`/api/v0/project/${projectId}/updateSharedLookup/${sharedLookupId}`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(properties)\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\n","import React, { useState } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { updateSharedLookup } from \"../../API/SharedLookup/SharedLookup\";\r\nimport GenericTranslationDialog from \"../Entities/GenericTranslationDialog\";\r\n\r\nconst EditSharedPropertyDialog = ({ handleClose, sharedPropertyId, sharedProperties, updatedSharedProperties, project }) => {\r\n\r\n const { t, ready: tReady } = useTranslation([\r\n \"attribute/shared_property\",\r\n ]);\r\n\r\n const sharedProperty = sharedProperties.find((item) => item._id === sharedPropertyId);\r\n\r\n const [formField, setFormFields] = useState({ ...sharedProperty });\r\n const [showLabelTranslationDialog, setShowLabelTranslationDialog] = useState(false);\r\n\r\n const [validName, setValidName] = useState({\r\n isValid: true,\r\n errorMessage: \"\"\r\n });\r\n\r\n const [updatingSharedProperty, setUpdatingSharedProperty] = useState(false);\r\n\r\n const shouldDisableUpdateButton = () => {\r\n const isLanguagesUpdated = isLanguagesChanged(formField.languages, sharedProperty.languages);\r\n if (isLanguagesUpdated) {\r\n return false;\r\n }\r\n return !validName.isValid || formField.name.trim() === \"\" || isNameIsSameAsCurrent(formField.name) || isLanguagesUpdated;\r\n }\r\n\r\n const isNameIsSameAsCurrent = (name) => {\r\n return name === sharedProperty.name;\r\n }\r\n\r\n const handleNameChange = (e) => {\r\n const name = e.target.value.trim();\r\n const nameIsReserved = name.toLowerCase() === \"id\";\r\n const nameIsBlank = name === \"\";\r\n const nameInUse = sharedProperties.some(item => item.name.trim().toLowerCase() === name.toLowerCase());\r\n const nameContainsSys = /^\\[SYS\\]/i.test(name);\r\n const nameStartWithNumber = /^\\d/.test(name);\r\n const isNameLong = name.length > 30;\r\n const nameIsSameAsCurrent = isNameIsSameAsCurrent(name);\r\n\r\n if (nameIsSameAsCurrent) {\r\n setValidName({\r\n isValid: true,\r\n errorMessage: \"\"\r\n });\r\n setFormFields({ ...formField, name: e.target.value });\r\n return;\r\n }\r\n\r\n const validName = {\r\n isValid: !(nameIsBlank || nameStartWithNumber || nameInUse || isNameLong || nameContainsSys || nameIsReserved),\r\n errorMessage: \"\"\r\n }\r\n\r\n if (!validName.isValid) {\r\n if (nameIsBlank) {\r\n validName.errorMessage = t(\"edit_dialog.errors.name_required\");\r\n } else if (nameStartWithNumber) {\r\n validName.errorMessage = t(\"edit_dialog.errors.name_starts_with_number\");\r\n } else if (nameInUse) {\r\n validName.errorMessage = t(\"edit_dialog.errors.name_in_use\");\r\n } else if (isNameLong) {\r\n validName.errorMessage = t(\"edit_dialog.errors.name_too_long\");\r\n } else if (nameContainsSys) {\r\n validName.errorMessage = t(\"edit_dialog.errors.name_contains_sys\");\r\n } else if (nameIsReserved) {\r\n validName.errorMessage = t(\"edit_dialog.errors.name_is_reserved\");\r\n } else {\r\n validName.errorMessage = \"\";\r\n }\r\n }\r\n setValidName(validName);\r\n setFormFields({ ...formField, name: e.target.value });\r\n }\r\n\r\n const setLabelTranslation = (translations) => {\r\n setFormFields({\r\n ...formField,\r\n languages: translations\r\n });\r\n setShowLabelTranslationDialog(false);\r\n }\r\n\r\n function isLanguagesChanged(languages, defaultLanguages) {\r\n const keys = Object.keys(languages);\r\n for (const key of keys) {\r\n if (\r\n languages[key].label !== defaultLanguages[key].label\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n const updateSharedProperty = async () => {\r\n try {\r\n setUpdatingSharedProperty(true);\r\n const isNameChanged = !isNameIsSameAsCurrent(formField.name);\r\n const response = await updateSharedLookup(formField._id, formField.projectId, { name: formField.name, isNameChanged: isNameChanged, languages: formField.languages });\r\n const modifiedData = sharedProperties.map((item) => {\r\n if (item._id === formField._id) {\r\n return {\r\n ...item,\r\n ...response.data\r\n };\r\n }\r\n return item;\r\n });\r\n updatedSharedProperties(modifiedData, formField._id);\r\n handleClose()\r\n } catch (error) {\r\n console.error(\"Error occurred:\", error);\r\n } finally {\r\n setUpdatingSharedProperty(false);\r\n }\r\n }\r\n\r\n return (\r\n handleClose()}\r\n width=\"30%\"\r\n height=\"50%\"\r\n >\r\n {updatingSharedProperty && }\r\n {showLabelTranslationDialog && (\r\n {\r\n setShowLabelTranslationDialog(false);\r\n }}\r\n onSave={setLabelTranslation}\r\n languages={formField.languages}\r\n project={project}\r\n fields={[\"label\"]}\r\n type={t(\"label\")}\r\n />\r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n {t(\"edit_dialog.name_label\")}\r\n
    \r\n {!validName.isValid &&\r\n \r\n }\r\n \r\n
    \r\n
    {\r\n setShowLabelTranslationDialog(true);\r\n }}>\r\n \r\n {t(\"label_translation\")}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {updatingSharedProperty && (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n handleClose()}\r\n className=\"btn btn-secondary\"\r\n >\r\n {t(\"edit_dialog.buttons.cancel_button_label\")}\r\n \r\n \r\n {t(\"edit_dialog.buttons.update_button_label\")}\r\n \r\n
    \r\n
    \r\n \r\n );\r\n}\r\nexport default EditSharedPropertyDialog;","import React, { useEffect, useState } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport RemoveDialog from \"../Shared/Remove/RemoveDialog\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport AttributeTypes from \"./AttributeTypes\";\r\nimport EditSharedPropertyDialog from \"./EditSharedPropertyDialog\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getSharedLookups } from \"../../API/SharedLookup/SharedLookup\";\r\nimport { createAttribute } from \"../../API/Attribute/Attribute\";\r\n\r\nconst SelectSharedProperty = ({\r\n handleClose,\r\n openCreateSharedPropertyDialog,\r\n onCreateSharedProperty,\r\n updatedSharedProperties,\r\n removeSharedPropertyAttribute,\r\n project,\r\n entityId,\r\n subscriptionId,\r\n attributes\r\n}) => {\r\n\r\n const Fields = AttributeTypes.Fields;\r\n const DataTypes = AttributeTypes.Types;\r\n const sharedPropertyTypes = AttributeTypes.Types.filter((item) => item.value === \"Picklist String\" || item.value === \"Tree Dropdown\");\r\n\r\n const [data, setData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [creatingSharedProperty, setCreatingSharedProperty] = useState(false);\r\n const [showDeleteSharedPropertyDialog, setShowDeleteSharedPropertyDialog] = useState(false);\r\n const [deletingSharedProperty, setDeletingSharedProperty] = useState(false);\r\n const [deleteId, setDeleteId] = useState(null);\r\n const [showEditSharedPropertyDialog, setShowEditSharedPropertyDialog] = useState(false);\r\n const [editId, setEditId] = useState(null);\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n\r\n const { t, ready: tReady } = useTranslation([\r\n \"attribute/shared_property\",\r\n ]);\r\n\r\n // Fetch shared properties on component mount\r\n useEffect(() => {\r\n getSharedProperties();\r\n }, []);\r\n\r\n // Fetch shared properties\r\n const getSharedProperties = async () => {\r\n try {\r\n let response = await getSharedLookups(project._id);\r\n const modifiedData = response.map((item, index) => ({\r\n ...item,\r\n indexId: index + 1\r\n }));\r\n modifiedData.reverse();\r\n setData(modifiedData);\r\n updatedSharedProperties(modifiedData);\r\n } catch (error) {\r\n console.error('Error fetching shared properties:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n // Open delete shared property dialog and set delete id\r\n const openDeleteSharedPropertyDialog = (id) => {\r\n setShowDeleteSharedPropertyDialog(true);\r\n setDeleteId(id);\r\n };\r\n\r\n // Close delete shared property dialog and reset delete id\r\n const closeDeleteSharedPropertyDialog = () => {\r\n setShowDeleteSharedPropertyDialog(false);\r\n setDeleteId(null);\r\n };\r\n\r\n // open edit shared property dialog and set edit id\r\n const openEditSharedPropertyDialog = (id) => {\r\n setShowEditSharedPropertyDialog(true);\r\n setEditId(id);\r\n };\r\n\r\n // Close edit shared property dialog and reset edit id\r\n const closeEditSharedPropertyDialog = () => {\r\n setShowEditSharedPropertyDialog(false);\r\n setEditId(null);\r\n };\r\n\r\n // Add selected shared property to the list\r\n const addSelectedSharedProperty = async (dataItem) => {\r\n try {\r\n dataItem.name = dataItem.name.trim();\r\n setCreatingSharedProperty(true);\r\n\r\n let order = 10000000000;\r\n\r\n if (attributes.length > 0) {\r\n let highestOrder = 10000000000;\r\n for (let attribute of attributes) {\r\n const orderVal = parseInt(attribute.order);\r\n if (orderVal > highestOrder) {\r\n highestOrder = orderVal;\r\n }\r\n }\r\n order = highestOrder + 10000000000;\r\n }\r\n\r\n let fieldData = Fields[dataItem.type];\r\n\r\n let properties = {};\r\n\r\n for (let item of fieldData) {\r\n properties[item.field] = item.defaultValue;\r\n }\r\n\r\n let counter = 0;\r\n const initialName = dataItem.name;\r\n let finalName = initialName;\r\n for (let attributeIndex = 0; attributeIndex < attributes.length; attributeIndex++) {\r\n if (attributes[attributeIndex].attributeName === finalName) {\r\n ++counter;\r\n finalName = initialName + \"(\" + counter + \")\";\r\n }\r\n }\r\n\r\n properties.attributeName = finalName;\r\n properties.attributeLabel = finalName;\r\n properties.attributeType = dataItem.type;\r\n properties.sharedLookupType = dataItem.sharedLookupType;\r\n properties.sharedLookupId = dataItem._id;\r\n properties.description = finalName;\r\n properties.tooltip = finalName;\r\n properties.required = false;\r\n properties.readOnly = false;\r\n properties.order = String(order);\r\n properties.sysName = dataItem.sysName;\r\n\r\n console.time(\"Create attribute\");\r\n const attribute = await createAttribute(entityId, {\r\n subscriptionId: subscriptionId,\r\n projectId: project._id,\r\n properties\r\n })\r\n console.timeEnd(\"Create attribute\");\r\n if (attribute.status && attribute.status === \"Failure\") {\r\n handleClose(true);\r\n setCreatingSharedProperty(false);\r\n return;\r\n }\r\n\r\n attribute.typeText = DataTypes.find((type) => type.value === dataItem.type).text;\r\n attribute.required = attribute.required === true;\r\n attribute.readOnly = attribute.readOnly === true;\r\n attribute.multiSelect = attribute.multiSelect === true;\r\n attribute.indexId = attributes.length + 1;\r\n attribute.sharedLookupId = dataItem._id;\r\n attribute.sharedLookupType = dataItem.sharedLookupType;\r\n await onCreateSharedProperty(attribute);\r\n } catch (error) {\r\n console.error(\"Error occurred:\", error);\r\n handleClose(false);\r\n } finally {\r\n setCreatingSharedProperty(false);\r\n }\r\n };\r\n\r\n // Filter data based on search value\r\n const filterData = () => {\r\n\r\n let filteredData = data.filter((item) => item.name.toLowerCase().includes(searchValue.toLowerCase()));\r\n filteredData = filteredData.map((item, index) => ({\r\n ...item,\r\n indexId: index + 1\r\n }));\r\n return filteredData;\r\n };\r\n\r\n // Delete shared property\r\n const deleteSharedProperty = async () => {\r\n try {\r\n if (deleteId) {\r\n setDeletingSharedProperty(true);\r\n await callApiWithAuthorization(`/api/v0/project/deleteSharedLookup/${deleteId}`, {\r\n method: \"DELETE\",\r\n });\r\n const modifiedData = data.filter(item => item._id !== deleteId);\r\n setData(modifiedData);\r\n updatedSharedProperties(modifiedData);\r\n removeSharedPropertyAttribute(deleteId);\r\n }\r\n } catch (error) {\r\n console.error('Error deleting shared property:', error);\r\n } finally {\r\n setDeletingSharedProperty(false);\r\n closeDeleteSharedPropertyDialog();\r\n }\r\n };\r\n\r\n const shouldAddSharedPropertyDisabled = (dataItem) => {\r\n const sharedPropertyAttributes = attributes.filter((attribute) => attribute.sharedLookupId);\r\n const disabledAddSharedProperty = sharedPropertyAttributes.some((attribute) => attribute.sharedLookupId === dataItem._id);\r\n return disabledAddSharedProperty || creatingSharedProperty || deletingSharedProperty;\r\n };\r\n\r\n // Show loader if data is loading\r\n if (loading) {\r\n return \r\n }\r\n\r\n // Return shared property dialog\r\n return (\r\n handleClose(false)}\r\n width=\"70%\"\r\n height=\"70%\"\r\n className=\"dialog\"\r\n >\r\n {creatingSharedProperty && }\r\n {deletingSharedProperty && }\r\n {showDeleteSharedPropertyDialog &&\r\n sp._id === deleteId).name })}\r\n onDelete={deleteSharedProperty}\r\n onCancel={closeDeleteSharedPropertyDialog}\r\n deleteButtonText={t(\"delete_dialog.buttons.delete_button_label\")}\r\n cancelButtonText={t(\"delete_dialog.buttons.cancel_button_label\")}\r\n />\r\n }\r\n {showEditSharedPropertyDialog &&\r\n {\r\n setData(data);\r\n updatedSharedProperties(data, id);\r\n }}\r\n />\r\n }\r\n \r\n
    \r\n \r\n \r\n {t(\"create_shared_property_button_label\")}\r\n \r\n setSearchValue(e.target.value)}\r\n value={searchValue}\r\n type=\"text\"\r\n placeholder={t(\"search_shared_property_placeholder\")}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n \r\n {/* (\r\n \r\n {DataTypes.find((item) => item.value === props.dataItem.type)?.text}\r\n \r\n )}\r\n /> */}\r\n (\r\n \r\n {sharedPropertyTypes.find((item) => item.value === props.dataItem.sharedLookupType)?.text}\r\n \r\n )}\r\n />\r\n (\r\n \r\n addSelectedSharedProperty(props.dataItem)}\r\n disabled={shouldAddSharedPropertyDisabled(props.dataItem)}\r\n className=\"btn btn-link pe-1 text-decoration-none pointer\"\r\n >\r\n {t(\"grid.add_shared_property_button_label\")}\r\n \r\n openEditSharedPropertyDialog(props.dataItem._id)}\r\n className=\"btn btn-link pe-1 text-decoration-none pointer\"\r\n >\r\n \r\n \r\n openDeleteSharedPropertyDialog(props.dataItem._id)}\r\n className=\"btn btn-link text-decoration-none pointer\"\r\n >\r\n \r\n \r\n \r\n )}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n handleClose(false)}\r\n className=\"btn btn-secondary\"\r\n >\r\n {t(\"cancel_button_label\")}\r\n \r\n
    \r\n
    \r\n \r\n );\r\n}\r\nexport default SelectSharedProperty;","import React, { useState, useRef } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport AttributeTypes from \"./AttributeTypes\";\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { createSharedLookup } from \"../../API/SharedLookup/SharedLookup\";\r\n\r\nconst CreateSharedPropertyDialog = ({ handleClose, sharedProperties, updatedSharedProperties, projectId }) => {\r\n\r\n const sharedPropertyNameInputRef = useRef(null);\r\n\r\n const { t, ready: tReady } = useTranslation([\r\n \"attribute/shared_property\",\r\n ]);\r\n\r\n const sharedPropertyTypes = AttributeTypes.Types.filter((item) => item.value === \"Picklist String\" || item.value === \"Tree Dropdown\");\r\n\r\n const [formFields, setFormFields] = useState({\r\n name: \"\",\r\n type: \"Shared Lookup\",\r\n sharedLookupType: sharedPropertyTypes[0],\r\n });\r\n\r\n const [validName, setValidName] = useState({\r\n isValid: true,\r\n errorMessage: \"\"\r\n });\r\n\r\n const [creatingSharedProperty, setCreatingSharedProperty] = useState(false);\r\n\r\n const handleNameChange = (e) => {\r\n const name = e.target.value.trim();\r\n const nameIsReserved = name.toLowerCase() === \"id\";\r\n const nameIsBlank = name === \"\";\r\n const nameInUse = sharedProperties.some(item => item.name.trim().toLowerCase() === name.toLowerCase());\r\n const nameContainsSys = /^\\[SYS\\]/i.test(name);\r\n const nameStartWithNumber = /^\\d/.test(name);\r\n const isNameLong = name.length > 30;\r\n\r\n const validName = {\r\n isValid: !(nameIsBlank || nameStartWithNumber || nameInUse || isNameLong || nameContainsSys || nameIsReserved),\r\n errorMessage: \"\"\r\n }\r\n\r\n if (!validName.isValid) {\r\n if (nameIsBlank) {\r\n validName.errorMessage = t(\"create_dialog.errors.name_required\")\r\n } else if (nameStartWithNumber) {\r\n validName.errorMessage = t(\"create_dialog.errors.name_starts_with_number\");\r\n } else if (nameInUse) {\r\n validName.errorMessage = t(\"create_dialog.errors.name_in_use\");\r\n } else if (isNameLong) {\r\n validName.errorMessage = t(\"create_dialog.errors.name_too_long\");\r\n } else if (nameContainsSys) {\r\n validName.errorMessage = t(\"create_dialog.errors.name_contains_sys\");\r\n } else if (nameIsReserved) {\r\n validName.errorMessage = t(\"create_dialog.errors.name_is_reserved\");\r\n } else {\r\n validName.errorMessage = \"\";\r\n }\r\n }\r\n setValidName(validName);\r\n setFormFields({ ...formFields, name: e.target.value });\r\n }\r\n\r\n const handleSave = async (createNew) => {\r\n try {\r\n setCreatingSharedProperty(true);\r\n const sharedPropertyResponse = await createSharedLookup(projectId, {\r\n name: formFields.name,\r\n type: formFields.type,\r\n sysName: \"sharedlookup\",\r\n sharedLookupType: formFields.sharedLookupType.value,\r\n });\r\n updatedSharedProperties([...sharedProperties, sharedPropertyResponse.data]);\r\n if (createNew) {\r\n setFormFields({\r\n name: \"\",\r\n type: \"Shared Lookup\",\r\n sharedLookupType: sharedPropertyTypes[0],\r\n });\r\n sharedPropertyNameInputRef.current.focus();\r\n } else {\r\n handleClose(true);\r\n }\r\n } catch (error) {\r\n console.error(\"Error occurred:\", error);\r\n } finally {\r\n setCreatingSharedProperty(false); // Resetting loading state\r\n }\r\n }\r\n\r\n return (\r\n handleClose(false)}\r\n width=\"30%\"\r\n height=\"50%\"\r\n >\r\n {creatingSharedProperty && }\r\n \r\n
    \r\n
    \r\n {t(\"create_dialog.name_label\")}\r\n
    \r\n {!validName.isValid &&\r\n \r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"create_dialog.shared_property_type_label\")}\r\n
    \r\n setFormFields({ ...formFields, sharedLookupType: e.target.value })}\r\n textField=\"text\"\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n {creatingSharedProperty && (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n handleClose(false)}\r\n className=\"btn btn-secondary\"\r\n >\r\n {t(\"create_dialog.buttons.cancel_button_label\")}\r\n \r\n handleSave(true)}\r\n className=\"btn btn-primary\"\r\n >\r\n {t(\"create_dialog.buttons.create_and_new_button_label\")}\r\n \r\n handleSave(false)}\r\n className=\"btn btn-primary\"\r\n >\r\n {t(\"create_dialog.buttons.create_button_label\")}\r\n \r\n
    \r\n
    \r\n \r\n );\r\n}\r\nexport default CreateSharedPropertyDialog;","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport const getProjectRoles = async (projectId) => {\r\n try {\r\n const request = await callApiWithAuthorization(`/api/v0/roles/${projectId}`)\r\n const result = await request.json()\r\n return result\r\n } catch (e) {\r\n return e\r\n }\r\n}\r\n\r\nexport const updateRole = async (id, properties) => {\r\n try {\r\n const request = await callApiWithAuthorization(`/api/v0/role/${id}`, {\r\n method: 'PUT',\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(properties)\r\n })\r\n const result = await request.json()\r\n return result\r\n } catch (e) {\r\n return e\r\n }\r\n}\r\n\r\nexport const createRole = async (projectId, properties) => {\r\n try {\r\n const request = await callApiWithAuthorization(`/api/v0/role/${projectId}`, {\r\n method: 'POST',\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(properties)\r\n })\r\n const result = await request.json()\r\n return result\r\n } catch (e) {\r\n return e\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport Alice from \"../Display/Alice\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport SidebarAttribute from \"./AttributePropertyPanel\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport AttributeTypes from \"./AttributeTypes\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport CreateAttributeDialog from \"./CreateAttributeDialog\";\r\nimport RemoveDialog from \"../Shared/Remove/RemoveDialog\";\r\nimport SelectAttributeTemplate from \"./SelectAttributeTemplate\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { updateNode } from \"../Helpers/Nodes\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport Upgarde from \"../Shared/Subscription/Upgrade\";\r\nimport ServerError from \"../Shared/Error/ServerError\";\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\";\r\nimport { NotificationGroup, Notification } from \"@progress/kendo-react-notification\";\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { ATTRIBUTE_LABEL, ATTRIBUTE_PLURAL_LABEL } from \"../Helpers/Labels/AttributeLabel\";\r\nimport WorkspaceAppModelContext from \"../../Context/Workspace/WorkspaceAppModelContext\";\r\nimport AliceAttributeRecommendationDialog from \"./AttributeRecommendation/AliceAttributeRecommendationDialog\";\r\nimport { bulkDeleteAttributes, deleteAttribute, getAttributes, saveStatesForAttribute, findFormulaReferencesForAttribute, getStatesAndRulesForAttribute, updateAttributeNode } from \"../../API/Attribute/Attribute\";\r\nimport { getAllAttributes } from \"../Helpers/Schema/Schema\";\r\nimport SelectSharedProperty from \"./SelectSharedProperty\";\r\nimport CreateSharedPropertyDialog from \"./CreateSharedPropertyDialog\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getProjectRoles } from \"../../API/Role/Role\";\r\nimport { updateProject } from \"../../API/Project/project\";\r\n\r\nclass DragCell extends React.Component {\r\n render() {\r\n return (\r\n {\r\n DragCell.reorder(this.props.dataItem);\r\n e.preventDefault();\r\n e.dataTransfer.dropEffect = \"copy\";\r\n }}\r\n onDragEnd={(e) => {\r\n e.preventDefault();\r\n DragCell.endDrag(this.props.dataItem);\r\n }}\r\n >\r\n {\r\n DragCell.dragStart(this.props.dataItem);\r\n e.dataTransfer.setData(\"dragging\", \"\");\r\n }}\r\n >\r\n {this.props.dataItem[\"#\"]}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nclass SelectAllCheckbox extends React.Component {\r\n render() {\r\n const { data, onClick } = this.props;\r\n const isNormalAttributePresent = data.some(item => !item.isSystemAttribute && !item.isAzureAttribute);\r\n const normalAttributes = data.filter((item) => !item.isSystemAttribute && !item.isAzureAttribute);\r\n const allMarkedToDelete = normalAttributes.length ? normalAttributes.every((item) => item.toDelete === true) : false;\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nclass NameCell extends React.Component {\r\n render() {\r\n const { dataItem } = this.props;\r\n\r\n let prefix = \"\";\r\n\r\n if (dataItem.inherited) {\r\n prefix = \"(i)\";\r\n }\r\n\r\n if (dataItem.groupAdded && dataItem.inherited) {\r\n if (dataItem.inheritedFrom === true) {\r\n prefix = (ia);\r\n } else {\r\n prefix = (\r\n this.props.showEditRelName(dataItem)}\r\n >\r\n (ia)\r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n \r\n {dataItem.attributeName} {prefix}\r\n \r\n );\r\n }\r\n}\r\n\r\nclass AttributeComponent extends Component {\r\n\r\n DataTypes = AttributeTypes.Types;\r\n Icons = AttributeTypes.Icons;\r\n\r\n static contextType = GlobalContext\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n isAttrLoaded: false,\r\n showReorderingSysAttrMessage: false,\r\n showNewAttributeDialog: false,\r\n ShowNotification: false,\r\n ShowNotificationMessage: \"\",\r\n showSelectAttributeTemplate: false,\r\n showSelectSharedPropertyDialog: false,\r\n showCreateSharedPropertyDialog: false,\r\n showUpgradeDailog: false,\r\n panes: [\r\n { collapsible: false },\r\n { size: \"475px\", min: \"475px\", collapsible: false },\r\n ],\r\n data: [],\r\n sharedProperties: [],\r\n ShowHelp: false,\r\n SideData: {},\r\n processingAttribute: false,\r\n nextAttributeId: \"\",\r\n showServerError: false,\r\n referenceAttr: [],\r\n roles: [],\r\n referenceChecked: false,\r\n showAliceGPTDialog: false,\r\n showBulkDeleteDialog: false,\r\n };\r\n this.SidebarAttribute = React.createRef();\r\n DragCell.reorder = this.reorder.bind(this);\r\n DragCell.dragStart = this.dragStart.bind(this);\r\n DragCell.endDrag = this.endDrag.bind(this);\r\n AttributeTypes.bindEvents();\r\n }\r\n\r\n componentDidMount = async () => {\r\n await this.loadAttribute();\r\n };\r\n loadAttribute = async (currentAttributeId = \"\") => {\r\n\r\n try {\r\n this.setState({ isAttrLoaded: false });\r\n const showSystemAttributes = this.getShowSystemAttributesValue();\r\n const [\r\n allAttributes, roles,\r\n ] = await Promise.all([\r\n this.getAllAttributes(),\r\n getProjectRoles(this.props.project._id),\r\n ])\r\n let data = [];\r\n if (showSystemAttributes) {\r\n data = this.arrangeSystemAttributesFrom(allAttributes);\r\n } else {\r\n data = allAttributes.filter(attr => !attr.isSystemAttribute).sort((a, b) => a.order - b.order);\r\n }\r\n const loading = false;\r\n this.setState(\r\n {\r\n allAttributes,\r\n data,\r\n loading,\r\n roles,\r\n showSystemAttributes\r\n },\r\n () => {\r\n if (this.state.data.length > 0) {\r\n if (this.props.selectedSysName) {\r\n let toSelectAttribute = this.state.data.find(\r\n (attr) =>\r\n attr.sysName === this.props.selectedSysName\r\n );\r\n if (toSelectAttribute) {\r\n this.rowClick(toSelectAttribute._id);\r\n } else {\r\n this.rowClick(this.state.data[0]._id);\r\n }\r\n } else {\r\n if (this.state.selectedId && this.state.selectedId.length > 0) {\r\n if (currentAttributeId !== this.state.selectedId) {\r\n this.rowClick(this.state.selectedId);\r\n }\r\n }\r\n else {\r\n this.rowClick(this.state.data[0]._id);\r\n }\r\n }\r\n }\r\n this.props.onLoadingComplete();\r\n }\r\n );\r\n document.addEventListener(\"click\", this.handlePopup);\r\n } catch (error) {\r\n debugger\r\n console.error(error)\r\n this.setState({ showServerError: true })\r\n }\r\n }\r\n\r\n getShowSystemAttributesValue = () => {\r\n const { entityId } = this.props;\r\n const entityConfigLocalStorageString = localStorage.getItem(\"entity-config\");\r\n const entityConfig = entityConfigLocalStorageString === null ? {} : JSON.parse(entityConfigLocalStorageString);\r\n if (entityConfig !== undefined && entityConfig[entityId] !== undefined) {\r\n return entityConfig[entityId][\"showSystemAttribute\"];\r\n }\r\n return false;\r\n };\r\n\r\n arrangeSystemAttributesFrom = (allAttributes) => {\r\n const normalAttributes = [];\r\n const systemAttributes = [];\r\n for (const attribute of allAttributes) {\r\n if (attribute.isSystemAttribute) {\r\n systemAttributes.push(attribute);\r\n } else {\r\n normalAttributes.push(attribute);\r\n }\r\n }\r\n const unOrderedSystemAttributes = systemAttributes\r\n .filter((attr) => attr.isReordered === false)\r\n .sort((a, b) => a.order - b.order);\r\n const orderedSystemAttributes = systemAttributes\r\n .filter((attr) => attr.isReordered === true)\r\n .sort((a, b) => a.order - b.order);\r\n let attributes = [...normalAttributes];\r\n if (orderedSystemAttributes.length > 0) {\r\n attributes.push(...orderedSystemAttributes);\r\n attributes = attributes.sort((a, b) => a.order - b.order);\r\n }\r\n attributes.push(...unOrderedSystemAttributes)\r\n return attributes;\r\n }\r\n\r\n rowRender = (trElement, props) => {\r\n const trProps = { className: \"k-master-row\" };\r\n if (props.dataItem.selected) {\r\n trProps.className += \" k-state-selected\";\r\n }\r\n if (props.dataItem.isHovered) {\r\n if (this.state.activeItemIndex > this.state.draggedOverItemIndex) {\r\n trProps.className = \" hovered-row-above\";\r\n } else {\r\n trProps.className = \" hovered-row-below\";\r\n }\r\n }\r\n return React.cloneElement(trElement, trProps, trElement.props.children);\r\n };\r\n\r\n getInitialHeightForWindow = () => {\r\n // return 80% of the window height\r\n return window.innerHeight * 0.8;\r\n };\r\n\r\n getInitialWidthForWindow = () => {\r\n // return 75% of the window width\r\n return window.innerWidth * 0.75;\r\n };\r\n\r\n getDeleteAttributeDialogMessage = () => {\r\n const index = this.state.data.findIndex(attr => attr._id === this.state.toDeleteId);\r\n const attribute = this.state.data[index];\r\n if (attribute.attributeType === \"Entity Lookup\") {\r\n return this.props.t(\"remove_dialog.warning_with_entity_lookup\", {\r\n attributeName: this.state.SideData.attributeName\r\n })\r\n }\r\n if (this.state.referenceAttr && this.state.referenceAttr.length > 0) {\r\n return this.props.t(\"remove_dialog.warning_with_reference_attr\", {\r\n attributeName: this.state.SideData.attributeName\r\n })\r\n }\r\n return this.props.t(\"remove_dialog.warning_without_reference_attr\", {\r\n attributeName: this.state.SideData.attributeName\r\n })\r\n }\r\n\r\n render() {\r\n const { subscription } = this.context.state\r\n if (this.state.showServerError) return \r\n let sideData;\r\n\r\n if (this.state.data.length > 0) {\r\n sideData = (\r\n \r\n {\r\n ({ state, mutators }) => (\r\n \r\n )\r\n }\r\n \r\n );\r\n } else {\r\n sideData =
    ;\r\n }\r\n\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n\r\n const { t } = this.props;\r\n\r\n return (\r\n <>\r\n {\r\n this.state.showUpgradeDailog &&\r\n bigger apps? '}\r\n toggleDialog={this.toggleUpgradeDailog}\r\n Type={'Pro'}\r\n />\r\n }\r\n {this.state.showNewAttributeDialog && (\r\n \r\n )}\r\n {\r\n this.state.showAliceGPTDialog &&\r\n \r\n }\r\n {this.state.showDeletePopup && (\r\n \r\n )}\r\n {this.state.showSelectAttributeTemplatePopup && (\r\n \r\n )}\r\n {this.state.showSelectSharedPropertyDialog && (\r\n \r\n )}\r\n {this.state.showCreateSharedPropertyDialog && (\r\n this.setState({ sharedProperties: data })}\r\n sharedProperties={this.state.sharedProperties}\r\n projectId={this.props.project._id}\r\n handleClose={this.showCreateSharedProperty}\r\n />\r\n )}\r\n {this.state.data.length === 0 ? (\r\n \r\n {t(\"no_data_message.message_1\")}\r\n

    \r\n {t(\"no_data_message.click_on\")}\r\n \r\n {t(\"no_data_message.bold_text\")}\r\n \r\n {t(\"no_data_message.add_properties\")}\r\n
    \r\n ) : (\r\n \r\n
    \r\n
    \r\n {this.state.ShowNotification && (\r\n \r\n {\r\n this.setState({\r\n ShowNotification: false,\r\n ShowNotificationMessage: \"\"\r\n })\r\n }}\r\n type={{\r\n style: \"success\",\r\n icon: true,\r\n }}\r\n >\r\n {this.state.ShowNotificationMessage}\r\n \r\n \r\n )}\r\n\r\n
    \r\n {this.state.loading && }\r\n {this.state.loading === false &&\r\n this.state.data.length !== 0 && (\r\n \r\n
    \r\n {\r\n this.state.showReorderingSysAttrMessage ? (\r\n
    \r\n You cannot reorder system {ATTRIBUTE_PLURAL_LABEL.toLowerCase()}.\r\n
    \r\n ) :
    \r\n }\r\n
    \r\n {\r\n this.state.showBulkDeleteDialog &&\r\n 0 ?\r\n t(\"bulk_remove_dialog.warning_with_reference_attr\", {\r\n count: this.state.data.filter((item) => item.toDelete === true).length\r\n }) :\r\n t(\"bulk_remove_dialog.warning_without_reference_attr\", {\r\n count: this.state.data.filter((item) => item.toDelete === true).length\r\n })\r\n }\r\n onDelete={this.handleBulkDelete}\r\n onCancel={this.toggleBulkDeleteDialog}\r\n deleteButtonText={t(\"bulk_remove_dialog.buttons.delete_label\")}\r\n cancelButtonText={t(\"bulk_remove_dialog.buttons.cancel_label\")}\r\n />\r\n }\r\n ({\r\n ...item,\r\n \"#\": index + 1,\r\n selected: item._id === this.state.selectedId,\r\n isHovered: index === this.state.draggedOverItemIndex, index,\r\n })\r\n )}\r\n onRowClick={this.rowClick}\r\n scrollable={false}\r\n selectedField=\"selected\"\r\n >\r\n (\r\n \r\n this.handleBulkDeleteSelection(e, props.dataItem)}\r\n />\r\n \r\n\r\n )}\r\n headerCell={() => (\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 props.dataItem.typeText\r\n }\r\n {(\r\n subscription.showCalculatedField &&\r\n props.dataItem.triggerSetting && JSON.parse(props.dataItem.triggerSetting).formulaEnabled &&\r\n props.dataItem.formula &&\r\n props.dataItem.formula.length > 0\r\n ) &&\r\n <> (calculated)\r\n }\r\n \r\n )}\r\n />\r\n\r\n (\r\n \r\n {props.dataItem.attributeLabel}\r\n \r\n )}\r\n />\r\n {/* (\r\n \r\n {props.dataItem.group}\r\n \r\n )}\r\n /> */}\r\n (\r\n \r\n {props.dataItem.required && }\r\n \r\n )}\r\n />\r\n (\r\n \r\n {props.dataItem.readOnly && }\r\n \r\n )}\r\n />\r\n (\r\n \r\n {props.dataItem.unique && }\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n {sideData}\r\n \r\n )\r\n }\r\n \r\n );\r\n }\r\n\r\n handleSelectAllBulkDelete = e => {\r\n const { data } = this.state;\r\n const updatedData = data.map(item =>\r\n (item.isSystemAttribute || item.isAzureAttribute) ? item : { ...item, toDelete: e.value }\r\n );\r\n const normalAttributes = updatedData.filter(item => !item.isSystemAttribute);\r\n const isAnySelected = normalAttributes.some(item => item.toDelete === true);\r\n this.props.showDeleteAction(isAnySelected);\r\n this.setState({ data: updatedData });\r\n };\r\n\r\n handleBulkDeleteSelection = (e, dataItem) => {\r\n const { data } = this.state;\r\n const selectedData = data.find(item => item._id === dataItem._id);\r\n selectedData.toDelete = e.value;\r\n const isAnySelected = data.some(item => item.toDelete === true);\r\n this.props.showDeleteAction(isAnySelected);\r\n this.setState({ data });\r\n }\r\n\r\n handleBulkDelete = async () => {\r\n const { data, allAttributes } = this.state;\r\n const selectedAttributes = data.filter(item => item.toDelete);\r\n\r\n // find State Field Attribute Type in selected attributes and make a call to save the state field\r\n const stateFieldAttribute = selectedAttributes.find(item => item.attributeType === 'State Field');\r\n\r\n if (stateFieldAttribute) {\r\n // await saveStatesForAttribute({\r\n // attributeId: stateFieldAttribute._id,\r\n // statesToCreate: [],\r\n // statesToUpdate: [],\r\n // statesToDelete: stateFieldAttribute.statefield,\r\n // })\r\n }\r\n\r\n const selectedAttributeIds = selectedAttributes.map(item => item._id);\r\n\r\n if (selectedAttributeIds.length) {\r\n this.setState({ processingAttribute: true });\r\n try {\r\n const bulkDeleteResponse = await bulkDeleteAttributes(this.props.entityId, selectedAttributeIds)\r\n debugger;\r\n if (bulkDeleteResponse.status === \"Success\") {\r\n this.deleteFormula();\r\n await updateProject(this.props.project._id, { hasSchemaChanges: true });\r\n\r\n const remainingAttributes = data.filter(item => !selectedAttributeIds.includes(item._id));\r\n const remainingAllAttributes = allAttributes.filter(item => !selectedAttributeIds.includes(item._id));\r\n\r\n this.setState({\r\n processingAttribute: false,\r\n data: remainingAttributes,\r\n allAttributes: remainingAllAttributes,\r\n SideData: remainingAttributes.length ? this.state.SideData : {},\r\n }, () => {\r\n if (remainingAttributes.length)\r\n this.rowClick(remainingAttributes[remainingAttributes.length - 1]._id);\r\n });\r\n\r\n this.props.showAction(remainingAttributes.length !== 0);\r\n this.props.showDeleteAction(false);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.setState({\r\n showBulkDeleteDialog: false,\r\n processingAttribute: false\r\n });\r\n }\r\n } else {\r\n this.setState({ showBulkDeleteDialog: false });\r\n }\r\n }\r\n\r\n deleteFormula = async () => {\r\n var referenceAttr = this.state.referenceAttr.length > 0 ? this.state.referenceAttr : this.state.referenceBulkAttr || [];\r\n for (let item of referenceAttr) {\r\n const attr = this.state.data.find(attribute => attribute._id === item.attributeId);\r\n\r\n if (attr) {\r\n const triggerSettingObj1 = JSON.parse(attr.triggerSetting);\r\n triggerSettingObj1.formulaEnabled = false;\r\n const updatedTriggerSettingStr1 = JSON.stringify(triggerSettingObj1);\r\n attr.triggerSetting = updatedTriggerSettingStr1;\r\n await updateAttributeNode(attr._id, {\r\n formula: \"\",\r\n formulaJson: \"\",\r\n triggerSetting: updatedTriggerSettingStr1,\r\n readOnly: false\r\n })\r\n // await updateNode(\"Attribute\", attr._id, attr);\r\n // callApiWithAuthorization(\"/api/v0/updateAttributeRoles\", {\r\n // method: \"POST\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // body: JSON.stringify({\r\n // projectId: this.props.project._id,\r\n // entityId: this.props.entityId,\r\n // attributeId: attr._id,\r\n // Value: \"Edit\",\r\n // }),\r\n // });\r\n }\r\n\r\n const allEntityAttributes = await getAttributes(item.entityId);\r\n const linkedAttributes = allEntityAttributes.find(attrItem => attrItem._id === item.attributeId);\r\n\r\n if (linkedAttributes) {\r\n linkedAttributes.formula = '';\r\n linkedAttributes.formulaJson = '';\r\n const triggerSettingObj2 = JSON.parse(linkedAttributes.triggerSetting);\r\n triggerSettingObj2.formulaEnabled = false;\r\n const updatedTriggerSettingStr = JSON.stringify(triggerSettingObj2);\r\n linkedAttributes.triggerSetting = updatedTriggerSettingStr;\r\n linkedAttributes.readOnly = false;\r\n await updateAttributeNode(linkedAttributes._id, {\r\n formula: \"\",\r\n formulaJson: \"\",\r\n triggerSetting: updatedTriggerSettingStr,\r\n readOnly: false\r\n })\r\n // await updateNode(\"Attribute\", linkedAttributes._id, linkedAttributes);\r\n // callApiWithAuthorization(\"/api/v0/updateAttributeRoles\", {\r\n // method: \"POST\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // body: JSON.stringify({\r\n // projectId: this.props.project._id,\r\n // entityId: this.props.entityId,\r\n // attributeId: linkedAttributes._id,\r\n // Value: \"Edit\",\r\n // }),\r\n // });\r\n }\r\n }\r\n }\r\n\r\n\r\n toggleBulkDeleteDialog = async () => {\r\n this.setState({\r\n showBulkDeleteDialog: !this.state.showBulkDeleteDialog,\r\n processingAttribute: true\r\n });\r\n\r\n const { data } = this.state;\r\n const selectedAttributes = data.filter(item => item.toDelete);\r\n\r\n const filteredAttributes = selectedAttributes.filter(item =>\r\n item.attributeType === \"DateTime\" ||\r\n item.attributeType === \"Number\" ||\r\n item.attributeType === \"String\"\r\n );\r\n if (filteredAttributes && filteredAttributes.length > 0) {\r\n await this.checkBulkFormulaReferences(filteredAttributes);\r\n }\r\n this.setState({\r\n processingAttribute: false\r\n });\r\n }\r\n\r\n onSplitterSizeChange = (e) => {\r\n this.setState({ panes: e.newState });\r\n };\r\n\r\n getAllAttributes = async () => {\r\n let allAttributes = await getAttributes(this.props.entityId)\r\n\r\n for (let i = 0; i < allAttributes.length; i++) {\r\n const attribute = allAttributes[i];\r\n if (attribute.cellFormatting) {\r\n attribute.cellFormatting = JSON.parse(attribute.cellFormatting);\r\n }\r\n }\r\n debugger\r\n\r\n allAttributes.forEach(this.setAttributeProperties);\r\n\r\n let groups = allAttributes.map((attribute) => {\r\n if (!attribute.groupAdded) {\r\n return attribute.group;\r\n }\r\n }).filter((group) => group && group.trim() !== \"\");\r\n\r\n this.GroupData = [...new Set(groups)];\r\n\r\n allAttributes = allAttributes.sort((a, b) => a.order - b.order)\r\n debugger\r\n return allAttributes;\r\n };\r\n\r\n setAttributeProperties = (attributeData, index) => {\r\n if (attributeData.inherited === \"true\") {\r\n if (attributeData.relName && attributeData.relName.trim() !== \"\") {\r\n attributeData.groupAdded = true;\r\n attributeData.group = attributeData.relName;\r\n\r\n if (attributeData.inheritedFrom === \"true\") {\r\n attributeData.inheritedFrom = true;\r\n }\r\n }\r\n\r\n attributeData.inherited = true;\r\n } else {\r\n attributeData.inherited = false;\r\n }\r\n\r\n attributeData.isSystemAttribute = attributeData.isSystemAttribute;\r\n // attributeData.indexId = index + 1;\r\n attributeData.typeText = attributeData.attributeType === \"Entity Lookup\"\r\n ? \"Referenced Property\"\r\n : this.DataTypes.find((type) => type.value === attributeData.attributeType) !== undefined ? this.DataTypes.find((type) => type.value === attributeData.attributeType).text : \"Type not found\";\r\n attributeData.isReordered = attributeData.isSystemAttribute && attributeData.isReordered === \"true\";\r\n };\r\n\r\n rowClick = (value) => {\r\n var id = \"\";\r\n\r\n this.setState({ isAttrLoaded: false });\r\n if (value[\"dataItem\"]) {\r\n id = value.dataItem._id;\r\n } else {\r\n id = value;\r\n }\r\n\r\n let attributePropertiesAreSame = this.SidebarAttribute.current.getDisabled();\r\n let isAttributeDeleted = this.state.data.find(attribute => attribute._id === this.SidebarAttribute.current.props.SideData._id) === undefined;\r\n\r\n if (attributePropertiesAreSame || isAttributeDeleted) {\r\n let nextAttribute = this.state.data.find(\r\n (attribute) => attribute._id === id\r\n );\r\n\r\n this.setState({\r\n ShowNotification: false,\r\n selectedId: id,\r\n SideData: nextAttribute,\r\n nextAttributeId: \"\",\r\n });\r\n } else {\r\n this.SidebarAttribute.current.toggleSaveAndContinueDialog();\r\n this.setState({\r\n nextAttributeId: id,\r\n ShowNotification: false\r\n });\r\n }\r\n this.setState({ isAttrLoaded: true });\r\n };\r\n\r\n selectNextAttribute = (e) => {\r\n let { data, nextAttributeId } = this.state;\r\n const nextAttribute = data.find(\r\n (attribute) => attribute._id === nextAttributeId\r\n );\r\n this.setState({\r\n selectedId: nextAttributeId,\r\n SideData: nextAttribute,\r\n nextAttributeId: \"\",\r\n });\r\n };\r\n\r\n clearNextAttribute = (e) => {\r\n this.setState({\r\n nextAttributeId: \"\",\r\n });\r\n };\r\n\r\n addNew = (e) => {\r\n this.setState({\r\n showNewAttributeDialog: true,\r\n });\r\n };\r\n\r\n toggleDialog = (showUpgradeDailog) => {\r\n this.setState({\r\n showUpgradeDailog: showUpgradeDailog,\r\n showNewAttributeDialog: false,\r\n });\r\n };\r\n\r\n toggleUpgradeDailog = () => {\r\n this.setState({\r\n showUpgradeDailog: !this.state.showUpgradeDailog\r\n })\r\n }\r\n\r\n //select attribute Template Dialog\r\n showSelectAttributeTemplate = (showUpgradeDailog) => {\r\n this.setState({\r\n showUpgradeDailog: showUpgradeDailog,\r\n showSelectAttributeTemplatePopup: !this.state.showSelectAttributeTemplatePopup,\r\n });\r\n };\r\n\r\n //select shared property Dialog\r\n showSelectSharedProperty = (showUpgradeDailog) => {\r\n this.setState({\r\n showUpgradeDailog: showUpgradeDailog,\r\n showSelectSharedPropertyDialog: !this.state.showSelectSharedPropertyDialog,\r\n });\r\n };\r\n\r\n // open create shared property Dialog\r\n openCreateSharedProperty = () => {\r\n this.setState({\r\n showCreateSharedPropertyDialog: true,\r\n showSelectSharedPropertyDialog: false,\r\n });\r\n };\r\n\r\n //create shared property Dialog\r\n showCreateSharedProperty = (showSelectSharedPropertyDialog) => {\r\n this.setState({\r\n showCreateSharedPropertyDialog: !this.state.showCreateSharedPropertyDialog,\r\n showSelectSharedPropertyDialog: showSelectSharedPropertyDialog,\r\n });\r\n }\r\n\r\n // System Attributes\r\n toggleSystemAttributes = (e) => {\r\n let { allAttributes, data, showSystemAttributes } = this.state;\r\n\r\n showSystemAttributes = !showSystemAttributes;\r\n\r\n if (showSystemAttributes) {\r\n const systemAttributes = allAttributes.filter(\r\n (attr) => attr.isSystemAttribute\r\n );\r\n const unOrderedSystemAttributes = systemAttributes\r\n .filter((attr) => attr.isReordered === false)\r\n .sort((a, b) => a.order - b.order);\r\n const orderedSystemAttributes = systemAttributes\r\n .filter((attr) => attr.isReordered === true)\r\n if (orderedSystemAttributes.length > 0) {\r\n data = [...data, ...orderedSystemAttributes];\r\n data = data.sort((a, b) => a.order - b.order);\r\n }\r\n data = [...data, ...unOrderedSystemAttributes];\r\n } else {\r\n data = allAttributes.filter((attr) => !attr.isSystemAttribute);\r\n }\r\n this.syncValueInLocalStorage(e.target.element.checked);\r\n\r\n // data = data.map((attr, i) => ({ ...attr, _id: i + 1 }));\r\n\r\n this.setState(\r\n {\r\n allAttributes,\r\n data,\r\n showSystemAttributes,\r\n },\r\n () => {\r\n if (data.length > 0) {\r\n this.rowClick(data[0]._id);\r\n } else {\r\n this.setState({\r\n selectedId: \"\",\r\n SideData: {},\r\n });\r\n }\r\n }\r\n );\r\n };\r\n\r\n syncValueInLocalStorage = (value) => {\r\n const { entityId } = this.props;\r\n const localStorageValue = localStorage.getItem(\"entity-config\");\r\n const localStorageValueJSON =\r\n localStorageValue === null ? {} : JSON.parse(localStorageValue);\r\n if (localStorageValueJSON[entityId] === undefined) {\r\n localStorageValueJSON[entityId] = {};\r\n }\r\n localStorageValueJSON[entityId][\"showSystemAttribute\"] = value;\r\n const newLocalStorageValue = JSON.stringify(localStorageValueJSON);\r\n localStorage.setItem(\"entity-config\", newLocalStorageValue);\r\n };\r\n\r\n handlePopup = (e) => {\r\n const { anchor, popupContainer } = this;\r\n const { showPopup } = this.state;\r\n const { target } = e;\r\n\r\n if (\r\n showPopup &&\r\n !anchor.contains(target) &&\r\n !popupContainer.contains(target)\r\n ) {\r\n this.setState({\r\n showPopup: false,\r\n });\r\n }\r\n };\r\n\r\n handleShowNotification = (message) => {\r\n this.setState({\r\n ShowNotification: true,\r\n ShowNotificationMessage: message\r\n })\r\n setTimeout(() => {\r\n this.setState({\r\n ShowNotification: false,\r\n ShowNotificationMessage: \"\"\r\n })\r\n }, 2000)\r\n }\r\n\r\n showOtherOptionsPopup = () => {\r\n this.setState({\r\n showPopup: !this.state.showPopup,\r\n });\r\n };\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener(\"click\", this.handlePopup);\r\n }\r\n\r\n // Re-ordering Part\r\n reorder(dataItem) {\r\n if (this.state.activeItem._id === dataItem._id) {\r\n if (\r\n this.state.activeItemIndex !== this.state.draggedOverItemIndex\r\n ) {\r\n this.setState({ draggedOverItemIndex: -1 });\r\n }\r\n return;\r\n }\r\n\r\n let draggedOverItemIndex = this.state.data.findIndex(\r\n (p) => p._id === dataItem._id\r\n );\r\n\r\n this.setState({\r\n activeItem: this.state.activeItem,\r\n draggedOverItemIndex,\r\n });\r\n }\r\n\r\n updateOrder = (_id, ordertoUpdate, sysName) => {\r\n\r\n let properties = { order: ordertoUpdate, sysName: sysName };\r\n\r\n // callApiWithAuthorization(\"/api/v0/relationships\", {\r\n // method: \"PUT\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // body: JSON.stringify({\r\n // id: _id,\r\n // label: \"Has_Attribute\",\r\n // properties: properties,\r\n // }),\r\n // });\r\n };\r\n\r\n endDrag(dataItem) {\r\n if (dataItem.isSystemAttribute === true) {\r\n this.setState({\r\n showReorderingSysAttrMessage: true\r\n }, () => {\r\n setTimeout(() => {\r\n this.setState({\r\n showReorderingSysAttrMessage: false\r\n });\r\n }, 3000);\r\n });\r\n return;\r\n }\r\n\r\n let { activeItemIndex, draggedOverItemIndex, showSystemAttributes } =\r\n this.state;\r\n\r\n if (draggedOverItemIndex === -1) {\r\n // this.setState({\r\n // selectedId: this.state.oldSelectedId,\r\n // draggedOverItemIndex,\r\n // activeItemIndex,\r\n // });\r\n return;\r\n }\r\n\r\n if (this.state.data[draggedOverItemIndex].isSystemAttribute === true) {\r\n this.setState(\r\n {\r\n showReorderingSysAttrMessage: true,\r\n },\r\n () => {\r\n setTimeout(() => {\r\n this.setState({\r\n showReorderingSysAttrMessage: false,\r\n });\r\n }, 3000);\r\n }\r\n );\r\n return;\r\n }\r\n\r\n let reorderedData = this.state.data.slice();\r\n\r\n const activeItem = reorderedData[activeItemIndex];\r\n if (activeItem.isSystemAttribute === true) {\r\n updateAttributeNode(activeItem._id, { isReordered: true });\r\n // updateNode(\"Attribute\", activeItem._id, { isReordered: true });\r\n reorderedData[activeItemIndex].isReordered = true;\r\n }\r\n\r\n reorderedData.splice(activeItemIndex, 1);\r\n reorderedData.splice(draggedOverItemIndex, 0, this.state.activeItem);\r\n let index = draggedOverItemIndex;\r\n\r\n let newOrder;\r\n\r\n if (reorderedData.length > 2) {\r\n if (index === reorderedData.length - 1) {\r\n newOrder = parseInt(reorderedData[index - 1][\"order\"]) + 10000000000;\r\n reorderedData[index][\"order\"] = newOrder;\r\n updateAttributeNode(reorderedData[index]._id, {\r\n order: String(newOrder)\r\n });\r\n // this.updateOrder(\r\n // reorderedData[index].rel_id,\r\n // newOrder,\r\n // reorderedData[index].sysName\r\n // );\r\n } else if (index === 0) {\r\n newOrder = parseInt(reorderedData[1][\"order\"]);\r\n let prevElementOrder = parseInt(reorderedData[2][\"order\"]);\r\n if (reorderedData[2].isSystemAttribute === true) {\r\n prevElementOrder += newOrder;\r\n }\r\n let orderToSet = (prevElementOrder + newOrder) / 2;\r\n reorderedData[index][\"order\"] = newOrder;\r\n reorderedData[1][\"order\"] = orderToSet;\r\n updateAttributeNode(reorderedData[index]._id, {\r\n order: String(newOrder)\r\n });\r\n updateAttributeNode(reorderedData[1]._id, {\r\n order: String(orderToSet)\r\n });\r\n // this.updateOrder(\r\n // reorderedData[index].rel_id,\r\n // newOrder,\r\n // reorderedData[index].sysName\r\n // );\r\n // this.updateOrder(\r\n // reorderedData[1].rel_id,\r\n // orderToSet,\r\n // reorderedData[1].sysName\r\n // );\r\n //console.log(prevElementOrder, orderToSet, index);\r\n } else {\r\n let prevItemOrder = parseInt(reorderedData[index - 1][\"order\"]);\r\n let nextItemOrder = parseInt(reorderedData[index + 1][\"order\"]);\r\n newOrder = (prevItemOrder + nextItemOrder) / 2;\r\n if (reorderedData[index + 1].isSystemAttribute === true) {\r\n newOrder = prevItemOrder + 10000000000;\r\n }\r\n reorderedData[index][\"order\"] = newOrder;\r\n updateAttributeNode(reorderedData[index]._id, {\r\n order: String(newOrder)\r\n });\r\n // this.updateOrder(\r\n // reorderedData[index].rel_id,\r\n // newOrder,\r\n // reorderedData[index].sysName\r\n // );\r\n }\r\n } else {\r\n let firstOrder = reorderedData[0][\"order\"];\r\n let secondOrder = reorderedData[1][\"order\"];\r\n\r\n reorderedData[0][\"order\"] = secondOrder;\r\n reorderedData[1][\"order\"] = firstOrder;\r\n\r\n updateAttributeNode(reorderedData[0]._id, {\r\n order: String(secondOrder)\r\n });\r\n updateAttributeNode(reorderedData[1]._id, {\r\n order: String(firstOrder)\r\n });\r\n\r\n // bug solve\r\n // this.updateOrder(\r\n // reorderedData[0].rel_id,\r\n // secondOrder,\r\n // reorderedData[0].sysName\r\n // );\r\n // this.updateOrder(\r\n // reorderedData[1].rel_id,\r\n // firstOrder,\r\n // reorderedData[1].sysName\r\n // );\r\n }\r\n\r\n // for (let i = 0; i < reorderedData.length; i++) {\r\n // reorderedData[i][\"#\"] = i + 1;\r\n // }\r\n\r\n draggedOverItemIndex = -1;\r\n activeItemIndex = -1;\r\n\r\n let allAttributes = [...reorderedData];\r\n\r\n if (!showSystemAttributes) {\r\n const systemAttributes = this.state.allAttributes.filter(\r\n (attr) => attr.isSystemAttribute\r\n );\r\n allAttributes.push(...systemAttributes);\r\n }\r\n\r\n this.setState({\r\n data: reorderedData,\r\n selectedId: this.state.oldSelectedId,\r\n draggedOverItemIndex,\r\n activeItemIndex,\r\n allAttributes,\r\n });\r\n }\r\n\r\n dragStart(dataItem) {\r\n var oldSelectedId = this.state.selectedId;\r\n this.setState({\r\n data: this.state.data,\r\n activeItem: dataItem,\r\n oldSelectedId: oldSelectedId,\r\n selectedId: dataItem._id,\r\n activeItemIndex: dataItem.index,\r\n });\r\n }\r\n\r\n // Update Side Date\r\n updateAttribute = (id, properties) => {\r\n let {\r\n allAttributes,\r\n data: prevData,\r\n showSystemAttributes,\r\n } = this.state;\r\n const systemAttributes = allAttributes.filter(\r\n (attr) => attr.isSystemAttribute\r\n );\r\n const userAttributes = allAttributes.filter(\r\n (attr) => !attr.isSystemAttribute\r\n );\r\n const attributeIndex = userAttributes.findIndex(\r\n (attr) => attr._id === id\r\n );\r\n userAttributes[attributeIndex] = {\r\n ...userAttributes[attributeIndex],\r\n ...properties,\r\n };\r\n let data = [...userAttributes];\r\n if (showSystemAttributes) {\r\n data = [...data, ...systemAttributes];\r\n }\r\n allAttributes = [...userAttributes, ...systemAttributes];\r\n const SideData = { ...userAttributes[attributeIndex] };\r\n this.setState({\r\n data,\r\n allAttributes,\r\n SideData,\r\n });\r\n this.props.showAction(data.length !== 0);\r\n };\r\n\r\n // Delete Attribute Part\r\n showDeleteAttributePopup = () => {\r\n this.setState({\r\n showDeletePopup: true,\r\n toDeleteId: this.state.selectedId\r\n });\r\n\r\n if (this.state.SideData.attributeType === \"DateTime\" || this.state.SideData.attributeType === \"Number\" || this.state.SideData.attributeType === \"String\") {\r\n this.setState({\r\n processingAttribute: true\r\n });\r\n this.findFormulaReferencesForAttribute(this.state.selectedId);\r\n } else {\r\n this.setState({\r\n processingAttribute: false,\r\n referenceAttr: [],\r\n referenceChecked: true\r\n })\r\n }\r\n };\r\n\r\n toggleDeleteAttributeDialog = (e) => {\r\n this.setState({ showDeletePopup: !this.state.showDeletePopup });\r\n };\r\n\r\n // getLinkedEntities = async () => {\r\n // const { entityId } = this.props;\r\n // // const index = this.state.data.findIndex(attr => attr._id === toDeleteId);\r\n // this.setState({\r\n // referenceAttr: [],\r\n // referenceChecked: false\r\n // });\r\n // const checkFormulaRequest = await callApiWithAuthorization(\r\n // \"/api/v0/getLinkedEntities/\" + entityId,\r\n // {\r\n // method: \"GET\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\"\r\n // }\r\n // }\r\n // )\r\n // const checkFormulaResponse = await checkFormulaRequest.json();\r\n // this.setState({\r\n // referenceAttr: Array.from(new Set(checkFormulaResponse.message)),\r\n // referenceChecked: true\r\n // });\r\n // }\r\n\r\n findFormulaReferencesForAttribute = async (attributeId) => {\r\n const { entityId, entityName } = this.props;\r\n\r\n this.setState({\r\n referenceAttr: [],\r\n referenceChecked: false\r\n });\r\n\r\n const checkFormula = await findFormulaReferencesForAttribute({\r\n entityId,\r\n entityName,\r\n attributeId,\r\n });\r\n\r\n this.setState({\r\n referenceAttr: Array.from(new Set(checkFormula.message)),\r\n referenceChecked: true,\r\n processingAttribute: false\r\n });\r\n }\r\n\r\n checkBulkFormulaReferences = async (selectedAttributes) => {\r\n const { entityId, entityName } = this.props;\r\n const referenceBulkAttr = [];\r\n const formulaRequests = [];\r\n\r\n for (const attribute of selectedAttributes) {\r\n formulaRequests.push(\r\n findFormulaReferencesForAttribute({\r\n entityId,\r\n entityName,\r\n attributeId: attribute._id,\r\n })\r\n );\r\n }\r\n\r\n const formulaResponses = await Promise.all(formulaRequests);\r\n\r\n for (const checkFormulaResponse of formulaResponses) {\r\n const uniqueReferences = Array.from(new Set(checkFormulaResponse.message));\r\n referenceBulkAttr.push(...uniqueReferences);\r\n }\r\n\r\n this.setState({\r\n referenceBulkAttr: referenceBulkAttr\r\n });\r\n }\r\n\r\n\r\n focusAttribute = async (attrId, entId, entName) => {\r\n if (attrId && attrId.length > 0) {\r\n const { project, organization, entityId, sysName } = this.props;\r\n if (entId != entityId) {\r\n const navigate = useNavigate();\r\n navigate(`/${organization.orgName}/${project.name}/Entities/${entName}/Attributes/${sysName}`);\r\n }\r\n else {\r\n this.rowClick(attrId);\r\n }\r\n this.setState({ showDeletePopup: false });\r\n }\r\n }\r\n deleteAttribute = async (e) => {\r\n this.deleteFormula();\r\n this.setState({ processingAttribute: true })\r\n const { target } = e;\r\n target.disabled = true;\r\n\r\n const { toDeleteId, data, allAttributes } = this.state;\r\n const { entityId } = this.props;\r\n const index = this.state.data.findIndex(attr => attr._id === toDeleteId);\r\n const attribute = this.state.data[index];\r\n if (attribute.attributeType === \"State Field\") {\r\n const statesToDelete = this.state.data[index].statefield;\r\n // await saveStatesForAttribute({\r\n // attributeId: attribute._id,\r\n // statesToCreate: [],\r\n // statesToUpdate: [],\r\n // statesToDelete: statesToDelete\r\n // })\r\n }\r\n\r\n const deleteResponse = await deleteAttribute(entityId, toDeleteId);\r\n\r\n const { deletedReferenceAttributeIds } = deleteResponse.data;\r\n\r\n await updateProject(this.props.project._id, { hasSchemaChanges: true });\r\n\r\n // filter out the deleted attribute\r\n // and also filter out the attributes that were deleted because of the reference\r\n const newData = data.filter(\r\n (attr) => {\r\n console.log(deletedReferenceAttributeIds.includes(attr._id), \"THIS\");\r\n return (\r\n attr._id !== toDeleteId &&\r\n !deletedReferenceAttributeIds.includes(attr._id)\r\n )\r\n }\r\n );\r\n const newAllAttributes = allAttributes.filter(\r\n (attr) =>\r\n attr._id !== toDeleteId &&\r\n !deletedReferenceAttributeIds.includes(attr._id)\r\n );\r\n\r\n this.setState({\r\n showDeletePopup: false,\r\n processingAttribute: false,\r\n toDeleteId: \"\",\r\n data: newData,\r\n allAttributes: newAllAttributes\r\n }, () => {\r\n if (newData.length > 0) {\r\n if (index === 0) {\r\n this.rowClick(newData[index]._id);\r\n } else {\r\n this.rowClick(newData[index - 1]._id);\r\n }\r\n } else {\r\n this.setState({ SideData: {} });\r\n }\r\n });\r\n this.props.showAction(data.length !== 0);\r\n }\r\n\r\n createSharedProperty = (data) => {\r\n this.createAttribute(data, false);\r\n }\r\n\r\n updateSharedPropertyAttribute = (sharedProperties, sharedLookupId) => {\r\n if (sharedLookupId === undefined) {\r\n this.setState({\r\n sharedProperties: [...sharedProperties]\r\n });\r\n return;\r\n }\r\n const { allAttributes, data: prevData } = this.state;\r\n const sharedProperty = sharedProperties.find(item => item._id === sharedLookupId);\r\n const index = allAttributes.findIndex(attr => attr.sharedLookupId === sharedProperty._id);\r\n if (index === -1) {\r\n this.setState({\r\n sharedProperties: [...sharedProperties]\r\n });\r\n return;\r\n }\r\n const newAllAttributes = allAttributes.map((attr, i) => {\r\n if (attr.sharedLookupId === sharedProperty._id) {\r\n return {\r\n ...attr,\r\n attributeName: sharedProperty.name,\r\n attributeLabel: sharedProperty.name,\r\n tooltip: sharedProperty.name,\r\n languages: sharedProperty.attributeLanguages\r\n };\r\n }\r\n return attr;\r\n });\r\n const newData = prevData.map((attr, i) => {\r\n if (attr.sharedLookupId === sharedProperty._id) {\r\n return {\r\n ...attr,\r\n attributeName: sharedProperty.name,\r\n attributeLabel: sharedProperty.name,\r\n tooltip: sharedProperty.name,\r\n languages: sharedProperty.attributeLanguages\r\n };\r\n }\r\n return attr;\r\n });\r\n const sideData = this.state.SideData && this.state.SideData.sharedLookupId === sharedLookupId ? {\r\n ...this.state.SideData,\r\n attributeName: sharedProperty.name,\r\n attributeLabel: sharedProperty.name,\r\n tooltip: sharedProperty.name,\r\n languages: sharedProperty.attributeLanguages\r\n } : this.state.SideData;\r\n this.setState({\r\n allAttributes: newAllAttributes,\r\n data: newData,\r\n sharedProperties: [...sharedProperties],\r\n SideData: sideData\r\n });\r\n }\r\n\r\n removeSharedPropertyAttribute = (sharedLookupId) => {\r\n const { data, allAttributes } = this.state;\r\n const index = data.findIndex(attr => attr.sharedLookupId === sharedLookupId);\r\n if (index === -1) {\r\n return;\r\n }\r\n const updatedData = data.filter(attr => attr.sharedLookupId !== sharedLookupId);\r\n const updatedAllAttributes = allAttributes.filter(attr => attr.sharedLookupId !== sharedLookupId);\r\n this.setState({\r\n data: updatedData,\r\n allAttributes: updatedAllAttributes\r\n }, () => {\r\n if (updatedData.length > 0) {\r\n if (index === 0) {\r\n this.rowClick(updatedData[index]._id);\r\n } else {\r\n this.rowClick(updatedData[index - 1]._id);\r\n }\r\n } else {\r\n this.setState({ SideData: {} });\r\n }\r\n });\r\n }\r\n\r\n createAttribute = (attribute, keepFormVisible) => {\r\n let { allAttributes, data } = this.state;\r\n data.push(attribute);\r\n allAttributes.push(attribute);\r\n\r\n if (this.state.showSystemAttributes) {\r\n const systemAttributes = data.filter(\r\n (attr) => attr.isSystemAttribute\r\n );\r\n const attributes = data.filter((attr) => !attr.isSystemAttribute);\r\n data = data.sort((a, b) => a.order - b.order);\r\n data = [...attributes, ...systemAttributes];\r\n }\r\n\r\n if (\r\n attribute.group.trim() !== \"\" &&\r\n !this.GroupData.includes(attribute.group)\r\n ) {\r\n this.GroupData.push(attribute.group);\r\n this.GroupData = [...new Set(this.GroupData)];\r\n }\r\n\r\n const groupData = this.state.data\r\n .map((d) => d.group)\r\n .filter((group) => group.trim() !== \"\");\r\n const groups = [...new Set(groupData)];\r\n this.GroupData = groups;\r\n\r\n this.setState(\r\n {\r\n data: data,\r\n allAttributes: allAttributes,\r\n showNewAttributeDialog: keepFormVisible,\r\n },\r\n () => {\r\n this.rowClick(attribute._id);\r\n }\r\n );\r\n this.props.showAction(data.length !== 0);\r\n };\r\n\r\n //Recommendation Page\r\n toggleAliceGPTDialog = () => {\r\n this.setState({\r\n showAliceGPTDialog: !this.state.showAliceGPTDialog,\r\n });\r\n }\r\n\r\n getExistingAttributeNames = () => {\r\n const { data } = this.state;\r\n return data.map((attr) => attr.attributeName);\r\n }\r\n\r\n hasStateAttribute = () => {\r\n return this.state.data.find(attr => attr.attributeType === \"State Field\");\r\n }\r\n\r\n addImportAttributesToGrid = (attributes) => {\r\n if (attributes.status && attributes.status === \"Failure\") {\r\n this.toggleUpgradeDailog();\r\n return;\r\n }\r\n const { allAttributes, data, showSystemAttributes } = this.state;\r\n let newData = [];\r\n attributes.data.forEach(this.setAttributeProperties)\r\n const failureResponses = attributes.data.filter(attr => attr.status === \"Failure\" && attr.message === \"Max Attributes allowed limit reached\");\r\n const attributesToAdd = attributes.data.filter(attr => attr.status !== \"Failure\" && attr.message !== \"Max Attributes allowed limit reached\");\r\n if (showSystemAttributes) {\r\n const systemAttributes = allAttributes.filter(attr => attr.isSystemAttribute);\r\n newData = data.filter(attr => !attr.isSystemAttribute);\r\n newData.push(...attributesToAdd);\r\n newData.push(...systemAttributes);\r\n } else {\r\n newData = [...data, ...attributesToAdd].sort((a, b) => a.order - b.order);\r\n }\r\n allAttributes.push(...attributesToAdd);\r\n if (failureResponses.length > 0) {\r\n this.toggleUpgradeDailog();\r\n }\r\n this.setState({\r\n allAttributes,\r\n data: newData,\r\n }, () => {\r\n if (attributes.data.length > 0 && attributes.data[0] && attributes.data[0]._id) {\r\n this.rowClick(attributes.data[0]._id);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default withTranslation([\r\n \"attribute/common\",\r\n \"attribute/attribute_type\",\r\n \"attribute/create_dialog\"\r\n], {\r\n withRef: true\r\n})(AttributeComponent);\r\n","import React from \"react\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport Display from \"../Display/Display\";\r\nimport AttributeComponent from \"./AttributeComponent\";\r\nimport { PageContainer, Content, Header } from \"../Drawer/PageContainer\";\r\nimport { CheckForInternalUser } from \"../Helpers/miscellaneous\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { updateNode } from \"../Helpers/Nodes\";\r\nimport { ATTRIBUTE_PLURAL_LABEL } from \"../Helpers/Labels/AttributeLabel\";\r\nimport { PageContextProvider } from \"../../Context/Display/Pages/PagesContext\";\r\nimport { PropStoreProvider } from \"../../Context/PropStore/PropStoreContext\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nclass AttributesComponents extends React.Component {\r\n\r\n static contextType = MsalContext\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showOnBoardingTooltip: false,\r\n selectedId: null,\r\n show: false,\r\n isInternalUser: false,\r\n Propertyselected: this.props.selectedTab,\r\n entityId: this.props.entity._id,\r\n loading: true,\r\n tabs: {\r\n atrtibute: true,\r\n displayConfig: false,\r\n },\r\n showDeleteAction: false,\r\n headerText: [\r\n {\r\n headerText: `${ATTRIBUTE_PLURAL_LABEL} of `,\r\n },\r\n {\r\n headerText: \"Pages of\",\r\n },\r\n ]\r\n };\r\n this.gridRef = React.createRef();\r\n }\r\n\r\n componentDidMount = async () => {\r\n let { tabs } = this.state;\r\n tabs.displayConfig = this.props.project.developerMode;\r\n let isInternalUser = CheckForInternalUser(this.props.user.email)\r\n this.setState({\r\n showOnBoardingTooltip: this.props.user.entityTooltipFlow,\r\n isInternalUser: isInternalUser,\r\n tabs: tabs,\r\n });\r\n if (this.props.tReady) {\r\n this.updateTranslations();\r\n }\r\n };\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (this.props.tReady && this.props.tReady !== prevProps.tReady) {\r\n this.updateTranslations();\r\n }\r\n }\r\n\r\n updateTranslations = () => {\r\n this.setState({\r\n headerText: [\r\n {\r\n headerText: this.props.t(\"header.properties\"),\r\n },\r\n {\r\n headerText: this.props.t(\"header.pages\"),\r\n },\r\n ]\r\n });\r\n }\r\n\r\n handlePropertySelect = (e) => {\r\n this.setState({ Propertyselected: e.selected }, () => {\r\n this.setState({ redirect: !this.props.isAccessedFromWorkspace });\r\n });\r\n };\r\n\r\n goToEntity = (e) => {\r\n sessionStorage.setItem(\"selectedEntityId\", this.props.entity.sysName);\r\n this.setState({\r\n redirectToEntity: true,\r\n });\r\n };\r\n\r\n showAction = (action) => {\r\n this.setState({\r\n show: action,\r\n });\r\n };\r\n\r\n toggleOnBoardingTooltip = () => {\r\n updateNode(\"User\", this.props.user._id, {\r\n entityTooltipFlow: \"false\"\r\n })\r\n this.setState({\r\n showOnBoardingTooltip: false\r\n })\r\n this.props.updateUser({\r\n entityTooltipFlow: \"false\"\r\n })\r\n }\r\n\r\n render() {\r\n let context = this.context;\r\n\r\n if (this.state.redirect) {\r\n let url = `/${this.props.organization.orgName}/${this.props.project.name}/Entities/${this.props.entity.sysName}/`;\r\n\r\n if (this.state.Propertyselected === 0) {\r\n url += \"Attributes\";\r\n } else if (this.state.Propertyselected === 1) {\r\n url += \"Display\";\r\n } else {\r\n url += \"Visualize\";\r\n }\r\n\r\n this.setState({ redirect: false });\r\n\r\n return ;\r\n }\r\n\r\n if (this.state.redirectToEntity) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {/* {\r\n this.state.showOnBoardingTooltip &&\r\n \r\n } */}\r\n \r\n
    \r\n this.gridRef.current.addNew()}\r\n actionDisabled={this.state.loading}\r\n action3Text={this.props.t(\"header.buttons.select_property_template\")}\r\n action3Clicked={() => this.gridRef.current.showSelectAttributeTemplate()}\r\n action4Text={this.props.t(\"header.buttons.select_shared_property\")}\r\n action4Clicked={() => this.gridRef.current.showSelectSharedProperty()}\r\n action3Disabled={this.state.loading}\r\n action2Disabled={this.state.loading}\r\n action2Text={this.props.showAIButtons && this.props.t(\"header.buttons.alice_ai\")}\r\n action2Icon={this.props.showAIButtons && \"fas fa-lightbulb-on\"}\r\n action2Clicked={this.props.showAIButtons ? this.gridRef?.current?.toggleAliceGPTDialog : null}\r\n allowBackButton={true}\r\n backButtonText={this.props.t(\"header.buttons.back_to_objects\")}\r\n backButtonClicked={this.goback}\r\n showHelpCenter={(this.state.isInternalUser && this.props.project.developerMode) ? true : false}\r\n showDeleteAction={this.state.showDeleteAction}\r\n deleteActionText={this.props.t(\"header.buttons.bulk_delete\")}\r\n deleteActionClicked={() => this.gridRef.current.toggleBulkDeleteDialog()}\r\n user={this.props.user}\r\n helpCenterFor={this.state.Propertyselected === 0 ? \"Properties\" : \"Pages\"}\r\n >\r\n
    \r\n \r\n
    \r\n {this.props.project.developerMode && this.state.isInternalUser ?\r\n \r\n \r\n this.setState({ showDeleteAction: value })}\r\n showAction={this.showAction}\r\n selectedSysName={this.props.selectedSysName}\r\n onLoadingComplete={() => this.setState({ loading: false })}\r\n isUserEntity={this.props.isUserEntity}\r\n isAccessedFromWorkspace={this.props.isAccessedFromWorkspace}\r\n />\r\n \r\n {this.state.tabs.displayConfig && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n :\r\n this.setState({ showDeleteAction: value })}\r\n selectedSysName={this.props.selectedSysName}\r\n onLoadingComplete={() => this.setState({ loading: false })}\r\n isUserEntity={this.props.isUserEntity}\r\n isAccessedFromWorkspace={this.props.isAccessedFromWorkspace}\r\n project={this.props.project}\r\n organization={this.props.organization}\r\n developerMode={this.state.tabs.displayConfig}\r\n />\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n\r\n componentWillUnmount = () => {\r\n sessionStorage.setItem(\"eid\", this.props.entity._id);\r\n };\r\n\r\n goback = () => {\r\n if (this.props.isAccessedFromWorkspace) {\r\n this.props.mutators.setSelectedEntity(null);\r\n } else {\r\n this.setState({\r\n redirectToEntity: true,\r\n });\r\n }\r\n };\r\n}\r\n\r\nexport default withTranslation(\"attribute/common\")(AttributesComponents);\r\n","import React from \"react\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { call } from \"../Helpers/Nodes\";\r\nimport IconPicker from \"../Shared/IconPicker/IconPicker\";\r\nimport EditorActions from \"../Shared/Edit/EditorActions\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport pluralize from \"pluralize\";\r\nimport { updateEntityAndConfiguration } from \"../../API/Entity/Entity\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport { Tooltip } from \"@progress/kendo-react-tooltip\";\r\nimport { ENTITY_LABEL } from \"../Helpers/Labels/EntityLabel\";\r\nimport { isLibraryOrganization } from \"../Helpers/Organization/Organization\";\r\nimport { removeSpecialCharacters } from \"./utils\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport { toggleAttributeRequiredInAlice, updateAllAttributeFormulaOnEntityNameChange } from \"../../API/Attribute/Attribute\";\r\nimport GenericTranslationDialog from \"./GenericTranslationDialog\";\r\nclass EntityPropertyPanel extends React.Component {\r\n AllowedLimit = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\"];\r\n countries = [\r\n \".jpg\",\r\n \".jpeg\",\r\n \".png\",\r\n \".bmp\",\r\n \".gif\",\r\n \".txt\",\r\n \".pdf\",\r\n \".doc\",\r\n \".docx\",\r\n \".ppt\",\r\n \".pptx\",\r\n \".xls\",\r\n \".xlsx\",\r\n \".csv\",\r\n \".mp3\",\r\n \".m4a\",\r\n \".wav\",\r\n \".mp4\",\r\n \".m4v\",\r\n \".mpg\",\r\n \".mpeg\",\r\n \".wmv\",\r\n \".mov\",\r\n \".avi\",\r\n \".swf\",\r\n \".xml\",\r\n \".zip\",\r\n \".html\",\r\n \".json\",\r\n ];\r\n defaultData;\r\n isAccessedInLibrary = isLibraryOrganization(this.props.organizationId);\r\n isUserProfileEntity = false;\r\n t = this.props.t;\r\n i18n = this.props.i18n;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n _id: \"\",\r\n name: \"\",\r\n label: \"\",\r\n pluralLabel: \"\",\r\n description: \"\",\r\n Icon: \"\",\r\n allowAttachement: true,\r\n allowMultiple: true,\r\n allowSize: this.AllowedLimit[0],\r\n allowTypes: [],\r\n disabled: true,\r\n showAdditionalFields: false,\r\n tooltip: \"\",\r\n nameError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n labelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n pluralLabelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n descriptionError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n showTooltip: false,\r\n tooltipAnchor: {},\r\n data: this.countries.slice(),\r\n loading: false,\r\n showLabelTranslationDialog: false,\r\n languages: {}\r\n };\r\n this.tooltipAnchor = React.createRef();\r\n }\r\n\r\n componentDidUpdate = (props, state) => {\r\n if (props.entityProperties._id !== this.props.entityProperties._id) {\r\n this.isUserProfileEntity = this.props.entityProperties.isUserEntity;\r\n var AllowTypes =\r\n this.props.entityProperties.allowTypes === undefined\r\n ? []\r\n : this.props.entityProperties.allowTypes.split(\",\");\r\n const showAdditionalFields = this.getShowMoreValueById(\r\n this.props.entityProperties._id\r\n );\r\n let data = {\r\n name: this.props.entityProperties.name,\r\n label: this.props.entityProperties.label,\r\n description: this.props.entityProperties.description,\r\n Icon: this.props.entityProperties.Icon,\r\n pluralLabel: this.props.entityProperties.pluralLabel,\r\n _id: this.props.entityProperties._id,\r\n tooltip: this.props.entityProperties.tooltip,\r\n allowAttachement: this.props.entityProperties.allowAttachement === true ? true : false,\r\n allowMultiple: this.props.entityProperties.allowMultiple === true ? true : false,\r\n allowSize: this.props.entityProperties.allowSize,\r\n allowTypes: AllowTypes,\r\n allowedTypesString: this.props.entityProperties.allowTypes,\r\n alwaysRecommended: this.props.entityProperties.alwaysRecommended === \"true\",\r\n requiredInAlice: this.props.entityProperties.requiredInAlice === \"true\",\r\n disabled: true,\r\n nameError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n labelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n pluralLabelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n descriptionError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n languages: this.props.entityProperties.languages,\r\n showAdditionalFields\r\n };\r\n this.defaultData = data;\r\n this.setState(data);\r\n }\r\n\r\n if (this.state.disabled !== state.disabled && this.props.mutators) {\r\n this.props.mutators.setFormsWithChanges(prevValue => ({\r\n ...prevValue,\r\n entityForm: !this.state.disabled\r\n }))\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n this.isUserProfileEntity = this.props.entityProperties.isUserEntity;\r\n var AllowTypes = this.props.entityProperties.allowTypes === undefined ? [] : this.props.entityProperties.allowTypes.split(\",\");\r\n const showAdditionalFields = this.getShowMoreValueById(this.props.entityProperties._id);\r\n let data = {\r\n name: this.props.entityProperties.name,\r\n label: this.props.entityProperties.label,\r\n description: this.props.entityProperties.description,\r\n Icon: this.props.entityProperties.Icon,\r\n pluralLabel: this.props.entityProperties.pluralLabel,\r\n // inherits: this.props.EntityData.find(x => x.name === this.props.entityProperties.inherits) || this.props.entityProperties.inherits,\r\n _id: this.props.entityProperties._id,\r\n tooltip: this.props.entityProperties.tooltip,\r\n allowAttachement: this.props.entityProperties.allowAttachement === true ? true : false,\r\n allowMultiple: this.props.entityProperties.allowMultiple === true ? true : false,\r\n allowSize: this.props.entityProperties.allowSize,\r\n alwaysRecommended: this.props.entityProperties.alwaysRecommended === \"true\",\r\n requiredInAlice: this.props.entityProperties.requiredInAlice === \"true\",\r\n allowTypes: AllowTypes,\r\n disabled: true,\r\n allowedTypesString: this.props.entityProperties.allowTypes,\r\n showAdditionalFields,\r\n nameError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n labelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n pluralLabelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n descriptionError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n languages: this.props.entityProperties.languages\r\n };\r\n if (this.props.mutators) {\r\n this.props.mutators.setFormSaveFunction(() => this.update);\r\n }\r\n this.defaultData = data;\r\n this.setState(data);\r\n }\r\n\r\n getShowMoreValueById = (_id) => {\r\n const entityConfigLocalStorageString = localStorage.getItem(\"entity-config\");\r\n if (entityConfigLocalStorageString === null) {\r\n return false;\r\n }\r\n const entityConfig = JSON.parse(entityConfigLocalStorageString);\r\n if (entityConfig[_id] === undefined) {\r\n return false;\r\n }\r\n return entityConfig[_id][\"showMoreEntityProperties\"];\r\n }\r\n\r\n setDisabled = () => {\r\n if (\r\n !this.state.labelError.isValid ||\r\n !this.state.descriptionError.isValid ||\r\n !this.state.pluralLabelError.isValid ||\r\n this.state.name.trim().match(/^\\d/) ||\r\n !this.state.nameError.isValid\r\n ) {\r\n this.setState({ disabled: true });\r\n return;\r\n }\r\n const isLangauagesChanged = this.isLanguagesTraslationChanged();\r\n if (\r\n this.defaultData.name !== this.state.name ||\r\n this.defaultData.label !== this.state.label ||\r\n this.defaultData.description !== this.state.description ||\r\n this.defaultData.Icon !== this.state.Icon ||\r\n this.defaultData.pluralLabel !== this.state.pluralLabel ||\r\n this.defaultData.allowAttachement !== this.state.allowAttachement ||\r\n isLangauagesChanged ||\r\n (\r\n this.isAccessedInLibrary &&\r\n this.props.isInternalUser &&\r\n (\r\n this.state.alwaysRecommended !== this.defaultData.alwaysRecommended ||\r\n this.state.requiredInAlice !== this.defaultData.requiredInAlice\r\n )\r\n )\r\n ) {\r\n this.setState({ disabled: false });\r\n } else {\r\n this.setState({ disabled: true });\r\n }\r\n };\r\n\r\n isLanguagesTraslationChanged = () => {\r\n let isChanged = false;\r\n for (let key in this.state.languages) {\r\n if (\r\n this.state.languages[key].label !== this.defaultData.languages[key].label ||\r\n this.state.languages[key].pluralLabel !== this.defaultData.languages[key].pluralLabel\r\n ) {\r\n isChanged = true;\r\n break;\r\n }\r\n }\r\n return isChanged;\r\n }\r\n\r\n setNameValue = (e) => {\r\n let { nameError } = this.state;\r\n let entityName = e.target.value.trim()\r\n if (entityName === \"\") {\r\n nameError.isValid = false\r\n nameError.message = this.t(\"entity.property_panel.errors.name_required\")\r\n } else if (entityName.match(/^\\d/)) {\r\n nameError.isValid = false\r\n nameError.message = this.t(\"entity.property_panel.errors.name_can_not_start_with_number\")\r\n } else if (entityName.trim().length > 30) {\r\n nameError.isValid = false\r\n nameError.message = this.t(\"entity.property_panel.errors.name_length_exceeded\")\r\n } else {\r\n let isNameValueExit = this.props.EntityData.find((x) => (\r\n removeSpecialCharacters(x.name.trim().toLowerCase()) ===\r\n removeSpecialCharacters(entityName.toLowerCase())\r\n ))\r\n let exist = isNameValueExit === undefined ? \"\" : isNameValueExit.name;\r\n if (exist !== \"\" && exist !== this.defaultData.name) {\r\n nameError.isValid = false\r\n nameError.message = this.t(\"entity.property_panel.errors.name_exists\")\r\n } else {\r\n nameError.isValid = true\r\n nameError.message = \"\"\r\n }\r\n }\r\n this.setState({\r\n name: e.target.value,\r\n nameError: nameError,\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n }\r\n\r\n setLabelValue = (e) => {\r\n let { labelError } = this.state;\r\n if (e.target.value.trim() === \"\") {\r\n labelError.isValid = false\r\n labelError.message = this.t(\"entity.property_panel.errors.label_required\")\r\n } else {\r\n labelError.isValid = true\r\n labelError.message = \"\"\r\n }\r\n this.setState({\r\n labelError: labelError,\r\n label: e.target.value,\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n }\r\n\r\n setLabelTranslation = (data) => {\r\n this.setState({\r\n showLabelTranslationDialog: false,\r\n languages: data\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n }\r\n\r\n setPluralLabelValue = (e) => {\r\n let { pluralLabelError } = this.state\r\n if (e.target.value.trim() === \"\") {\r\n pluralLabelError.isValid = false\r\n pluralLabelError.message = this.t(\"entity.property_panel.errors.plural_label_required\")\r\n } else {\r\n pluralLabelError.isValid = true\r\n pluralLabelError.message = \"\"\r\n }\r\n this.setState({\r\n pluralLabel: e.target.value,\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n setDescriptionValue = (e) => {\r\n this.setState(\r\n {\r\n description: e.target.value\r\n },\r\n () => {\r\n this.setDisabled();\r\n }\r\n );\r\n };\r\n\r\n setAllowAttachment = (e) => {\r\n this.setState({\r\n allowAttachement: e.value,\r\n allowSize: this.AllowedLimit[0],\r\n allowMultiple: e.value,\r\n }, () => {\r\n this.setDisabled();\r\n })\r\n };\r\n\r\n handleAllowMultiple = (e) => {\r\n this.setState(\r\n {\r\n allowMultiple: e.value,\r\n },\r\n () => {\r\n this.setDisabled();\r\n }\r\n );\r\n };\r\n\r\n handleAllowSize = (e) => {\r\n this.setState(\r\n {\r\n allowSize: e.target.value,\r\n },\r\n () => {\r\n this.setDisabled();\r\n }\r\n );\r\n };\r\n\r\n filterChange = (event) => {\r\n const filter = event.filter;\r\n const allData = this.countries.slice();\r\n const newData =\r\n filter.value.length > 3 ? filterBy(allData, filter) : allData;\r\n this.setState({\r\n data: newData,\r\n });\r\n };\r\n\r\n handleAttachmentTypes = (e) => {\r\n const values = e.target.value;\r\n const lastItem = values[values.length - 1];\r\n\r\n if (lastItem) {\r\n values.pop();\r\n const sameItem = values.find((value) => value === lastItem);\r\n if (sameItem === undefined && lastItem.length <= 60) {\r\n values.push(lastItem);\r\n }\r\n if (lastItem.length > 60) {\r\n this.setState({ showTagError: true });\r\n } else {\r\n this.setState({ showTagError: false });\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n allowTypes: values,\r\n },\r\n () => {\r\n this.setDisabled();\r\n }\r\n );\r\n };\r\n\r\n setIcon = (props, value) => {\r\n this.setState(\r\n {\r\n Icon: props,\r\n },\r\n () => {\r\n this.setDisabled();\r\n }\r\n );\r\n };\r\n\r\n setTooltip = (e) => {\r\n this.setState({ tooltip: e.target.value }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n getDisabled = () => {\r\n return this.state.disabled;\r\n };\r\n\r\n hasCharacterSpecial(str) {\r\n const regex = /[0-9!@#$%^&*(),.?\":{}|<>]/;\r\n return regex.test(str);\r\n }\r\n\r\n handleRecommendationPropertyChange = (e) => {\r\n const { name } = e.target;\r\n const { value } = e;\r\n this.setState({\r\n [name]: value,\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n update = async (e, callback = undefined) => {\r\n if (e && e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n try {\r\n this.setState({\r\n disabled: true,\r\n loading: true\r\n })\r\n let id = this.state._id;\r\n var AllowTypes = \"\";\r\n this.state.allowTypes.forEach((element) => { AllowTypes = AllowTypes + \",\" + element });\r\n\r\n AllowTypes = AllowTypes.substr(1);\r\n if (this.defaultData.allowAttachement && !this.state.allowAttachement) {\r\n call(\"removeAttachment\", \"POST\").with({ id: id });\r\n }\r\n const entityNameChanged = this.defaultData.name !== this.state.name;\r\n const labelChanged = this.defaultData.label !== this.state.label;\r\n const pluralLabelChanged = this.defaultData.pluralLabel !== this.state.pluralLabel;\r\n\r\n let label = this.state.label.trim();\r\n let pluralLabel = this.state.pluralLabel;\r\n if (!labelChanged && entityNameChanged) {\r\n label = this.state.name.trim();\r\n }\r\n if (!pluralLabelChanged) {\r\n if (this.hasCharacterSpecial(label)) {\r\n pluralLabel = label\r\n } else {\r\n pluralLabel = pluralize(label);\r\n }\r\n }\r\n const updateEntityResponse = await updateEntityAndConfiguration(id, {\r\n name: this.state.name.trim(),\r\n allowAttachement: this.state.allowAttachement,\r\n projectId: this.props.project._id,\r\n allowMultiple: this.state.allowMultiple,\r\n allowSize: this.state.allowSize,\r\n pluralLabel: pluralLabel.trim(),\r\n allowTypes: AllowTypes,\r\n label: label.trim(),\r\n description: this.state.description.trim(),\r\n Icon: this.state.Icon,\r\n tooltip: this.state.tooltip,\r\n alwaysRecommended: this.state.alwaysRecommended,\r\n requiredInAlice: this.state.requiredInAlice,\r\n languages: this.state.languages\r\n });\r\n if (\r\n this.state.requiredInAlice === false &&\r\n this.defaultData.requiredInAlice === true\r\n ) {\r\n await toggleAttributeRequiredInAlice(id)\r\n }\r\n\r\n // to be done once attribute is implemented\r\n if (this.state.name !== this.props.entityProperties.name) {\r\n await this.updateAllFormulaByEntityChange();\r\n }\r\n\r\n var allowTypes = updateEntityResponse.data.entity.allowTypes === undefined\r\n ? []\r\n : updateEntityResponse.data.entity.allowTypes.split(\",\");\r\n let data = {\r\n name: updateEntityResponse.data.entity.name,\r\n label: updateEntityResponse.data.entity.label,\r\n description: updateEntityResponse.data.entity.description,\r\n Icon: updateEntityResponse.data.entity.Icon,\r\n pluralLabel: updateEntityResponse.data.entity.pluralLabel,\r\n _id: updateEntityResponse.data.entity._id,\r\n tooltip: updateEntityResponse.data.entity.tooltip,\r\n allowAttachement: updateEntityResponse.data.entity.allowAttachement === true ? true : false,\r\n allowMultiple: updateEntityResponse.data.entity.allowMultiple === true ? true : false,\r\n allowSize: updateEntityResponse.data.entity.allowSize,\r\n allowTypes: allowTypes,\r\n disabled: true,\r\n allowedTypesString: updateEntityResponse.data.entity.allowTypes,\r\n showAdditionalFields: this.state.showMoreEntityProperties,\r\n alwaysRecommended: updateEntityResponse.data.entity.alwaysRecommended,\r\n requiredInAlice: updateEntityResponse.data.entity.requiredInAlice,\r\n languages: updateEntityResponse.data.entity.languages\r\n };\r\n this.defaultData = data;\r\n this.setState(data);\r\n this.props.entityStateUpdater(id, updateEntityResponse.data.entity);\r\n this.setState({ loading: false })\r\n if (callback !== undefined) {\r\n callback();\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n if (this.props.mutators && this.props.mutators.setFormsWithChanges) {\r\n this.props.mutators.setFormsWithChanges(prevValue => ({\r\n ...prevValue,\r\n entityForm: false\r\n }));\r\n }\r\n }\r\n }\r\n\r\n updateAllFormulaByEntityChange = async () => {\r\n const response = await updateAllAttributeFormulaOnEntityNameChange({\r\n entityId: this.state._id,\r\n oldEntityName: this.props.entityProperties.name,\r\n newEntityName: this.state.name\r\n })\r\n this.setState({\r\n referenceAttr: Array.from(new Set(response.message)),\r\n referenceChecked: true\r\n });\r\n }\r\n\r\n setDefault = () => {\r\n this.setState({\r\n ...this.defaultData,\r\n nameError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n labelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n pluralLabelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n descriptionError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n disabled: true\r\n })\r\n };\r\n\r\n toggleFields = () => {\r\n this.syncChangeToLocalStorage(!this.state.showAdditionalFields);\r\n this.setState({\r\n showAdditionalFields: !this.state.showAdditionalFields,\r\n });\r\n };\r\n\r\n syncChangeToLocalStorage = (value) => {\r\n const { _id } = this.props.entityProperties;\r\n const entityConfigLocalStorageString =\r\n localStorage.getItem(\"entity-config\");\r\n const entityConfig =\r\n entityConfigLocalStorageString === null\r\n ? {}\r\n : JSON.parse(entityConfigLocalStorageString);\r\n if (entityConfig[_id] === undefined) {\r\n entityConfig[_id] = {};\r\n }\r\n entityConfig[_id][\"showMoreEntityProperties\"] = value;\r\n localStorage.setItem(\"entity-config\", JSON.stringify(entityConfig));\r\n };\r\n\r\n handleTooltip = (e) => {\r\n this.setState({\r\n showTooltip: !this.state.showTooltip,\r\n tooltipAnchor: e.target,\r\n });\r\n };\r\n\r\n hasErrors = (e) => {\r\n let errors = !this.state.disabled\r\n if (\r\n this.state.nameError.isValid === false ||\r\n this.state.labelError.isValid === false ||\r\n this.state.descriptionError.isValid === false ||\r\n this.state.pluralLabelError.isValid === false\r\n ) {\r\n errors = true\r\n }\r\n return errors\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {\r\n this.state.loading &&\r\n \r\n }\r\n
    \r\n
    \r\n { this.props.Delete(this.props.entityProperties._id); }}\r\n ShowMoreButtons={false}\r\n saving={this.state.loading}\r\n />\r\n
    \r\n \r\n <>\r\n
    \r\n {this.t(\"entity.property_panel.form.name_label\")}\r\n
    \r\n \r\n \r\n \r\n \r\n {this.t(\"entity.property_panel.form.label_label\")}\r\n
    \r\n \r\n \r\n\r\n \r\n \r\n this.setState({\r\n showLabelTranslationDialog: true\r\n })}\r\n className=\"form-label d-inline-block cursor-pointer\"\r\n title={`Multiple languages ${ENTITY_LABEL} label displayed in your application`}>\r\n \r\n {this.t(\"entity.property_panel.form.label_translation_label\")}\r\n \r\n
    \r\n \r\n {\r\n this.state.showLabelTranslationDialog &&\r\n this.setState({\r\n showLabelTranslationDialog: false\r\n })}\r\n onSave={this.setLabelTranslation}\r\n languages={this.state.languages}\r\n project={this.props.project}\r\n fields={[\"label\", \"pluralLabel\"]}\r\n type={this.t(\"entity.property_panel.header.title\").slice(0, -1)}\r\n />\r\n }\r\n \r\n \r\n {this.t(\"entity.property_panel.form.icon_label\")}\r\n \r\n \r\n\r\n \r\n\r\n
    \r\n {this.t(\"entity.property_panel.form.description_label\")}\r\n
    \r\n \r\n \r\n {/*
    \r\n \r\n
    */}\r\n\r\n {/* {this.state.showAdditionalFields && ( */}\r\n
    \r\n
    \r\n \r\n \r\n {this.t(\"entity.property_panel.form.plural_label_label\")}\r\n
    \r\n \r\n \r\n\r\n \r\n
    \r\n \r\n\r\n {\r\n this.isAccessedInLibrary &&\r\n this.props.isInternalUser &&\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n {/* )}\r\n this.toggleFields(o)}\r\n > */}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(EntityPropertyPanel);","import React, { Component } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport IconPicker, { icons } from \"../Shared/IconPicker/IconPicker\";\r\nimport Pluralize from \"pluralize\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\"\r\nimport { removeSpecialCharacters } from \"./utils\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport { createEntityConfigurations } from \"../../API/Entity/Entity\";\r\n\r\n\r\nclass CreateEntityDialog extends Component {\r\n\r\n\tcreateBtn = React.createRef();\r\n\tcreateAndNewBtn = React.createRef();\r\n\tEntityInput = React.createRef();\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tformFields: {\r\n\t\t\t\tname: \"\",\r\n\t\t\t\ticon: \"\",\r\n\t\t\t},\r\n\t\t\terrors: {\r\n\t\t\t\tisNameValid: true,\r\n\t\t\t\tnameError: \"\",\r\n\t\t\t},\r\n\t\t\tcreatingEntity: false,\r\n\t\t\tcurrentHoveredElement: {},\r\n\t\t\tshowTooltip: false,\r\n\t\t};\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { visible } = this.props;\r\n\r\n\t\tif (!visible) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t this.toggleDialog(false)}>\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.props.t(\"entity.create_dialog.icon_label\")}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.creatingEntity && (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{this.props.createandNew && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.state.creatingEntity &&\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tconst icon = this.getNextIcon();\r\n\t\tthis.setState({ icon });\r\n\t}\r\n\r\n\tcomponentDidUpdate(props) {\r\n\t\tif (\r\n\t\t\tprops.visible !== this.props.visible ||\r\n\t\t\tprops.entities.length !== this.props.entities.length\r\n\t\t) {\r\n\t\t\tconst name = \"\";\r\n\t\t\tconst icon = this.getNextIcon();\r\n\t\t\tthis.setState({\r\n\t\t\t\tformFields: { name, icon }\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextIcon = () => {\r\n\t\tconst { entities } = this.props;\r\n\t\tconst newIcon = icons[entities.length % icons.length];\r\n\t\treturn newIcon;\r\n\t};\r\n\r\n\treset = () => {\r\n\t\tthis.setState({\r\n\t\t\tformFields: {\r\n\t\t\t\tname: \"\",\r\n\t\t\t\ticon: \"\",\r\n\t\t\t},\r\n\t\t\terrors: {\r\n\t\t\t\tisNameValid: true,\r\n\t\t\t\tnameError: \"\",\r\n\t\t\t},\r\n\t\t\tcreatingEntity: false,\r\n\t\t});\r\n\t};\r\n\r\n\ttoggleDialog = (showUpgradeDailog) => {\r\n\t\tthis.reset();\r\n\t\tthis.props.toggle(showUpgradeDailog);\r\n\t};\r\n\r\n\thandleIconChange = (icon) => {\r\n\t\tconst { formFields } = this.state;\r\n\t\tformFields.icon = icon;\r\n\t\tthis.setState({\r\n\t\t\tformFields,\r\n\t\t});\r\n\t};\r\n\r\n\thandleNameChange = (e) => {\r\n\t\tconst { formFields } = this.state;\r\n\t\tconst { value } = e.target;\r\n\t\tformFields.name = value;\r\n\t\tconst errors = this.validateForm(formFields);\r\n\t\tthis.setState({\r\n\t\t\tformFields,\r\n\t\t\terrors,\r\n\t\t});\r\n\t};\r\n\r\n\tvalidateForm = (formFields) => {\r\n\t\tconst errors = {\r\n\t\t\tisNameValid: true,\r\n\t\t\tnameError: \"\",\r\n\t\t};\r\n\r\n\t\tconst { entities } = this.props;\r\n\r\n\t\tconst name = removeSpecialCharacters(formFields.name.trim().toLowerCase());\r\n\t\tdebugger\r\n\t\tconst entityNameInUse = entities.findIndex((entity) => (\r\n\t\t\tremoveSpecialCharacters(entity.name.trim().toLowerCase()) === removeSpecialCharacters(formFields.name.trim().toLowerCase())\r\n\t\t)) > -1;\r\n\r\n\t\tif (formFields.name.trim() === \"\") {\r\n\t\t\terrors.isNameValid = false\r\n\t\t\terrors.nameError = this.props.t(\"entity.create_dialog.errors.name_required\")\r\n\t\t} else if (formFields.name.trim().match(/^\\d/)) {\r\n\t\t\terrors.isNameValid = false\r\n\t\t\terrors.nameError = this.props.t(\"entity.create_dialog.errors.name_can_not_start_with_number\")\r\n\t\t} else if (entityNameInUse) {\r\n\t\t\terrors.isNameValid = false;\r\n\t\t\terrors.nameError = this.props.t(\"entity.create_dialog.errors.name_exists\");\r\n\t\t} else if (formFields.name.trim().length > 30) {\r\n\t\t\terrors.isNameValid = false;\r\n\t\t\terrors.nameError = this.props.t(\"entity.create_dialog.errors.name_length_exceeded\");\r\n\t\t}\r\n\r\n\t\treturn errors;\r\n\t};\r\n\r\n\tshouldCreateBeDisabled = () => {\r\n\t\tconst { name } = this.state.formFields;\r\n\t\tconst { errors } = this.state;\r\n\t\treturn name.trim() === \"\" || !errors.isNameValid;\r\n\t};\r\n\r\n\tgetOrder = () => {\r\n\t\tif (this.props.entities.length === 0) {\r\n\t\t\treturn \"10000000000\";\r\n\t\t}\r\n\t\tconst order = parseInt(this.props.entities[this.props.entities.length - 1].order) + 10000000000;\r\n\t\treturn String(order);\r\n\t};\r\n\r\n\tisStringInEnglish = (str) => {\r\n\t\tconst isEnglish = /^[A-Za-z\\s]+$/.test(str);\r\n\t\treturn isEnglish;\r\n\t};\r\n\r\n\tgenerateSystemName = () => {\r\n\t\tconst { entities } = this.props;\r\n\t\tconst { name } = this.state.formFields;\r\n\t\tlet initialName = name.replace(/[^a-zA-Z]/g, \"\").toLowerCase();\r\n\t\tif (initialName === \"\") {\r\n\t\t\tinitialName = \"entity\";\r\n\t\t}\r\n\t\tconst isSysNameInEnglish = this.isStringInEnglish(initialName);\r\n\t\tif (!isSysNameInEnglish) {\r\n\t\t\treturn \"entity\";\r\n\t\t} else {\r\n\t\t\tlet systemName = initialName;\r\n\t\t\tlet counter = 0;\r\n\t\t\tfor (let i = 0; i < entities.length; i++) {\r\n\t\t\t\tif (entities[i].sysName === systemName) {\r\n\t\t\t\t\tcounter++;\r\n\t\t\t\t\tsystemName = initialName + String(counter);\r\n\t\t\t\t\ti = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn systemName;\r\n\t\t}\r\n\t};\r\n\r\n\tcreateEntity = async (e, isCreateandNew = false) => {\r\n\t\te.preventDefault();\r\n\t\tconst { createBtn, createAndNewBtn } = this;\r\n\t\tthis.setState({\r\n\t\t\tcreatingEntity: true,\r\n\t\t});\r\n\r\n\t\tcreateBtn.current.disabled = true;\r\n\t\tif (this.props.createandNew) createAndNewBtn.current.disabled = true;\r\n\r\n\t\tconst { projectId, subscriptionId } = this.props;\r\n\r\n\t\tconst { formFields } = this.state;\r\n\t\tformFields.name = formFields.name.trim()\r\n\t\tconst order = this.getOrder();\r\n\t\tconst systemName = this.generateSystemName();\r\n\r\n\t\tconst entityProperties = {\r\n\t\t\tname: formFields.name,\r\n\t\t\tIcon: formFields.icon,\r\n\t\t\torder,\r\n\t\t\tsysName: systemName,\r\n\t\t\tIconColor: \"#000\",\r\n\t\t\tdescription: \"\",\r\n\t\t\tlabel: formFields.name,\r\n\t\t\tpluralLabel: formFields.name.match(\".*\\\\d.*\") ? formFields.name : Pluralize.plural(formFields.name),\r\n\t\t\ttooltip: formFields.name,\r\n\t\t\tallowAttachement: true,\r\n\t\t\tallowMultiple: true,\r\n\t\t\tlanguages: {},\r\n\t\t\tallowSize: 5,\r\n\t\t\tallowTypes: \".doc,.jpg,.pdf,.zip,.json\",\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconsole.time(\"Create entity: \");\r\n\t\t\tconst entity = await createEntityConfigurations(projectId, {\r\n\t\t\t\tsubscriptionId: subscriptionId,\r\n\t\t\t\tproperties: entityProperties\r\n\t\t\t});\r\n\t\t\tif (entity.status && entity.status === \"Failure\") {\r\n\t\t\t\tthis.toggleDialog(true)\r\n\t\t\t} else {\r\n\t\t\t\tentity.indexId = this.props.entities.length + 1;\r\n\t\t\t\tthis.reset();\r\n\t\t\t\tthis.props.onCreate(entity, isCreateandNew);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t};\r\n\r\n\tcreateEntityAndReset = async (e) => {\r\n\t\ttry {\r\n\t\t\te.preventDefault();\r\n\t\t\tawait this.createEntity(e, true);\r\n\t\t\tthis.EntityInput.current.focus();\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default withTranslation()(CreateEntityDialog);\r\n","import React, { useCallback, useEffect, useState } from 'react';\r\nimport { getAliceRecommendedAttributes } from '../../../API/AliceGPT/AliceGPT';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport InnerLoader from '../../Shared/Loader/InnerLoader';\r\nimport { getDatalakeImageUrl } from '../../Helpers/DateLakeStorage';\r\nimport { ATTRIBUTE_PLURAL_LABEL } from '../../Helpers/Labels/AttributeLabel';\r\nimport { typeText } from '../../Attributes/Fields/AttributeTypeField';\r\nimport { convertTypeToDesignerType } from '../../Helpers/Recommendation/AliceGPT';\r\nimport EditPicklistDialog from '../../Dashboard/Project/AliceGPT/EditPicklistDialog';\r\nimport FailedToLoadError from '../../Shared/Recommendation/Error/FailedToLoadError';\r\nimport AttributeTypeDropdown, { recommendationAttributeType } from '../../Shared/Recommendation/AttributeTypeDropdown';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { OPENAI_MODEL } from '../../../Constants/OpenAI';\r\n\r\nfunction AliceRecommendedAttributes({\r\n entity, projectDomain, projectDescription, projectLanguage,\r\n onAttributesLoaded, onSelect, onToggleAllAttributes, onPicklistUpdate, onAttributeTypeChange\r\n}) {\r\n\r\n const { t } = useTranslation();\r\n const { t: getAttributeTypeTranslation } = useTranslation(['common/attribute_type_dropdown'], { useSuspense: false });\r\n\r\n const [loading, setLoading] = useState({});\r\n const [fetchingMore, setFetchingMore] = useState({});\r\n const [picklistAttributeToEdit, setPicklistAttributeToEdit] = useState(null);\r\n const [showShowMoreLink, setShowShowMoreLink] = useState(true);\r\n const [editAttributeTypeIndex, setEditAttributeTypeIndex] = useState(-1);\r\n\r\n useEffect(() => {\r\n setShowShowMoreLink(true);\r\n setEditAttributeTypeIndex(-1)\r\n }, [entity.name])\r\n\r\n async function getAttributes() {\r\n const entityName = entity.name;\r\n try {\r\n setLoading(prevValue => ({ ...prevValue, [entityName]: true }));\r\n const response = await getAliceRecommendedAttributes(entityName, OPENAI_MODEL, [], projectDomain, projectDescription, projectLanguage);\r\n const attributes = response.map(attributesToStateArrayElement);\r\n onAttributesLoaded(entityName, attributes);\r\n } catch (error) {\r\n console.log(error);\r\n } finally {\r\n setLoading(prevValue => ({ ...prevValue, [entityName]: false }));\r\n }\r\n }\r\n\r\n function attributesToStateArrayElement(attribute) {\r\n return {\r\n name: attribute[0],\r\n type: convertTypeToDesignerType(attribute[1]),\r\n picklist: attribute[2],\r\n required: attribute[3],\r\n unique: attribute[4],\r\n checked: false,\r\n selected: false\r\n }\r\n }\r\n\r\n function toggleAttributeCheckbox(attributeIndex) {\r\n onSelect(entity.name, attributeIndex);\r\n }\r\n\r\n async function handleShowMore() {\r\n const entityName = entity.name;\r\n try {\r\n setFetchingMore(prevValue => ({ ...prevValue, [entityName]: true }));\r\n let attributeNamesToSkip = entity.attributes.map(attribute => attribute.name);\r\n attributeNamesToSkip = attributeNamesToSkip.join(\",\");\r\n const response = await getAliceRecommendedAttributes(\r\n entityName, OPENAI_MODEL, attributeNamesToSkip, projectDomain, projectDescription,\r\n projectLanguage\r\n );\r\n const attributes = response.map(attributesToStateArrayElement).filter(attr => {\r\n return !entity.attributes.some(attribute => attribute.name === attr.name);\r\n });\r\n const allAttributes = entity.attributes.concat(attributes);\r\n onAttributesLoaded(entityName, allAttributes);\r\n if (allAttributes.length === entity.attributes.length) {\r\n setShowShowMoreLink(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n } finally {\r\n setFetchingMore(prevValue => ({ ...prevValue, [entityName]: false }));\r\n }\r\n }\r\n\r\n function handleEditPicklistClick(attribute) {\r\n setPicklistAttributeToEdit(attribute);\r\n }\r\n\r\n function handlePicklistUpdate(value) {\r\n onPicklistUpdate(entity.name, picklistAttributeToEdit.name, value);\r\n handleEditPicklistClick(null);\r\n }\r\n\r\n function handleAttributeTypeClick(event, index) {\r\n setEditAttributeTypeIndex(index);\r\n }\r\n\r\n function handleAttributeTypeChange(event, index) {\r\n const attribute = entity.attributes[index];\r\n onAttributeTypeChange(entity.name, attribute.name, event.target.value.value)\r\n clearEditAttributeIndex()\r\n }\r\n\r\n function clearEditAttributeIndex() {\r\n setEditAttributeTypeIndex(-1);\r\n }\r\n\r\n function getAttributeType(attributeType) {\r\n const type = recommendationAttributeType.find((item) => item.value === attributeType);\r\n return type ? t(type.value, { ns: \"common/attribute_type_dropdown\" }) : \"\";\r\n }\r\n\r\n if (entity.hasAttributesLoadingError) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (entity.attributesLoading) {\r\n return (\r\n
    \r\n \"\"/\r\n

    {t(\"entity.recommendation_dialog.loading_message\")}

    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n picklistAttributeToEdit &&\r\n handleEditPicklistClick(null)}\r\n onClose={() => handleEditPicklistClick(null)}\r\n onSubmit={handlePicklistUpdate} />\r\n }\r\n
      \r\n
    • \r\n
      \r\n attribute.checked)}\r\n value={entity && entity.attributes && entity.attributes.every(attribute => attribute.checked)}\r\n onChange={() => onToggleAllAttributes(entity.name)}\r\n />\r\n \r\n {t(\"entity.recommendation_dialog.select_all_properties_label\")}\r\n \r\n
      \r\n
    • \r\n {\r\n entity &&\r\n entity.attributes &&\r\n entity.attributes.map((attribute, index) => (\r\n
    • \r\n toggleAttributeCheckbox(index)}\r\n label={attribute.name}\r\n />\r\n  \r\n -\r\n  \r\n {\r\n editAttributeTypeIndex === index ?\r\n
      \r\n
      \r\n handleAttributeTypeChange(event, index)} />\r\n
      \r\n  \r\n \r\n
      \r\n :\r\n \r\n }\r\n  \r\n { (attribute.type === \"Picklist String\" || attribute.type === \"State Field\") && attribute.picklist && ` - ${attribute.picklist.join(\", \")}`}\r\n {\r\n (attribute.type === \"Picklist String\" || attribute.type === \"State Field\")\r\n &&\r\n \r\n }\r\n {\r\n (attribute.type === \"Picklist String\" || attribute.type === \"State Field\") &&\r\n (!attribute.picklist || attribute.picklist.length === 0) &&\r\n \r\n {\r\n attribute.type === \"Picklist String\" ?\r\n t(\"entity.recommendation_dialog.errors.no_picklist_label\")\r\n :\r\n t(\"entity.recommendation_dialog.errors.no_state_label\")\r\n }\r\n \r\n }\r\n
    • \r\n ))\r\n }\r\n {\r\n !loading[entity.name] &&\r\n showShowMoreLink &&\r\n
    • \r\n \r\n {\r\n fetchingMore[entity.name] &&\r\n \r\n }\r\n
    • \r\n }\r\n
    \r\n
    \r\n )\r\n};\r\n\r\nexport default AliceRecommendedAttributes;","import { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { getAliceRecommendedAttributes, getAliceRecommendedEntities, importEntityAndAttributeInProject } from \"../../../API/AliceGPT/AliceGPT\";\r\nimport { Drawer, DrawerContent, DrawerItem } from \"@progress/kendo-react-layout\";\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport AliceRecommendedAttributes from \"./AliceRecommendedAttributes\";\r\nimport { convertTypeToDesignerType } from \"../../Helpers/Recommendation/AliceGPT\";\r\nimport { getDatalakeImageUrl } from \"../../Helpers/DateLakeStorage\";\r\nimport FailedToLoadError from \"../../Shared/Recommendation/Error/FailedToLoadError\";\r\nimport { removeAttributeWithOtherEntityName } from \"../../../Context/AliceGPT/utils\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { icons } from \"../../Shared/IconPicker/IconPicker\";\r\nimport { OPENAI_MODEL } from \"../../../Constants/OpenAI\";\r\n\r\nfunction AliceRecommendedEntitiesDialog({\r\n subscriptionId, project, existingEntityNames, organization,\r\n toggleDialog, onEntitiesAdded, onLimitReached\r\n}) {\r\n\r\n const { t } = useTranslation();\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [fetchingMore, setFetchingMore] = useState(false);\r\n const [recommendedEntities, setRecommendedEntities] = useState([]);\r\n\r\n const [selectedEntity, setSelectedEntity] = useState({});\r\n const selectedEntityNameRef = useRef(null);\r\n\r\n const [creatingEntities, setCreatingEntities] = useState(false);\r\n\r\n const [error, setError] = useState(\"\");\r\n\r\n useEffect(() => {\r\n getData();\r\n }, []);\r\n\r\n async function getData() {\r\n try {\r\n const recommendedEntities = await getEntities();\r\n const entitiesForDrawer = recommendedEntities.map(entityToStateArrayElement);\r\n entitiesForDrawer.forEach(entity => getAttributes(entity, entitiesForDrawer));\r\n setRecommendedEntities(entitiesForDrawer);\r\n setSelectedEntity(entitiesForDrawer[0]);\r\n selectedEntityNameRef.current = entitiesForDrawer[0].name;\r\n } catch (e) {\r\n setError(e.message);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n const getEntities = useCallback(async () => {\r\n try {\r\n const response = await getAliceRecommendedEntities(\r\n project.domain || project.name, project.description, OPENAI_MODEL, existingEntityNames,\r\n project.language\r\n );\r\n const filteredEntities = response.filter(entity => !existingEntityNames.includes(entity[0]));\r\n if (filteredEntities.length > 0) {\r\n return filteredEntities;\r\n }\r\n } catch (error) {\r\n setError(error.message);\r\n }\r\n }, [])\r\n\r\n const getAttributes = useCallback(async (entity, recommendedEntities) => {\r\n const entityName = entity.name;\r\n try {\r\n const response = await getAliceRecommendedAttributes(\r\n entityName, OPENAI_MODEL, \"\", project.domain || project.name, project.description,\r\n project.language\r\n );\r\n const attributes = response.map(attributesToStateArrayElement);\r\n const entityNames = recommendedEntities.map(entity => entity.name).concat(existingEntityNames);\r\n const filteredAttributes = removeAttributeWithOtherEntityName(attributes, entityNames, entityName);\r\n handleAttributesLoaded(entityName, filteredAttributes);\r\n if (entityName === selectedEntityNameRef.current) {\r\n attributes.forEach(attribute => attribute.checked = true);\r\n }\r\n setRecommendedEntities(prevValue => [\r\n ...prevValue.map(entity => {\r\n if (entity.name === entityName) {\r\n return {\r\n ...entity,\r\n attributesLoading: false,\r\n attributes: filteredAttributes.map(attr => ({\r\n ...attr,\r\n checked: entity.checked\r\n })),\r\n disabled: filteredAttributes.length === 0,\r\n checked: false,\r\n hasAttributesLoadingError: false\r\n }\r\n } else {\r\n return entity;\r\n }\r\n })\r\n ])\r\n if (selectedEntityNameRef.current === entityName) {\r\n setSelectedEntity(prevValue => ({\r\n ...prevValue,\r\n attributesLoading: false,\r\n attributes: filteredAttributes.map(attr => ({\r\n ...attr,\r\n checked: prevValue.checked\r\n })),\r\n disabled: filteredAttributes.length === 0,\r\n checked: false,\r\n hasAttributesLoadingError: false\r\n }))\r\n }\r\n } catch (error) {\r\n setRecommendedEntities(prevValue => [\r\n ...prevValue.map(entity => {\r\n if (entity.name === entityName) {\r\n return {\r\n ...entity,\r\n disabled: true,\r\n checked: false,\r\n hasAttributesLoadingError: true,\r\n attributesLoading: false\r\n }\r\n } else {\r\n return entity;\r\n }\r\n })\r\n ])\r\n if (selectedEntityNameRef.current === entityName) {\r\n setSelectedEntity(prevValue => ({\r\n ...prevValue,\r\n disabled: true,\r\n checked: false,\r\n hasAttributesLoadingError: true,\r\n attributesLoading: false\r\n }))\r\n }\r\n }\r\n }, [])\r\n\r\n function entityToStateArrayElement(entity) {\r\n return {\r\n name: entity[0],\r\n icon: entity[1],\r\n checked: false,\r\n attributesLoading: true,\r\n attributes: [],\r\n hasAttributesLoadingError: false\r\n }\r\n }\r\n\r\n function attributesToStateArrayElement(attribute) {\r\n return {\r\n name: attribute[0],\r\n type: convertTypeToDesignerType(attribute[1]),\r\n picklist: attribute[2],\r\n unique: attribute[3],\r\n checked: false,\r\n selected: false\r\n }\r\n }\r\n\r\n function toDrawerItem(entity) {\r\n const isMoreThanTwoStateAttributesSelected = entity.attributes.filter(attribute => (\r\n attribute.type === \"State Field\" && attribute.checked\r\n )).length > 1;\r\n const hasStateOrDropdownWithNoValues = entity.attributes.some(attribute => (\r\n (attribute.type === \"State Field\" || attribute.type === \"Picklist String\") &&\r\n (!attribute.picklist || attribute.picklist.length === 0) &&\r\n attribute.checked\r\n ));\r\n const hasErrors = isMoreThanTwoStateAttributesSelected || hasStateOrDropdownWithNoValues;\r\n return {\r\n text: entity.name,\r\n disabled: entity.disabled,\r\n selected: entity.name === selectedEntity.name,\r\n checked: entity.checked,\r\n isUserEntity: entity.isUserEntity,\r\n attributesLoading: entity.attributesLoading,\r\n hasErrors\r\n }\r\n }\r\n\r\n function handleToggle() {\r\n toggleDialog();\r\n }\r\n\r\n function handleEntitySelect(event) {\r\n const entity = recommendedEntities[event.itemIndex - 1];\r\n setSelectedEntity(entity);\r\n selectedEntityNameRef.current = entity.name;\r\n }\r\n\r\n function handleEntityCheck(event) {\r\n selectedEntityNameRef.current = event.text;\r\n setRecommendedEntities(prevValue => prevValue.map(entity => {\r\n if (entity.name === event.text) {\r\n return {\r\n ...entity,\r\n checked: !entity.checked,\r\n attributes: entity.attributes.map(attribute => ({\r\n ...attribute,\r\n checked: !entity.checked\r\n }))\r\n }\r\n } else {\r\n return entity;\r\n }\r\n }))\r\n if (selectedEntityNameRef.current === event.text) {\r\n setSelectedEntity(prevValue => ({\r\n ...prevValue,\r\n checked: !prevValue.checked,\r\n attributes: prevValue.attributes.map(attribute => ({\r\n ...attribute,\r\n checked: !prevValue.checked\r\n }))\r\n }))\r\n }\r\n }\r\n\r\n function toggleSelectAllEntities() {\r\n const allEntitiesChecked = recommendedEntities.every(entity => entity.checked);\r\n setRecommendedEntities(prevValue => prevValue.map(entity => ({\r\n ...entity,\r\n checked: !allEntitiesChecked ? entity.attributes && entity.attributes.length > 0 : false,\r\n attributes: entity.attributes.map(attribute => ({\r\n ...attribute,\r\n checked: !allEntitiesChecked ? entity.attributes && entity.attributes.length > 0 : false\r\n }))\r\n })))\r\n if (selectedEntity) {\r\n setSelectedEntity(prevValue => ({\r\n ...prevValue,\r\n checked: !allEntitiesChecked ? prevValue.attributes && prevValue.attributes.length > 0 : false,\r\n attributes: prevValue.attributes.map(attribute => ({\r\n ...attribute,\r\n checked: !allEntitiesChecked ? prevValue.attributes && prevValue.attributes.length > 0 : false\r\n }))\r\n }))\r\n }\r\n }\r\n\r\n function toggleSelectAllEntityAttributes(entityName) {\r\n setRecommendedEntities(prevValue => [\r\n ...prevValue.map(entity => {\r\n if (entity.name === entityName) {\r\n const allAttributesChecked = entity.attributes.every(attribute => attribute.checked);\r\n return {\r\n ...entity,\r\n checked: !allAttributesChecked,\r\n attributes: entity.attributes.map(attribute => ({\r\n ...attribute,\r\n checked: !allAttributesChecked\r\n }))\r\n }\r\n } else {\r\n return entity;\r\n }\r\n })\r\n ])\r\n if (selectedEntity && selectedEntity.name === entityName) {\r\n const allAttributesChecked = selectedEntity.attributes.every(attribute => attribute.checked);\r\n setSelectedEntity(prevValue => ({\r\n ...prevValue,\r\n checked: !allAttributesChecked,\r\n attributes: prevValue.attributes.map(attribute => ({\r\n ...attribute,\r\n checked: !allAttributesChecked\r\n }))\r\n }))\r\n }\r\n }\r\n\r\n const handleAttributesLoaded = useCallback((entityName, attributes) => {\r\n if (attributes) {\r\n const entityNames = recommendedEntities.map(entity => entity.name).concat(existingEntityNames);\r\n const filteredAttributes = removeAttributeWithOtherEntityName(attributes, entityNames, entityName);\r\n setRecommendedEntities(prevValue => {\r\n const newRecommendedEntities = [...prevValue];\r\n const entityIndex = newRecommendedEntities.findIndex(entity => entity.name === entityName);\r\n newRecommendedEntities[entityIndex].attributes = filteredAttributes;\r\n newRecommendedEntities[entityIndex].disabled = filteredAttributes.length === 0;\r\n newRecommendedEntities[entityIndex].checked = false;\r\n return newRecommendedEntities;\r\n })\r\n if (selectedEntityNameRef.current === entityName) {\r\n setSelectedEntity(prevValue => ({\r\n ...prevValue,\r\n attributes: filteredAttributes,\r\n disabled: filteredAttributes.length === 0,\r\n checked: false\r\n }));\r\n }\r\n }\r\n }, []);\r\n\r\n // const handleAttributesAdded = useCallback((entityName, attributes) => {\r\n // if (attributes) {\r\n // setRecommendedEntities(prevValue.map(entity => {\r\n // if (entity.name === entityName) {\r\n // return {\r\n // ...entity,\r\n // attributes: [\r\n // ...entity.attributes,\r\n // ...attributes\r\n // ]\r\n // }\r\n // }\r\n // return entity;\r\n // }))\r\n // if (selectedEntity.name === entityName) {\r\n // setSelectedEntity(prevValue => ({\r\n // ...prevValue,\r\n // attributes: [\r\n // ...prevValue.attributes,\r\n // ...attributes\r\n // ]\r\n // }))\r\n // }\r\n // }\r\n // }, []);\r\n\r\n function handleAttributeSelect(entityName, attributeIndex) {\r\n setRecommendedEntities(prevValue => prevValue.map(entity => {\r\n if (entity.name === entityName) {\r\n const attributes = entity.attributes.map((attribute, index) => {\r\n if (index === attributeIndex) {\r\n return {\r\n ...attribute,\r\n checked: !attribute.checked\r\n }\r\n }\r\n return attribute;\r\n });\r\n const anyAttributeChecked = attributes.some(attribute => attribute.checked);\r\n return {\r\n ...entity,\r\n checked: anyAttributeChecked,\r\n attributes: attributes\r\n }\r\n }\r\n return entity;\r\n }));\r\n if (selectedEntity.name === entityName) {\r\n setSelectedEntity(prevValue => ({\r\n ...prevValue,\r\n attributes: prevValue.attributes.map((attribute, index) => {\r\n if (index === attributeIndex) {\r\n return {\r\n ...attribute,\r\n checked: !attribute.checked\r\n }\r\n }\r\n return attribute;\r\n }\r\n )\r\n }))\r\n }\r\n }\r\n\r\n async function handleSubmit(event) {\r\n try {\r\n event.target.disabled = true;\r\n\r\n setCreatingEntities(true);\r\n\r\n const selectedEntities = recommendedEntities.filter(entity => entity.checked);\r\n const selectedEntitiesWithAttributes = selectedEntities.map(entity => {\r\n const icon = entity.icon ? entity.icon : icons[Math.floor(Math.random() * icons.length)];\r\n return {\r\n name: entity.name?.trim(),\r\n icon,\r\n attributes: entity.attributes.filter(attribute => attribute.checked).map(attr => {\r\n let picklist = attr.picklist;\r\n if (attr.type === \"State Field\" && attr.picklist.length === 0) {\r\n picklist = [\"Not Started\", \"In Progress\", \"Completed\"];\r\n }\r\n return {\r\n ...attr,\r\n name: attr.name?.trim(),\r\n required: attr.type === \"State Field\" ? true : attr.required,\r\n picklist\r\n }\r\n })\r\n }\r\n });\r\n const response = await importEntityAndAttributeInProject(subscriptionId, organization._id, project._id, selectedEntitiesWithAttributes);\r\n if (response.status !== \"Success\") {\r\n if (response.data.length > 0) {\r\n onEntitiesAdded(response.data);\r\n }\r\n onLimitReached();\r\n } else {\r\n onEntitiesAdded(response.data);\r\n }\r\n setCreatingEntities(false);\r\n } catch (error) {\r\n console.log(error);\r\n } finally {\r\n handleToggle();\r\n }\r\n }\r\n\r\n function handleShowMore() {\r\n setFetchingMore(true);\r\n const recommendedEntitiesToSkip = recommendedEntities.map(entity => entity.name);\r\n const entitiesToSkip = [...new Set([...existingEntityNames, ...recommendedEntitiesToSkip])].join(\",\");\r\n getAliceRecommendedEntities(\r\n project.domain, project.description, OPENAI_MODEL, entitiesToSkip,\r\n project.language\r\n )\r\n .then(response => {\r\n const entities = response.map(entityToStateArrayElement);\r\n entities.forEach(entity => getAttributes(entity, recommendedEntities.concat(entities)));\r\n setRecommendedEntities(prevValue => [...prevValue, ...entities]);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n })\r\n .finally(() => {\r\n setFetchingMore(false);\r\n })\r\n }\r\n\r\n function handlePicklistUpdate(entityName, attributeName, picklist) {\r\n setRecommendedEntities(prevValue => prevValue.map(entity => {\r\n if (entity.name === entityName) {\r\n return {\r\n ...entity,\r\n attributes: entity.attributes.map(attribute => {\r\n if (attribute.name === attributeName) {\r\n return {\r\n ...attribute,\r\n picklist\r\n }\r\n }\r\n return attribute;\r\n })\r\n }\r\n }\r\n return entity;\r\n }))\r\n if (selectedEntity.name === entityName) {\r\n setSelectedEntity(prevValue => ({\r\n ...prevValue,\r\n attributes: prevValue.attributes.map(attribute => {\r\n if (attribute.name === attributeName) {\r\n return {\r\n ...attribute,\r\n picklist\r\n }\r\n }\r\n return attribute;\r\n })\r\n }))\r\n }\r\n }\r\n\r\n function handleAttributeTypeChange(entityName, attributeName, type) {\r\n setRecommendedEntities(prevValue => prevValue.map(entity => {\r\n if (entity.name === entityName) {\r\n return {\r\n ...entity,\r\n attributes: entity.attributes.map(attribute => {\r\n if (attribute.name === attributeName) {\r\n return {\r\n ...attribute,\r\n type,\r\n picklist: attribute.picklist ? attribute.picklist : [\"Value 1\"]\r\n }\r\n }\r\n return attribute;\r\n })\r\n }\r\n }\r\n\r\n return entity;\r\n }))\r\n if (selectedEntity.name === entityName) {\r\n setSelectedEntity(prevValue => ({\r\n ...prevValue,\r\n attributes: prevValue.attributes.map(attribute => {\r\n if (attribute.name === attributeName) {\r\n return {\r\n ...attribute,\r\n type,\r\n picklist: attribute.picklist ? attribute.picklist : [\"Value 1\"]\r\n }\r\n }\r\n return attribute;\r\n })\r\n }))\r\n }\r\n }\r\n\r\n function shouldAddBeDisabled() {\r\n const selectedEntities = recommendedEntities.filter(entity => entity.checked);\r\n if (selectedEntities.length === 0) {\r\n return true;\r\n }\r\n const selectedEntitiesWithAttributesLoading = selectedEntities.filter(entity => entity.attributesLoading);\r\n if (selectedEntitiesWithAttributesLoading.length > 0) {\r\n return true;\r\n }\r\n const selectedAttributes = selectedEntities.map(entity => entity.attributes.filter(attribute => attribute.checked));\r\n if (selectedAttributes.some(attributes => attributes.length === 0)) {\r\n return true;\r\n }\r\n const isMoreThanTwoStateAttributesSelected = selectedEntities.some(entity => (\r\n entity.attributes.filter(attribute => (\r\n attribute.type === \"State Field\" && attribute.checked\r\n )).length > 1\r\n ));\r\n const hasStateOrDropdownWithNoValues = selectedEntities.some(entity => (\r\n entity.attributes.some(attribute => (\r\n (attribute.type === \"State Field\" || attribute.type === \"Picklist String\") &&\r\n (!attribute.picklist || attribute.picklist.length === 0) &&\r\n attribute.checked\r\n ))\r\n ));\r\n if (isMoreThanTwoStateAttributesSelected || hasStateOrDropdownWithNoValues) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n return (\r\n \r\n {\r\n loading &&\r\n
    \r\n \"\"\r\n

    {t(\"entity.recommendation_dialog.loading_message\")}

    \r\n
    \r\n }\r\n {\r\n !loading &&\r\n error.length > 0 &&\r\n \r\n }\r\n {\r\n !loading &&\r\n error.length === 0 &&\r\n {\r\n const { disabled, ...otherProps } = props;\r\n return (\r\n \r\n {\r\n props.isHeading &&\r\n
    \r\n entity.checked)}\r\n value={recommendedEntities.every(entity => entity.checked)}\r\n onChange={() => { }}\r\n />\r\n {props.text} \r\n
    \r\n }\r\n {\r\n props.isShowMoreOption &&\r\n <>\r\n \r\n {\r\n fetchingMore ?\r\n \r\n :\r\n <> \r\n }\r\n \r\n }\r\n {!props.isHeading && !props.isShowMoreOption &&\r\n <>\r\n handleEntityCheck(props)}\r\n />\r\n  \r\n \r\n {props.text}\r\n \r\n {\r\n props.attributesLoading &&\r\n <>\r\n  \r\n \r\n \r\n }\r\n \r\n }\r\n  \r\n {\r\n props.hasErrors &&\r\n \r\n }\r\n \r\n )\r\n }}\r\n >\r\n \r\n {\r\n selectedEntity &&\r\n \r\n }\r\n \r\n \r\n }\r\n {\r\n !loading &&\r\n \r\n
    \r\n {\r\n recommendedEntities.some(entity => (\r\n entity.attributes.filter(\r\n attribute => attribute.type === \"State Field\" && attribute.checked\r\n ).length > 1\r\n )) &&\r\n \r\n {t(\"entity.recommendation_dialog.errors.more_than_two_state_attributes_selected\")}\r\n \r\n }\r\n {\r\n creatingEntities &&\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 AliceRecommendedEntitiesDialog;","import React, { Component, useContext } from \"react\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport { Navigate, useNavigate } from \"react-router-dom\";\r\nimport EntityPropertyPanel from \"./EntityPropertyPanel\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport CreateEntityDialog from \"./CreateEntityDialog\";\r\nimport { PageContainer, Header, Content } from \"../Drawer/PageContainer\";\r\nimport RemoveDialog from \"../Shared/Remove/RemoveDialog\";\r\nimport SaveDialog from \"../Shared/Remove/SaveDialog\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { updateNode } from \"../Helpers/Nodes\";\r\nimport { CheckForInternalUser } from '../Helpers/miscellaneous'\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport Upgarde from \"../Shared/Subscription/Upgrade\";\r\nimport ServerError from \"../Shared/Error/ServerError\";\r\nimport { ENTITY_LABEL } from \"../Helpers/Labels/EntityLabel\";\r\nimport WorkspaceAppModelContext from \"../../Context/Workspace/WorkspaceAppModelContext\";\r\nimport AliceRecommendedEntitiesDialog from \"./Recommendation/AliceRecommendedEntitiesDialog\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { getAllAttributes } from \"../Helpers/Schema/Schema\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport { bulkDeleteEnities, deleteEntity, getEntities, updateEntity } from \"../../API/Entity/Entity\";\r\nimport { findEntityAttributeReferencesInFormulas, updateAttribute } from \"../../API/Attribute/Attribute\";\r\n\r\nclass DragCell extends React.Component {\r\n render() {\r\n return (\r\n {\r\n DragCell.reorder(this.props.dataItem);\r\n e.preventDefault();\r\n e.dataTransfer.dropEffect = \"copy\";\r\n }}\r\n onDragEnd={(e) => {\r\n e.preventDefault();\r\n DragCell.endDrag(this.props.dataItem);\r\n }}\r\n >\r\n {\r\n DragCell.dragStart(this.props.dataItem);\r\n e.dataTransfer.setData(\"dragging\", \"\");\r\n }}\r\n >\r\n {this.props.dataItem.indexId}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nclass SelectAllCheckbox extends React.Component {\r\n render() {\r\n const { data, onClick } = this.props;\r\n const isNormalEntityPresent = data.some(item => !item.isUserEntity);\r\n const nonUserEntities = data.filter(item => !item.isUserEntity);\r\n const allMarkedToDelete = nonUserEntities.length ? nonUserEntities.every(item => item.toDelete) : false;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nfunction EntityNameCell(props) {\r\n\r\n const navigate = useNavigate();\r\n const { mutators } = useContext(WorkspaceAppModelContext);\r\n\r\n function navigateToEntityProperties() {\r\n if (mutators) {\r\n mutators.setSelectedEntity(props.dataItem);\r\n } else {\r\n navigate(`/${props.organizationName}/${props.projectName}/Entities/${props.dataItem.sysName}/Attributes`)\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {props.dataItem.name}\r\n \r\n \r\n )\r\n}\r\n\r\nclass Entitiescomponents extends Component {\r\n\r\n static contextType = MsalContext\r\n\r\n createBtn = React.createRef();\r\n createAndNewBtn = React.createRef();\r\n\r\n options = [\"Schema\", \"Organization\", \"Both\"];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n redirect: false,\r\n panes: [\r\n { collapsible: false },\r\n { size: \"475px\", min: \"475px\", collapsible: false },\r\n ],\r\n data: [],\r\n toUpdateId: \"\",\r\n toDeleteIdL: \"\",\r\n ShowNotification: false,\r\n SideData: {},\r\n isNewbtn: false,\r\n IsNew: false,\r\n isInternalUser: false,\r\n showUpgradeDailog: false,\r\n loading: true,\r\n showServerError: false,\r\n showOnBoardingTooltip: false,\r\n processingEntity: false,\r\n referenceAttr: [],\r\n referenceBulkAttr: [],\r\n referenceChecked: false,\r\n recommendationDialogTitle: \"Alice Recommendation - Objects\",\r\n isAliceGPTDialogVisible: false,\r\n showBulkDeleteDialog: false,\r\n };\r\n DragCell.reorder = this.reorder.bind(this);\r\n DragCell.dragStart = this.dragStart.bind(this);\r\n DragCell.endDrag = this.endDrag.bind(this);\r\n this.updateEntity = this.updateEntity.bind(this);\r\n this.EntitySidebar = React.createRef();\r\n }\r\n\r\n checkFormulaReference = async () => {\r\n this.setState({\r\n referenceAttr: [],\r\n referenceChecked: false,\r\n processingEntity: true\r\n });\r\n let properties = {};\r\n properties[\"entityId\"] = this.state.SideData._id;\r\n properties[\"entityName\"] = this.state.SideData.name;\r\n const checkFormulaResponse = await findEntityAttributeReferencesInFormulas(properties);\r\n this.setState({\r\n referenceAttr: Array.from(new Set(checkFormulaResponse.message)),\r\n referenceChecked: true,\r\n processingEntity: false\r\n });\r\n }\r\n\r\n checkBulkFormulaReference = async (selectedEntities) => {\r\n const referenceBulkAttr = [];\r\n\r\n const requests = selectedEntities.map(async (item) => {\r\n let properties = {\r\n entityId: item._id,\r\n entityName: item.name\r\n };\r\n return findEntityAttributeReferencesInFormulas(properties);\r\n });\r\n\r\n const responses = await Promise.all(requests);\r\n\r\n for (const response of responses) {\r\n const uniqueReferences = Array.from(new Set(response.message));\r\n referenceBulkAttr.push(...uniqueReferences);\r\n }\r\n\r\n this.setState({\r\n referenceBulkAttr: referenceBulkAttr\r\n });\r\n }\r\n\r\n\r\n rowRender = (trElement, props) => {\r\n const trProps = { className: \"k-master-row\" };\r\n if (props.dataItem.selected) {\r\n trProps.className += \" k-state-selected\";\r\n }\r\n if (props.dataItem.isHovered) {\r\n if (this.state.activeItemIndex > this.state.draggedOverItemIndex) {\r\n trProps.className = \" hovered-row-above\";\r\n } else {\r\n trProps.className = \" hovered-row-below\";\r\n }\r\n }\r\n return React.cloneElement(trElement, trProps, trElement.props.children);\r\n };\r\n\r\n componentDidMount = async () => {\r\n try {\r\n let result = await getEntities(this.props.project._id);\r\n const entities = result\r\n .slice()\r\n .sort((a, b) => a.order - b.order)\r\n .map((entity, index) => ({\r\n ...entity,\r\n indexId: index + 1,\r\n numberOfAttributes: entity.numberOfAttributes - 5\r\n }));\r\n\r\n let ShowNotification = localStorage.getItem(\"ShowNotification\");\r\n\r\n let isInternalUser = CheckForInternalUser(this.props.user.email)\r\n\r\n let selectedEntity = entities[0];\r\n if (this.props.sysName) {\r\n selectedEntity = entities.find(entity => entity.sysName === this.props.sysName);\r\n }\r\n if (selectedEntity === undefined) {\r\n selectedEntity = entities[0];\r\n }\r\n // remove it later\r\n // showRecommendEntityPopup: localStorage.getItem( \"OpenRecommendedEntity\" ),\r\n this.setState(\r\n {\r\n IsNew: false,\r\n toUpdateId: \"\",\r\n isInternalUser: isInternalUser,\r\n loading: false,\r\n toDeleteId: \"\",\r\n data: entities,\r\n ShowNotification: ShowNotification,\r\n showOnBoardingTooltip: this.props.user.applicationTooltipFlow === \"true\",\r\n },\r\n () => {\r\n if (selectedEntity) {\r\n this.rowClick(selectedEntity._id);\r\n }\r\n }\r\n );\r\n } catch (error) {\r\n console.error(error)\r\n this.setState({\r\n showServerError: true\r\n })\r\n }\r\n };\r\n\r\n handleEntityNameClick(entity) {\r\n if (this.props.isAccessedFromWorkspace) {\r\n this.props.selectEntity(entity);\r\n } else {\r\n this.navigateToEntity(entity);\r\n }\r\n }\r\n\r\n getInitialWidthForWindow = () => {\r\n // return 75% of the window width\r\n return window.innerWidth * 0.75;\r\n };\r\n\r\n getInitialHeightForWindow = () => {\r\n // return 80% of the window height\r\n return window.innerHeight * 0.8;\r\n };\r\n\r\n render() {\r\n if (this.state.showServerError) return \r\n if (this.state.redirect) {\r\n let url = `/${this.props.organization.orgName}/${this.props.project.name}/`;\r\n\r\n if (this.state.selected === 0) {\r\n url += \"Entities\";\r\n }\r\n\r\n if (this.state.selected === 1) {\r\n url += \"Visualize\";\r\n }\r\n\r\n this.setState({ redirect: false });\r\n\r\n return ;\r\n }\r\n\r\n const { t } = this.props;\r\n\r\n return (\r\n <>\r\n {/* {\r\n this.state.showOnBoardingTooltip &&\r\n \r\n } */}\r\n {this.state.DeletePopup && (\r\n ${this.state.data.find((entity) => entity._id === this.state.selectedId).name} \r\n ${ENTITY_LABEL.toLowerCase()}? Deleting this will remove all the items related to this object.\r\n ${this.state.referenceAttr && this.state.referenceAttr.length > 0 ?\r\n '

    We have detected this object is part of your configured calculated fields. Deleting it will remove any formula referenced by this object. To proceed, click the delete button.

    '\r\n : ''}\r\n `}\r\n message={\r\n this.state.referenceAttr && this.state.referenceAttr.length > 0 ?\r\n t(\"entity.delete_dialog.entity_with_reference_message\", { entityName: this.state.data.find((entity) => entity._id === this.state.selectedId).name })\r\n :\r\n t(\"entity.delete_dialog.entity_without_reference_message\", { entityName: this.state.data.find((entity) => entity._id === this.state.selectedId).name })\r\n }\r\n Title={t(\"entity.delete_dialog.title\")}\r\n\r\n referenceAttr={this.state.referenceAttr}\r\n process={{\r\n inProcess: !this.state.referenceChecked\r\n }}\r\n hideDeleteButton={this.state.referenceChecked && this.state.referenceAttr.length > 0}\r\n hideCancelButton={this.state.referenceChecked && this.state.referenceAttr.length > 0}\r\n orgName={this.props.organization.orgName}\r\n projectName={this.props.project.name}\r\n referenceMessage={`Please update the formula before you can remove this ${ENTITY_LABEL.toLowerCase()}.`}\r\n />\r\n )}\r\n {this.state.isSaveEntityVisible && (\r\n \r\n )}\r\n {\r\n this.state.isAliceGPTDialogVisible &&\r\n entity.name)}\r\n subscriptionId={this.props.organization.subscriptionId}\r\n organization={this.props.organization}\r\n project={this.props.project}\r\n onEntitiesAdded={this.addCreatedEntitiesToGrid}\r\n onLimitReached={this.toggleUpgradeDailog}\r\n toggleDialog={this.toggleAliceGPTDialog} />\r\n }\r\n\r\n {this.state.showUpgradeDailog &&\r\n bigger apps? '}\r\n toggleDialog={this.toggleUpgradeDailog}\r\n Type={'Pro'}\r\n />\r\n }\r\n\r\n \r\n\r\n \r\n
    \r\n item.toDelete === true)}\r\n deleteActionText={t(\"entity.header.buttons.delete_label\")}\r\n deleteActionClicked={this.toggleBulkDeleteDialog}\r\n showHelpCenter={(this.state.isInternalUser && this.props.project.developerMode) ? true : false}\r\n user={this.props.user}\r\n helpCenterFor={t(\"entity.header.title\")}\r\n >\r\n
    \r\n \r\n {\r\n this.state.loading && \r\n }\r\n {\r\n this.state.loading === false &&\r\n this.state.data.length !== 0 && (\r\n \r\n
    \r\n \r\n {\r\n this.state.showBulkDeleteDialog &&\r\n 0 ?\r\n t(\"entity.bulk_delete_dialog.entity_with_reference_message\", { entityCount: this.state.data.filter((item) => item.toDelete === true).length })\r\n :\r\n t(\"entity.bulk_delete_dialog.entity_without_reference_message\", { entityCount: this.state.data.filter((item) => item.toDelete === true).length })\r\n }\r\n message_old={`\r\n Are you sure you want to delete the\r\n ${this.state.data.filter((item) => item.toDelete === true).length}\r\n objects? Deleting this will remove all the items related to those objects.\r\n ${this.state.referenceBulkAttr && this.state.referenceBulkAttr.length > 0 ?\r\n '

    We have detected some objects that are part of your configured calculated fields. Deleting these objects will remove any formula configurations referenced by these objects. To proceed, click the delete button.

    '\r\n : ''}\r\n `}\r\n onDelete={this.handleBulkDelete}\r\n onCancel={this.toggleBulkDeleteDialog}\r\n cancelButtonText={t(\"entity.bulk_delete_dialog.buttons.cancel_label\")}\r\n deleteButtonText={t(\"entity.bulk_delete_dialog.buttons.delete_label\")}\r\n />\r\n }\r\n ({\r\n ...item,\r\n selected: item._id === this.state.selectedId,\r\n isHovered: index === this.state.draggedOverItemIndex,\r\n index,\r\n }))}\r\n onRowClick={this.rowClick}\r\n selectedField=\"selected\"\r\n reorderable={true}\r\n >\r\n (\r\n \r\n this.handleBulkDeleteSelection(e, props.dataItem)}\r\n />\r\n \r\n )}\r\n headerCell={() => (\r\n \r\n )}\r\n />\r\n \r\n (\r\n \r\n )}\r\n />\r\n {o.dataItem.label}}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.state.SideData._id && (\r\n \r\n {\r\n ({ state, mutators }) => (\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 reorder(dataItem) {\r\n if (this.state.activeItem._id === dataItem._id) {\r\n if (\r\n this.state.draggedOverItemIndex !== this.state.activeItemIndex\r\n ) {\r\n this.setState({ draggedOverItemIndex: -1 });\r\n }\r\n return;\r\n }\r\n\r\n let draggedOverItemIndex = this.state.data.findIndex((p) => p._id === dataItem._id);\r\n\r\n this.setState({\r\n active: this.state.activeItem,\r\n draggedOverItemIndex,\r\n });\r\n }\r\n\r\n updateOrder = (_id, ordertoUpdate) => {\r\n updateEntity(_id, { order: ordertoUpdate })\r\n };\r\n\r\n endDrag(dataItem) {\r\n let { activeItemIndex, draggedOverItemIndex } = this.state;\r\n\r\n if (draggedOverItemIndex === -1) {\r\n return;\r\n }\r\n\r\n let reorderedData = this.state.data.slice();\r\n let temp = reorderedData[activeItemIndex];\r\n let index = draggedOverItemIndex;\r\n\r\n reorderedData.splice(activeItemIndex, 1);\r\n reorderedData.splice(draggedOverItemIndex, 0, temp);\r\n\r\n let newOrder;\r\n\r\n if (reorderedData.length > 2) {\r\n if (index === reorderedData.length - 1) {\r\n newOrder =\r\n parseInt(reorderedData[index - 1][\"order\"]) + 10000000000;\r\n //console.log(index, newOrder);\r\n reorderedData[index][\"order\"] = newOrder;\r\n this.updateOrder(reorderedData[index]._id, newOrder);\r\n } else if (index === 0) {\r\n newOrder = parseInt(reorderedData[1][\"order\"]);\r\n let prevElementOrder = parseInt(reorderedData[2][\"order\"]);\r\n let orderToSet = (prevElementOrder + newOrder) / 2;\r\n reorderedData[index][\"order\"] = newOrder;\r\n reorderedData[1][\"order\"] = orderToSet;\r\n this.updateOrder(reorderedData[index]._id, newOrder);\r\n this.updateOrder(reorderedData[1]._id, orderToSet);\r\n //console.log(prevElementOrder, orderToSet, index);\r\n } else {\r\n let prevItemOrder = parseInt(reorderedData[index - 1][\"order\"]);\r\n let nextItemOrder = parseInt(reorderedData[index + 1][\"order\"]);\r\n newOrder = (prevItemOrder + nextItemOrder) / 2;\r\n reorderedData[index][\"order\"] = newOrder;\r\n this.updateOrder(reorderedData[index]._id, newOrder);\r\n }\r\n } else {\r\n let firstOrder = reorderedData[0][\"order\"];\r\n let secondOrder = reorderedData[1][\"order\"];\r\n\r\n reorderedData[0][\"order\"] = secondOrder;\r\n reorderedData[1][\"order\"] = firstOrder;\r\n\r\n this.updateOrder(reorderedData[0]._id, secondOrder);\r\n this.updateOrder(reorderedData[1]._id, firstOrder);\r\n }\r\n\r\n for (let i = 0; i < reorderedData.length; i++) {\r\n reorderedData[i].indexId = i + 1;\r\n }\r\n\r\n this.setState({\r\n data: reorderedData,\r\n selectedId: this.state.oldSelectedId,\r\n activeItemIndex: -1,\r\n draggedOverItemIndex: -1,\r\n });\r\n }\r\n\r\n dragStart(dataItem) {\r\n var oldSelectedId = this.state.selectedId;\r\n let activeItemIndex = this.state.data.findIndex(\r\n (entity) => entity._id === dataItem._id\r\n );\r\n this.setState({\r\n data: this.state.data,\r\n activeItem: dataItem,\r\n activeItemIndex: activeItemIndex,\r\n oldSelectedId: oldSelectedId,\r\n selectedId: dataItem._id,\r\n });\r\n }\r\n\r\n rowClick = (value) => {\r\n if (\r\n value && value.nativeEvent && value.nativeEvent.detail === 2\r\n ) {\r\n if (this.props.isAccessedFromWorkspace && this.props.selectEntity) {\r\n this.props.selectEntity(value.dataItem)\r\n } else {\r\n this.navigateToEntity(value.dataItem)\r\n }\r\n }\r\n if (\r\n this.EntitySidebar.current !== null &&\r\n this.EntitySidebar.current.getDisabled() === false\r\n ) {\r\n const isEntityDeleted = this.state.data.find(x => x._id === this.EntitySidebar.current.defaultData._id) === undefined;\r\n if (!isEntityDeleted) {\r\n let s = this.EntitySidebar.current.getDisabled();\r\n this.toggleSaveEntityDialog();\r\n this.setState({\r\n nextEntity:\r\n value.dataItem !== undefined ? value.dataItem._id : value,\r\n });\r\n return;\r\n }\r\n }\r\n\r\n this.setState({\r\n SideData: {},\r\n });\r\n\r\n var id = \"\";\r\n\r\n if (value[\"dataItem\"]) {\r\n id = value.dataItem._id;\r\n } else {\r\n id = value;\r\n }\r\n this.setState({ selectedId: id });\r\n let element = this.state.data.find((x) => x._id === id);\r\n\r\n this.setState({ SideData: element });\r\n };\r\n\r\n navigateToEntity = (dataItem) => {\r\n const { project, organization } = this.props;\r\n const { orgName } = organization\r\n const { name } = project\r\n this.props.navigate(\r\n `/${orgName}/${name}/Entities/${dataItem.sysName}/Attributes`\r\n );\r\n }\r\n\r\n onSplitterSizeChange = (e) => {\r\n this.setState({ panes: e.newState });\r\n };\r\n\r\n addNew = () => {\r\n this.setState({\r\n isNewbtn: true,\r\n label: \"\",\r\n });\r\n };\r\n\r\n toggleOnBoardingTooltip = () => {\r\n updateNode(\"User\", this.props.user._id, {\r\n applicationTooltipFlow: \"false\"\r\n })\r\n this.setState({\r\n showOnBoardingTooltip: false\r\n })\r\n this.props.updateUser({\r\n applicationTooltipFlow: \"false\"\r\n })\r\n }\r\n\r\n toggleDialog = (showUpgradeDailog) => {\r\n this.setState({\r\n isNewbtn: false,\r\n showUpgradeDailog: showUpgradeDailog,\r\n entityName: \"\",\r\n label: \"\",\r\n pluralLabel: \"\",\r\n description: \"\",\r\n colorHex: \"\",\r\n toUpdateId: \"\",\r\n color: \"#000\",\r\n value: \"\",\r\n showError: false,\r\n showInherit: false,\r\n });\r\n };\r\n\r\n toggleUpgradeDailog = () => {\r\n this.setState({\r\n showUpgradeDailog: !this.state.showUpgradeDailog\r\n })\r\n }\r\n\r\n toggleDeleteDialog = (e) => {\r\n this.setState({\r\n DeletePopup: false,\r\n entityName: \"\",\r\n label: \"\",\r\n pluralLabel: \"\",\r\n description: \"\",\r\n colorHex: \"\",\r\n toUpdateId: \"\",\r\n color: {\r\n r: \"0\",\r\n g: \"0\",\r\n b: \"0\",\r\n a: \"1\",\r\n },\r\n value: \"\",\r\n });\r\n };\r\n\r\n toggleSaveEntityDialog = () => {\r\n this.setState({ isSaveEntityVisible: !this.state.isSaveEntityVisible });\r\n };\r\n\r\n handleSelectAllBulkDelete = (e) => {\r\n let { data } = this.state\r\n data.forEach((item) => {\r\n if (!item.isUserEntity) {\r\n item.toDelete = e.value\r\n }\r\n })\r\n this.setState({ data })\r\n }\r\n\r\n handleBulkDeleteSelection = (e, dataItem) => {\r\n let { data } = this.state\r\n let selectedData = data.find((item) => item._id === dataItem._id)\r\n selectedData.toDelete = dataItem.isUserEntity ? false : e.value\r\n this.setState({ data })\r\n }\r\n\r\n handleBulkDelete = async () => {\r\n let { data } = this.state;\r\n let selectedEntityIds = data.filter((item) => item.toDelete === true).map((item) => item._id);\r\n\r\n if (selectedEntityIds.length > 0) {\r\n this.setState({\r\n processingEntity: true\r\n })\r\n\r\n const bulkDeleteResponse = await bulkDeleteEnities(this.props.project._id, selectedEntityIds);\r\n\r\n if (bulkDeleteResponse.status === \"Success\") {\r\n this.deleteFormula();\r\n const remaingEntities = data.filter((item) => item.toDelete === false || item.toDelete === undefined);\r\n\r\n for (let i = 0; i < remaingEntities.length; i++) {\r\n remaingEntities[i].indexId = i + 1;\r\n }\r\n\r\n if (remaingEntities.length === 0) {\r\n this.setState({\r\n SideData: {},\r\n processingEntity: false,\r\n data: remaingEntities,\r\n showBulkDeleteDialog: false\r\n });\r\n } else {\r\n this.setState({\r\n data: remaingEntities,\r\n processingEntity: false,\r\n showBulkDeleteDialog: false\r\n }, () => {\r\n this.rowClick(remaingEntities[remaingEntities.length - 1]._id);\r\n })\r\n }\r\n } else {\r\n this.setState({\r\n processingEntity: false,\r\n showBulkDeleteDialog: false\r\n })\r\n }\r\n }\r\n }\r\n\r\n // delete formula\r\n deleteFormula = async () => {\r\n var referenceAttr = this.state.referenceAttr.length > 0 ? this.state.referenceAttr : this.state.referenceBulkAttr;\r\n for (let item of referenceAttr) {\r\n const entity = this.state.data.find(entityItem => entityItem._id === item.entityId);\r\n if (entity) {\r\n const allEntityAttributes = await getAllAttributes(entity._id);\r\n const linkedAttributes = allEntityAttributes.find(attrItem => attrItem._id === item.attributeId);\r\n linkedAttributes.formula = '';\r\n linkedAttributes.formulaJson = '';\r\n const triggerSettingObj = JSON.parse(linkedAttributes.triggerSetting);\r\n triggerSettingObj.formulaEnabled = false;\r\n const updatedTriggerSettingStr = JSON.stringify(triggerSettingObj);\r\n linkedAttributes.triggerSetting = updatedTriggerSettingStr;\r\n linkedAttributes.readOnly = false;\r\n await updateAttribute(linkedAttributes._id, linkedAttributes);\r\n }\r\n }\r\n }\r\n\r\n\r\n toggleBulkDeleteDialog = async () => {\r\n this.setState(\r\n (prevState) => ({\r\n showBulkDeleteDialog: !prevState.showBulkDeleteDialog,\r\n processingEntity: true\r\n\r\n\r\n }),\r\n\r\n );\r\n let { data } = this.state;\r\n console.log(\"data\", data);\r\n console.log(this.state)\r\n let selectedEntities = data\r\n .filter((item) => item.toDelete === true)\r\n .map((item) => ({ _id: item._id, name: item.name }));\r\n\r\n await this.checkBulkFormulaReference(selectedEntities);\r\n this.setState({\r\n processingEntity: false\r\n });\r\n }\r\n\r\n SaveFromDialog = (e) => {\r\n this.EntitySidebar.current.update(e, () => {\r\n this.EntitySidebar.current.setDisabled();\r\n this.toggleSaveEntityDialog();\r\n this.rowClick(this.state.nextEntity);\r\n });\r\n };\r\n\r\n discardChanges = async (e) => {\r\n // await this.EntitySidebar.current.setDefault();\r\n this.toggleSaveEntityDialog();\r\n // this.rowClick(this.state.nextEntity);\r\n };\r\n\r\n addEntityToGridViaRecommendation = (response) => {\r\n if (response.message === \"Max entities allowed limit reached\") {\r\n this.toggleDialog(true);\r\n } else {\r\n const data = response.map(entity => ({\r\n ...entity,\r\n numberOfAttributes: entity.numberOfAttributes.low\r\n }))\r\n const newData = [...this.state.data, ...data].map((entity, index) => ({\r\n ...entity,\r\n _id: index + 1\r\n }));\r\n this.setState({\r\n data: newData\r\n });\r\n }\r\n }\r\n\r\n addEntityToGrid = (entity, isCreateandNew) => {\r\n if (isCreateandNew === false) {\r\n const { data } = this.state;\r\n entity.numberOfAttributes = entity.numberOfAttributes || 0;\r\n entity.index = data.length + 1;\r\n const newData = [...data, entity];\r\n this.setState({\r\n selectedId: entity._id,\r\n SideData: entity,\r\n data: newData,\r\n })\r\n this.toggleDialog()\r\n } else {\r\n const { data } = this.state;\r\n entity.numberOfAttributes = entity.numberOfAttributes || 0;\r\n entity.index = data.length + 1;\r\n const newData = [...data, entity];\r\n this.setState({\r\n data: newData,\r\n }, () => {\r\n this.rowClick(entity._id)\r\n })\r\n }\r\n }\r\n\r\n updateEntity(_id, entityData) {\r\n let data = this.state.data;\r\n let index = data.findIndex((x) => x._id === _id);\r\n\r\n if (index !== -1) {\r\n let indexId = data[index].indexId;\r\n let numberOfAttributes = data[index].numberOfAttributes;\r\n\r\n // Update entity data while preserving _id and numberOfAttributes\r\n data[index] = {\r\n ...entityData,\r\n indexId: indexId,\r\n numberOfAttributes: numberOfAttributes,\r\n };\r\n\r\n this.setState({ data: data, SideData: entityData });\r\n } else {\r\n console.error(`Entity with _id ${_id} not found.`);\r\n }\r\n }\r\n\r\n Delete = (e) => {\r\n debugger;\r\n const id = e.currentTarget === undefined ? e : e.currentTarget.value;\r\n let element = this.state.data.find((x) => x._id === id);\r\n this.setState({\r\n DeletePopup: true,\r\n toDeleteId: element._id,\r\n });\r\n var res = this.checkFormulaReference(element._id);\r\n };\r\n\r\n DeleteConfirmation = async (e) => {\r\n this.deleteFormula();\r\n this.setState({ processingEntity: true })\r\n e.target.disabled = true;\r\n let element = this.state.data.find((x) => x._id === this.state.toDeleteId);\r\n await this.remove(element);\r\n this.setState({\r\n DeletePopup: !this.state.DeletePopup,\r\n toDeleteId: \"\",\r\n processingEntity: false\r\n });\r\n };\r\n\r\n remove = async (dataItem) => {\r\n await deleteEntity(this.props.project._id, dataItem._id);\r\n const data = [...this.state.data];\r\n let index = data.findIndex((p) => p === dataItem || (dataItem._id && p._id === dataItem._id));\r\n let toGet = 0;\r\n if (index >= 0) {\r\n data.splice(index, 1);\r\n }\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n data[i].indexId = i + 1;\r\n }\r\n\r\n let child = data.filter((x) => x.inherits === dataItem.name);\r\n child.forEach((x) => (x.inherits = \"false\"));\r\n\r\n this.setState({ data: data }, () => {\r\n if (index === 0) {\r\n if (data.length > 0) {\r\n this.rowClick(data[toGet]._id);\r\n } else {\r\n this.setState({\r\n SideData: {}\r\n });\r\n }\r\n } else {\r\n toGet = index - 1;\r\n if (this.state.selectedId === dataItem._id) {\r\n this.rowClick(data[toGet]._id);\r\n }\r\n }\r\n });\r\n };\r\n\r\n toggleAliceGPTDialog = () => {\r\n this.setState({ isAliceGPTDialogVisible: !this.state.isAliceGPTDialogVisible });\r\n }\r\n\r\n addCreatedEntitiesToGrid = (entities) => {\r\n const { data } = this.state;\r\n const newData = [...data, ...entities].map((entity, index) => ({\r\n ...entity,\r\n indexId: index + 1\r\n }));\r\n this.setState({\r\n data: newData\r\n }, () => {\r\n this.rowClick(entities[0]._id)\r\n });\r\n }\r\n}\r\n\r\nexport default withTranslation()(Entitiescomponents);","import React from \"react\";\r\nimport { OneToMany, OneToOne, ManyToMany } from \"./CardinalityShapes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\n/* refactored - ali */\r\nconst CardinalityOptionsField = (props) => {\r\n\tconst { firstEntityName, secondEntityName, selected, onSelect, showCardinalityLabel } = props;\r\n\r\n\tconst { t } = useTranslation(\"linked_entity/common\");\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t{showCardinalityLabel && (\r\n\t\t\t\t
    \r\n\t\t\t\t\t{t(\"cardinality_popup.cardinality_label\", { ns: \"linked_entity/common\" })}\r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\t\t\t
    \r\n\t\t\t\t
    onSelect(\"1-1\")}>\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    onSelect(\"1-*\")}>\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    onSelect(\"*-*\")}>\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default CardinalityOptionsField;\r\n","export function checkIfContradictiveRelationsExist(allRelations, relation) {\r\n return allRelations.some(existingRelation => {\r\n return (\r\n existingRelation.fromEntity._id === relation.toEntity._id &&\r\n existingRelation.toEntity._id === relation.fromEntity._id &&\r\n existingRelation.cardinality === \"1-*\" &&\r\n existingRelation.relationId !== relation.relationId\r\n );\r\n })\r\n}","import { callApiWithAuthorization } from '../CallApi';\r\n\r\nexport async function getEntityRelations(projectId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/project/${projectId}/entityRelations`\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateEntityRelation(entityRelationId, properties) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/entityRelations/${entityRelationId}`,\r\n {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(properties)\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function deleteEntityRelation(entityRelationId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/entityRelations/${entityRelationId}`,\r\n {\r\n method: 'DELETE'\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function deleteEntityRelationReferenceAttribute(entityRelationId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/entityRelations/${entityRelationId}/referenceAttribute`,\r\n {\r\n method: 'DELETE'\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function deleteEntityRelationMirrorAttribute(entityRelationId) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/entityRelations/${entityRelationId}/mirrorAttribute`,\r\n {\r\n method: 'DELETE'\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function createEntityRelation(projectId, organizationId, properties) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/project/${projectId}/entityRelations`,\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n organizationId,\r\n ...properties\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function createReferenceAttribute({\r\n organizationId,\r\n projectId,\r\n entityRelationId,\r\n parentEntityId,\r\n referencedEntityId,\r\n referencedAttributeId,\r\n attributeProperties\r\n}) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/entityRelations/${entityRelationId}/referenceAttribute`,\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n parentEntityId,\r\n projectId,\r\n organizationId,\r\n referencedAttributeId,\r\n referencedEntityId,\r\n attributeProperties\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function findFormulaReferencesForUnlink({\r\n oneEntityId,\r\n oneEntityName,\r\n oneEntitySysName,\r\n manyEntityId,\r\n manyEntityName,\r\n}) {\r\n const request = await callApiWithAuthorization(\r\n `/api/v0/entity/${oneEntityId}/unlink-check/${manyEntityId}/formula-references`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n oneEntityName,\r\n oneEntitySysName,\r\n manyEntityName\r\n })\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n}","import React, { Component } from \"react\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport SelectedCardinality from \"./Field/SelectedCardinality\";\r\nimport CardinalityOptionsField from \"./Field/CardinalityOptionsField\";\r\nimport ShowMore from \"../Display/ShowMore\";\r\nimport EditorActions from \"../Shared/Edit/EditorActions\";\r\nimport ErrorMessage from '../Shared/Error/ErrorMessage'\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport { addToChangeHistory } from \"../Helpers/Project/Project\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\"\r\nimport { ATTRIBUTE_LABEL } from \"../Helpers/Labels/AttributeLabel\";\r\nimport { ENTITY_LABEL, ENTITY_PLURAL_LABEL } from \"../Helpers/Labels/EntityLabel\";\r\nimport { checkIfContradictiveRelationsExist } from \"./utils\";\r\nimport { isNullOrUndefined } from \"../Helpers/miscellaneous\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { createReferenceAttribute, deleteEntityRelationReferenceAttribute, updateEntityRelation, updateReferenceAttribute } from \"../../API/EntityRelations/EntityRelations\";\r\nimport { getAttributes, updateAttribute } from \"../../API/Attribute/Attribute\";\r\nimport { getCurrentSubscriptionForOrganisation } from \"../../API/Payment/Payment\";\r\n\r\nconst DEFAULT_REFERENCED_ATTRIBUTE = {\r\n attributeName: `Select ${ATTRIBUTE_LABEL}`,\r\n _id: \"\",\r\n rel_id: \"\",\r\n}\r\n\r\nclass LinkedEntitySidebar extends Component {\r\n saveButton = React.createRef();\r\n\r\n RelationOptions = [\"1\", \"many\"];\r\n entityAttributeMap = {};\r\n\r\n AttributeItem = (li, itemProps) => {\r\n let prefix = \"\";\r\n\r\n if (itemProps.dataItem.inherited === \"true\") {\r\n prefix = \"(i)\";\r\n\r\n if (itemProps.dataItem.relName) {\r\n prefix = \"(ia)\";\r\n }\r\n }\r\n\r\n const itemChildren = (\r\n \r\n {li.props.children} {prefix}\r\n {itemProps.dataItem.relName\r\n ? \"- \" + itemProps.dataItem.relName\r\n : \"\"}\r\n \r\n );\r\n\r\n return React.cloneElement(li, li.props, itemChildren);\r\n };\r\n\r\n attributes = [];\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n disabled: true,\r\n relationId: \"\",\r\n relationIdentifier: \"\",\r\n relationName: \"\",\r\n cardinality: \"\",\r\n newCardinality: \"\",\r\n reverseRelationName: \"\",\r\n showReferenceAttribute: false,\r\n referencedAttribute: {},\r\n lookupAttribute: {},\r\n fromEntity: {},\r\n toEntity: {},\r\n inherited: false,\r\n nameExists: false,\r\n targetAttributes: [],\r\n attributesLoading: true,\r\n showAdditionalFields: false,\r\n showChangeCardinalityPopup: false,\r\n preventReferenceAttribute: false,\r\n isLookupRequired: false,\r\n updatingRelationship: false,\r\n showDuplicateIdentifierError: false,\r\n contradictiveRelationError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n identifierError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n relationLabelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n reverseRelationLabelError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n subscription: {}\r\n };\r\n }\r\n\r\n render() {\r\n\r\n const { t } = this.props;\r\n\r\n return (\r\n <>\r\n {this.state.showChangeCardinalityPopup && (\r\n /* refactored - ali */\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {t(\"cardinality_popup.buttons.cancel\", { ns: \"linked_entity/common\" })}\r\n \r\n \r\n {t(\"cardinality_popup.buttons.update\", { ns: \"linked_entity/common\" })}\r\n \r\n
    \r\n
    \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n {\r\n this.state.updatingRelationship &&\r\n \r\n }\r\n
    \r\n \r\n this.props.Unlink(\r\n this.props.SideData.RelationId\r\n )\r\n }\r\n deleteDisabled={this.props.SideData.isManagerAttributeRelation}\r\n saving={this.state.updatingRelationship}\r\n saveClicked={this.Save}\r\n redoClicked={() => this.setDefault()}\r\n hasErrors={!(\r\n this.state.disabled ||\r\n this.state.showDuplicateIdentifierError ||\r\n this.state.showError ||\r\n this.state.nameExists ||\r\n this.state.updatingRelationship\r\n )}\r\n errors={\r\n this.state.isReferenceAttributeExceedingLimit ?\r\n [\r\n t(\"max_attributes_exceeded\", {\r\n limit: this.state.subscription?.maxAttributesPerApp,\r\n entitiesWithAttributeLimitExceeded: this.state.toEntity?.name\r\n })\r\n ]\r\n :\r\n []\r\n }\r\n ShowMoreButtons={false}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n {/*
    Cardinality and Link Settings
    */}\r\n
    \r\n \r\n {\r\n this.state.showDuplicateIdentifierError &&\r\n \r\n  {t(\"relation_identified_used\", { ns: \"linked_entity/property_panel\" })}\r\n \r\n }\r\n \r\n \r\n
    \r\n \r\n\r\n {this.state.cardinality === \"1-*\" && (\r\n <>\r\n {\r\n !this.state.preventReferenceAttribute &&\r\n this.state.targetAttributes.length > 0 &&\r\n
    \r\n \r\n \r\n \r\n \r\n {\r\n t(\"form.reference_attribute.label\", { ns: \"linked_entity/create_link_dialog\" })\r\n }\r\n \r\n \r\n  {this.state.toEntity.name}\r\n \r\n ?\r\n \r\n \r\n
    \r\n }\r\n\r\n {this.state.showReferenceAttribute && (\r\n <>\r\n
    \r\n !!attr._id)}\r\n textField=\"attributeName\"\r\n className=\"form-control-custom\"\r\n value={this.state.referencedAttribute}\r\n name=\"referenceAttribute\"\r\n onChange={this.handleReferenceAttribute}\r\n disabled={this.props.SideData.isManagerAttributeRelation}\r\n />\r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n )}\r\n \r\n )}\r\n {this.state.showAdditionalFields && (\r\n <>\r\n
    \r\n {/* {\r\n this.props.showOrphanRecordFields &&\r\n !this.isDeleteOrphanDisabled() && (\r\n \r\n \r\n \r\n Delete \r\n {this.state.toEntity.name} \r\n records when the\r\n parent \r\n {this.state.fromEntity.name} \r\n record is deleted.\r\n \r\n \r\n )\r\n }\r\n {\r\n this.props.showOrphanRecordFields &&\r\n this.state.cardinality === \"1-1\" && (\r\n \r\n \r\n \r\n Delete \r\n {this.state.fromEntity.name}\r\n records when the\r\n parent\r\n {this.state.toEntity.name}\r\n record is deleted.\r\n \r\n \r\n )\r\n } */}\r\n\r\n
    \r\n
    \r\n
    \r\n {this.props.t(\"relation_label\", { ns: \"linked_entity/property_panel\" })}\r\n {this.state.fromEntity.name}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.props.t(\"relation_label\", { ns: \"linked_entity/property_panel\" })}\r\n {this.state.toEntity.name}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n this.toggleFields(o)}\r\n >\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.mutators) {\r\n this.props.mutators.setFormSaveFunction(() => this.Save);\r\n }\r\n }\r\n\r\n componentDidUpdate = async (props, state) => {\r\n if (\r\n this.props.SideData.relationId &&\r\n props.SideData.relationId !== this.props.SideData.relationId\r\n ) { \r\n let subscription = this.state.subscription;\r\n if (subscription._id === undefined) {\r\n subscription = await getCurrentSubscriptionForOrganisation(this.props.organizationId);\r\n }\r\n const { lookupAttribute } = this.props.SideData;\r\n /**/\r\n let defaultData = {\r\n ...this.props.SideData,\r\n showDuplicateIdentifierError: false,\r\n isLookupRequired: isNullOrUndefined(lookupAttribute) || lookupAttribute.required === true,\r\n newCardinality: this.props.SideData.cardinality,\r\n };\r\n\r\n // cardinality check is required because we set referencedAttribute property only if it is 1-*\r\n if (defaultData.cardinality === \"1-*\" && !defaultData.referencedAttribute._id) {\r\n defaultData.referencedAttribute = DEFAULT_REFERENCED_ATTRIBUTE;\r\n }\r\n\r\n if (defaultData.showReferenceAttribute === undefined) {\r\n defaultData.showReferenceAttribute = false;\r\n }\r\n\r\n this.defaultData = defaultData;\r\n\r\n // let otherEntityId = \"\";\r\n\r\n const preventReferenceAttribute = (\r\n (\r\n this.props.allData.findIndex(\r\n (le) =>\r\n le.relationId !== this.props.SideData.relationId &&\r\n le.fromEntity._id ===\r\n this.props.SideData.fromEntity._id &&\r\n le.toEntity._id === this.props.SideData.toEntity._id\r\n ) > -1\r\n )\r\n ) || this.props.SideData.fromEntity.isUserEntity;\r\n\r\n if (\r\n this.defaultData.cardinality === \"1-*\"\r\n ) {\r\n this.getAttributes()\r\n .then(this.setReferenceAttribute);\r\n }\r\n\r\n this.setState({\r\n ...defaultData,\r\n preventReferenceAttribute,\r\n isRelationNameInUse: false,\r\n contradictiveRelationError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n disabled: true,\r\n subscription\r\n });\r\n }\r\n\r\n if (this.props.mutators && this.state.disabled !== state.disabled) {\r\n this.props.mutators.setFormsWithChanges(prevValue => ({\r\n ...prevValue,\r\n linkedEntityForm: !this.state.disabled\r\n }))\r\n }\r\n\r\n if (state.disabled !== this.state.disabled) {\r\n this.props.setEditPanelChanged(this.state.disabled);\r\n }\r\n };\r\n\r\n copyLinkedEntityLink = () => {\r\n let url = `${process.env.REACT_APP_DESIGNER_URL}/${this.props.orgName}/${this.props.projectName}/Entities/${this.props.sysName}/LinkedEntities/${this.props.SideData.relationId}`;\r\n navigator.clipboard.writeText(url);\r\n };\r\n\r\n toggleFields = (val) => {\r\n this.setState({\r\n showAdditionalFields: val,\r\n });\r\n };\r\n\r\n toggleCardinalityPopup = () => {\r\n if (!this.props.SideData.isManagerAttributeRelation) {\r\n this.setState({\r\n showChangeCardinalityPopup: !this.state.showChangeCardinalityPopup,\r\n });\r\n }\r\n };\r\n\r\n isCardinalityChanged = () => {\r\n if (this.state.contradictiveRelationError.isValid) {\r\n return this.state.cardinality === this.state.newCardinality;\r\n } else {\r\n return true\r\n }\r\n };\r\n\r\n updateCardinality = () => {\r\n this.setState({\r\n cardinality: this.state.newCardinality,\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n this.toggleCardinalityPopup();\r\n };\r\n\r\n handleCardinality = (newCardinality) => {\r\n let { contradictiveRelationError } = this.state\r\n const exists = checkIfContradictiveRelationsExist(\r\n this.props.allData,\r\n {\r\n fromEntity: this.state.fromEntity,\r\n toEntity: this.state.toEntity,\r\n cardinality: newCardinality,\r\n relationId: this.state.relationId\r\n }\r\n )\r\n if (exists) {\r\n contradictiveRelationError.isValid = false\r\n contradictiveRelationError.message = `One to Many relation is not allowed if you've already had a Many to One relation between the same pair of ${ENTITY_PLURAL_LABEL.toLowerCase()}.`\r\n } else {\r\n contradictiveRelationError.isValid = true\r\n contradictiveRelationError.message = \"\"\r\n }\r\n this.setState({\r\n newCardinality,\r\n contradictiveRelationError,\r\n });\r\n };\r\n\r\n checkIfContradictiveRelationExistsFor = (cardinality) => {\r\n if (cardinality === \"1-*\") {\r\n const { allData: relations } = this.props;\r\n const {\r\n fromEntity: { id: fromEntityId },\r\n toEntity: { id: toEntityId },\r\n } = this.state;\r\n const contradictiveRelationIndex = relations.findIndex(\r\n (relation) =>\r\n relation.fromEntity._id === toEntityId &&\r\n relation.toEntity._id === fromEntityId &&\r\n relation.cardinality === \"1-*\"\r\n );\r\n return contradictiveRelationIndex > -1;\r\n }\r\n return false;\r\n };\r\n\r\n handleCheckbox = (e) => {\r\n const { name } = e.target;\r\n if (name === \"isLookupRequired\") {\r\n // this.handleDeleteOrphanRecord({\r\n // target: {\r\n // element: {\r\n // current: {\r\n // name: \"shouldDeleteOrphanRecord\",\r\n // },\r\n // },\r\n // },\r\n // value: true,\r\n // });\r\n }\r\n this.setState({ [name]: e.value }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n handleRelationName = (e) => {\r\n let { relationLabelError } = this.state\r\n if (e.target.value.trim() === \"\") {\r\n relationLabelError.isValid = false\r\n relationLabelError.message = \"Label is required\"\r\n } else {\r\n relationLabelError.isValid = true\r\n relationLabelError.message = \"\"\r\n }\r\n this.setState({\r\n relationLabelError: relationLabelError,\r\n relationName: e.target.value,\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n handleReverseRelationName = (e) => {\r\n let { reverseRelationLabelError } = this.state\r\n if (e.target.value.trim() === \"\") {\r\n reverseRelationLabelError.isValid = false\r\n reverseRelationLabelError.message = \"Label is required\"\r\n } else {\r\n reverseRelationLabelError.isValid = true\r\n reverseRelationLabelError.message = \"\"\r\n }\r\n this.setState({\r\n reverseRelationLabelError: reverseRelationLabelError,\r\n reverseRelationName: e.target.value\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n handleRelationIdentifier = (e) => {\r\n let { identifierError } = this.state\r\n const newValue = e.target.value ? e.target.value.slice(0, e.target.maxLength) : \"\";\r\n const relationWithSameIdentifier = this.props.allData.findIndex(relation => (\r\n relation.relationIdentifier === newValue &&\r\n relation._id !== this.state.relationId\r\n )) > -1;\r\n if (newValue.trim() === \"\") {\r\n identifierError.isValid = false\r\n identifierError.message = \"Relation name is required\"\r\n } else {\r\n identifierError.isValid = true\r\n identifierError.message = \"\"\r\n }\r\n\r\n this.setState({\r\n identifierError: identifierError,\r\n relationIdentifier: newValue,\r\n showDuplicateIdentifierError: relationWithSameIdentifier\r\n }, this.setDisabled)\r\n }\r\n\r\n handleShowReferenceAttribute = (e) => {\r\n const showReferenceAttribute = e.target.value;\r\n this.setState(\r\n {\r\n showReferenceAttribute: e.value,\r\n referencedAttribute: {\r\n attributeName: `Select ${ATTRIBUTE_LABEL}`,\r\n _id: \"\",\r\n rel_id: \"\",\r\n },\r\n attributesLoading: true,\r\n isLookupRequired: false,\r\n isReferenceAttributeExceedingLimit: false\r\n },\r\n () => {\r\n this.setDisabled();\r\n if (showReferenceAttribute) {\r\n this.getAttributes()\r\n .then(this.setReferenceAttribute);\r\n }\r\n }\r\n );\r\n };\r\n\r\n validateReferenceAttributeExceedsSubscriptionLimit = async () => {\r\n const { toEntity, showReferenceAttribute, subscription } = this.state;\r\n if (showReferenceAttribute) {\r\n const attributes = await getAttributes(toEntity._id);\r\n const nonSystemAttributes = attributes.filter(attr => !attr.isSystemAttribute);\r\n const limit = subscription?.maxAttributesPerApp;\r\n this.setState({\r\n isReferenceAttributeExceedingLimit: nonSystemAttributes.length + 1 > limit,\r\n updatingRelationship: false\r\n }, () => {\r\n this.setDisabled()\r\n });\r\n } else {\r\n this.setState({\r\n isReferenceAttributeExceedingLimit: false, \r\n updatingRelationship: false\r\n }, () => {\r\n this.setDisabled()\r\n });\r\n }\r\n }\r\n\r\n handleReferenceAttribute = (e) => {\r\n this.setState({\r\n referencedAttribute: e.target.value,\r\n disabled: true,\r\n // this is turned true to show loader while validating reference attribute limit\r\n // this will be set to false after validation in the validateReferenceAttributeExceedsSubscriptionLimit method\r\n updatingRelationship: true\r\n }, () => {\r\n this.validateReferenceAttributeExceedsSubscriptionLimit();\r\n });\r\n };\r\n\r\n isDeleteOrphanDisabled = () => {\r\n const { cardinality, isLookupRequired } = this.state;\r\n if (cardinality === \"1-*\") {\r\n return isLookupRequired;\r\n }\r\n return false;\r\n };\r\n\r\n handleDeleteOrphanRecord = (e) => {\r\n const { name } = e.target.element.current;\r\n this.setState({ [name]: e.value }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n setDisabled = () => {\r\n let disabled = true;\r\n\r\n let isRelationNameEmpty = this.state.relationName.trim() === \"\";\r\n let isReverseRelationNameEmpty = this.state.reverseRelationName.trim() === \"\";\r\n let isReferenceAttributeNotSelected = this.state.showReferenceAttribute && this.state.referencedAttribute._id === \"\";\r\n let isCardinalitySame = this.defaultData.cardinality === this.state.cardinality;\r\n let isRelationNameSame = this.defaultData.relationName === this.state.relationName;\r\n let isReverseRelationNameSame = this.defaultData.reverseRelationName === this.state.reverseRelationName;\r\n let isShowReferenceAttributeSame = this.defaultData.showReferenceAttribute === this.state.showReferenceAttribute;\r\n /**/\r\n let isReferenceAttributeSame = this.defaultData.referencedAttribute && this.defaultData.referencedAttribute._id === this.state.referencedAttribute._id;\r\n const isLookupRequiredSame = this.state.isLookupRequired === this.defaultData.isLookupRequired;\r\n const isIdentifierSame = this.state.relationIdentifier === this.defaultData.relationIdentifier;\r\n let isDataUnchanged =\r\n isCardinalitySame &&\r\n isRelationNameSame &&\r\n isReverseRelationNameSame &&\r\n isShowReferenceAttributeSame &&\r\n isReferenceAttributeSame &&\r\n isIdentifierSame &&\r\n isLookupRequiredSame;\r\n\r\n let { showError, showDuplicateIdentifierError } = this.state;\r\n\r\n if (\r\n isReverseRelationNameEmpty ||\r\n isRelationNameEmpty ||\r\n isReferenceAttributeNotSelected ||\r\n showError ||\r\n showDuplicateIdentifierError ||\r\n isDataUnchanged ||\r\n this.state.isReferenceAttributeExceedingLimit ||\r\n !this.state.identifierError.isValid ||\r\n !this.state.reverseRelationLabelError.isValid ||\r\n !this.state.relationLabelError.isValid\r\n ) {\r\n disabled = true;\r\n } else {\r\n disabled = false;\r\n }\r\n\r\n this.setState({ disabled }); \r\n };\r\n\r\n toggleDeleteReferencesPopup = (e) => {\r\n this.setState({\r\n showDeleteReferences: !this.state.showDeleteReferences,\r\n });\r\n };\r\n\r\n deleteReferences = (e) => {\r\n let options = {\r\n linkedEntityRelationId: this.props.SideData.relationId,\r\n };\r\n\r\n callApiWithAuthorization(\"/api/v0/removeReferenceFromComponents\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(options),\r\n });\r\n\r\n this.defaultData.cardinality = this.state.cardinality;\r\n\r\n this.toggleDeleteReferencesPopup();\r\n\r\n this.Save(e);\r\n };\r\n\r\n Save = async (e) => {\r\n try {\r\n if (e && e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n this.setState({\r\n updatingRelationship: true\r\n })\r\n debugger;\r\n let properties = {\r\n cardinality: this.state.cardinality,\r\n relationName: this.state.relationName,\r\n sysRelationName: this.props.SideData.sysRelationName,\r\n sysReverseRelationName: this.props.SideData.sysReverseRelationName,\r\n reverseRelationName: this.state.reverseRelationName,\r\n order: this.props.SideData.order,\r\n showReferenceAttribute: this.state.showReferenceAttribute,\r\n identifier: this.state.relationIdentifier\r\n };\r\n\r\n // if (\r\n // this.defaultData.isLookupRequired !== this.state.isLookupRequired &&\r\n // properties.cardinality === \"1-*\" &&\r\n // this.state.referencedAttribute.id &&\r\n // this.state.referencedAttribute.id === this.defaultData.referencedAttribute.id\r\n // ) {\r\n // await updateNode(\"Attribute\", this.state.referencedAttribute.id, {\r\n // required: String(this.state.isLookupRequired)\r\n // });\r\n // }\r\n\r\n if (\r\n this.defaultData.cardinality === \"1-*\" &&\r\n properties.cardinality !== \"1-*\"\r\n ) {\r\n properties.showReferenceAttribute = false;\r\n }\r\n\r\n if (properties.cardinality === \"1-1\") {\r\n properties.deleteLinkingEntityOrphanRecord =\r\n this.state.deleteLinkingEntityOrphanRecord;\r\n } else {\r\n properties.deleteLinkingEntityOrphanRecord = false;\r\n }\r\n\r\n await updateEntityRelation(this.state.relationId, properties);\r\n\r\n let { order } = properties;\r\n\r\n // await updateRelationWithProperty('InheritsLinkedEntity', 'inheritedFrom', this.state.relationId, toUpdateInInheritedRels);\r\n\r\n // Following was removed because we moved display to mongodb so relationship is not required\r\n // await updateRelationWithProperty(\"Displays\", \"relId\", this.state.relationId, {\r\n // relName: this.state.relationName,\r\n // });\r\n\r\n debugger;\r\n if (\r\n properties.showReferenceAttribute !==\r\n this.defaultData.showReferenceAttribute\r\n ) {\r\n // await callApiWithAuthorization(\r\n // \"/api/v0/linkedEntity/\" +\r\n // this.state.relationId +\r\n // \"/referenceAttribute?projectId=\" + this.props.projectId,\r\n // {\r\n // method: \"DELETE\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // }\r\n // );\r\n await deleteEntityRelationReferenceAttribute(this.state.relationId);\r\n properties.referencedAttribute = {};\r\n }\r\n\r\n if (\r\n properties.showReferenceAttribute &&\r\n this.defaultData.referencedAttribute._id !==\r\n this.state.referencedAttribute._id &&\r\n this.state.referencedAttribute._id\r\n ) {\r\n await deleteEntityRelationReferenceAttribute(this.state.relationId);\r\n const referenceAttribute = await this.createReferencedAttribute(\r\n this.state.relationId\r\n );\r\n properties.referencedAttribute = this.state.referencedAttribute;\r\n properties.lookupAttribute = referenceAttribute;\r\n properties.isLookupRequired = properties.lookupAttribute.required;\r\n }\r\n\r\n if (this.defaultData.isLookupRequired !== this.state.isLookupRequired) {\r\n const lookupAttributeId = properties.lookupAttribute && properties.lookupAttribute._id ? properties.lookupAttribute._id : this.defaultData.lookupAttribute._id;\r\n await updateAttribute(lookupAttributeId, {\r\n required: this.state.isLookupRequired\r\n });\r\n }\r\n\r\n this.defaultData = {\r\n ...this.defaultData,\r\n ...properties,\r\n isLookupRequired: this.state.isLookupRequired,\r\n relationIdentifier: properties.identifier\r\n };\r\n if (this.defaultData.lookupAttribute && typeof this.defaultData.lookupAttribute === \"object\") {\r\n this.defaultData.lookupAttribute = {\r\n ...this.defaultData.lookupAttribute,\r\n required: this.defaultData.isLookupRequired\r\n }\r\n }\r\n\r\n this.setState({ disabled: true, updatingRelationship: false }, () => {\r\n this.props.updateElement(this.defaultData);\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n if (this.props.mutators && this.props.mutators.setFormsWithChanges) {\r\n this.props.mutators.setFormsWithChanges(prevValue => ({\r\n ...prevValue,\r\n linkedEntityForm: true\r\n }));\r\n }\r\n }\r\n };\r\n\r\n createReferencedAttribute = async (linkedEntityRelationId) => {\r\n const { fromEntity, toEntity, referencedAttribute, isLookupRequired } = this.state;\r\n const { projectId } = this.props;\r\n\r\n const properties = {\r\n attributeName: `[REF] ${this.state.referencedAttribute.attributeName}`,\r\n attributeLabel: this.state.referencedAttribute.attributeLabel,\r\n primary: \"false\",\r\n required: isLookupRequired,\r\n readOnly: false,\r\n attributeType: \"Entity Lookup\",\r\n group: \"\",\r\n linkedEntityId: linkedEntityRelationId,\r\n entityAttributeRelId: this.state.referencedAttribute.rel_id,\r\n tooltip: this.state.referencedAttribute.attributeName,\r\n description: \"\",\r\n defaultValue: \"\",\r\n };\r\n const parentEntityId = toEntity._id;\r\n const referencedAttributeId = this.state.referencedAttribute._id;\r\n\r\n const referenceAttribute = await createReferenceAttribute({\r\n organizationId: this.props.organizationId,\r\n projectId: projectId,\r\n entityRelationId: linkedEntityRelationId,\r\n parentEntityId: parentEntityId,\r\n referencedEntityId: fromEntity._id,\r\n referencedAttributeId: referencedAttributeId,\r\n attributeProperties: properties\r\n })\r\n\r\n // const request = await callApiWithAuthorization(\r\n // \"/api/v0/entity/\" +\r\n // parentEntityId +\r\n // \"/referenceAttributeAndConfig\",\r\n // {\r\n // method: \"POST\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // body: JSON.stringify({\r\n // properties,\r\n // projectId,\r\n // parentEntityId,\r\n // referencedAttributeId,\r\n // linkedEntityRelationId,\r\n // }),\r\n // }\r\n // );\r\n\r\n // const attribute = await request.json();\r\n\r\n // addToChangeHistory(projectId, {\r\n // action: \"add\",\r\n // resource: \"attribute\",\r\n // resourceId: attribute.id,\r\n // resourceParentId: toEntity.id,\r\n // });\r\n\r\n // updateNode(\"Project\", projectId, { hasSchemaChanges: true })\r\n\r\n return referenceAttribute;\r\n };\r\n\r\n getAttributes = async (e) => {\r\n const { _id: targetEntityId } = this.props.SideData.fromEntity;\r\n // let entityIdOfAttributes = this.props.SideData.reversed ? this.props.SideData.startNodeId : this.props.SideData.endNodeId;\r\n let allAttributes = this.entityAttributeMap[targetEntityId];\r\n if (!allAttributes) {\r\n allAttributes = await getAttributes(targetEntityId);\r\n this.entityAttributeMap[targetEntityId] = allAttributes;\r\n }\r\n const targetAttributes = allAttributes.filter((attr) => attr.attributeType === \"String\" && !attr.isSystemAttribute);\r\n\r\n return targetAttributes;\r\n };\r\n\r\n setReferenceAttribute = (attributes) => {\r\n debugger;\r\n let defaultAttribute = {};\r\n if (\r\n this.props.SideData.referencedAttribute &&\r\n this.props.SideData.referencedAttribute._id\r\n ) {\r\n defaultAttribute = attributes.find(\r\n (attribute) =>\r\n attribute._id === this.props.SideData.referencedAttribute._id\r\n );\r\n } else if (attributes.length > 0 && this.state.showReferenceAttribute) {\r\n defaultAttribute = attributes[0];\r\n } else {\r\n defaultAttribute = DEFAULT_REFERENCED_ATTRIBUTE;\r\n }\r\n\r\n\r\n this.setState({\r\n targetAttributes: attributes,\r\n attributesLoading: false,\r\n referencedAttribute: defaultAttribute,\r\n }, () => {\r\n this.setDisabled()\r\n });\r\n }\r\n\r\n getDisabled = () => {\r\n return this.state.disabled;\r\n };\r\n\r\n continueWithoutSaving = (selectNext) => {\r\n this.setState({ disabled: true }, () => {\r\n selectNext();\r\n });\r\n };\r\n\r\n setDefault = () => {\r\n let { defaultData } = this;\r\n defaultData.disabled = true;\r\n this.setState(defaultData);\r\n };\r\n}\r\n\r\nexport default withTranslation(\"linked_entity/property_panel\")(LinkedEntitySidebar);","import React from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\n\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nimport CardinalityOptionsField from \"./Field/CardinalityOptionsField\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\"\r\nimport { ATTRIBUTE_LABEL } from \"../Helpers/Labels/AttributeLabel\";\r\n\r\nimport { createEntityRelation, createReferenceAttribute } from \"../../API/EntityRelations/EntityRelations\";\r\nimport { getAttributes } from \"../../API/Attribute/Attribute\";\r\nimport { getProject, updateProject } from \"../../API/Project/project\";\r\nimport { checkIfContradictiveRelationsExist } from \"./utils\";\r\nimport { getCurrentSubscriptionForOrganisation } from \"../../API/Payment/Payment\";\r\n\r\nclass CreateLinkDialog extends React.Component {\r\n\r\n\tcreateBtn = React.createRef();\r\n\tcreateAndNewBtn = React.createRef();\r\n\r\n\tentityAttributeMap = {}\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tsubscription: {},\r\n\t\t\trelationIdentifier: \"\",\r\n\t\t\trelationIdentifierChangedByUser: false,\r\n\t\t\tfromEntity: {},\r\n\t\t\tcardinality: \"1-1\",\r\n\t\t\ttoEntity: {},\r\n\t\t\tshowReferenceAttribute: false,\r\n\t\t\tpreventReferenceAttribute: false,\r\n\t\t\tisRequired: false,\r\n\t\t\treferenceAttribute: {},\r\n\t\t\tattributesLoading: true,\r\n\t\t\tcreatingRelation: false,\r\n\t\t\tallAttributes: [],\r\n\t\t\tattributes: [],\r\n\t\t\tcontradictiveRelationError: {\r\n\t\t\t\tisValid: true,\r\n\t\t\t\tmessage: \"\"\r\n\t\t\t},\r\n\t\t\tshowDuplicateIdentifierError: false,\r\n\t\t\tisAccessedFromWorkspace: true\r\n\t\t};\r\n\t}\r\n\r\n\tasync componentDidMount() {\r\n\t\tconst subscription = await getCurrentSubscriptionForOrganisation(this.props.organizationId);\r\n\t\tthis.setState({ subscription });\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (this.props.visible !== prevProps.visible) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tcontradictiveRelationError: {\r\n\t\t\t\t\tisValid: true,\r\n\t\t\t\t\tmessage: \"\"\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\t// if not visible do not show dialog\r\n\t\tconst { visible } = this.props;\r\n\t\tif (!visible) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst { isAccessedFromWorkspace, t } = this.props;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\t\t{t(\"title\", { ns: \"linked_entity/create_link_dialog\" })}\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.state.isReferenceAttributeExceedingLimit &&\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{t(\"errors.max_attributes_exceeded\", {\r\n\t\t\t\t\t\t\t\t\tns: \"linked_entity/create_link_dialog\",\r\n\t\t\t\t\t\t\t\t\tlimit: this.state.subscription?.maxAttributesPerApp,\r\n\t\t\t\t\t\t\t\t\tentitiesWithAttributeLimitExceeded: this.state.toEntity?.name\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\twidth={`${isAccessedFromWorkspace ? '90%' : '60%'}`}\r\n\t\t\t\theight={'80%'}\r\n\t\t\t\tonClose={this.closeDialog}\r\n\t\t\t>\r\n\t\t\t\t
    {\r\n\t\t\t\t\tif (e.key === \"Enter\" && !this.shouldCreateBeDisabled())\r\n\t\t\t\t\t\tthis.create(e)\r\n\t\t\t\t}} className=\"p-0 d-flex flex-column h-100 pt-4\">\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t(\"form.link_message\", { ns: \"linked_entity/create_link_dialog\" })}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.state.fromEntity._id && this.state.toEntity._id &&\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.state.fromEntity._id && this.state.toEntity._id && }\r\n\r\n\t\t\t\t\t\t{this.state.cardinality === \"1-*\" && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t!this.state.attributesLoading &&\r\n\t\t\t\t\t\t\t\t\tthis.state.attributes &&\r\n\t\t\t\t\t\t\t\t\tthis.state.attributes.length > 0 &&\r\n\t\t\t\t\t\t\t\t\t!this.state.preventReferenceAttribute &&\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.state.attributes.length > 0 &&\r\n\t\t\t\t\t\t\t\t\tthis.state.showReferenceAttribute &&\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.creatingRelation && (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t{this.state.creatingRelation &&\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tgetFromEntities = () => {\r\n\t\tif (this.state.toEntity && this.state.toEntity.isUserEntity) {\r\n\t\t\treturn this.props.entities.filter(entity => !entity.isUserEntity);\r\n\t\t}\r\n\t\treturn this.props.entities;\r\n\t}\r\n\r\n\tgetToEntities = () => {\r\n\t\tif (this.state.fromEntity && this.state.fromEntity.isUserEntity) {\r\n\t\t\treturn this.props.entities.filter(entity => !entity.isUserEntity);\r\n\t\t}\r\n\t\treturn this.props.entities;\r\n\t}\r\n\r\n\tonChange = (e) => {\r\n\t\tconst { name, value } = e.target;\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\t[name]: value,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tconst exists = name === \"fromEntity\" || name === \"toEntity\" ? this.checkIfContradictiveRelationExistsFor(this.state.cardinality) : false;\r\n\t\t\t\tlet contradictiveRelationError = {};\r\n\t\t\t\tif (exists) {\r\n\t\t\t\t\tcontradictiveRelationError.isValid = false\r\n\t\t\t\t\tcontradictiveRelationError.message = this.props.t(\"errors.contradictive_relation\", { ns: \"linked_entity/create_link_dialog\" })\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontradictiveRelationError.isValid = true\r\n\t\t\t\t\tcontradictiveRelationError.message = \"\"\r\n\t\t\t\t}\r\n\t\t\t\tif (name === \"fromEntity\" || name === \"toEntity\") {\r\n\t\t\t\t\tthis.setState({ contradictiveRelationError });\r\n\t\t\t\t}\r\n\t\t\t\tif ((name === \"fromEntity\") && this.state.cardinality === \"1-*\" && this.state.toEntity._id !== undefined) {\r\n\t\t\t\t\tthis.setState({ attributesLoading: true });\r\n\t\t\t\t\tthis.getAttributes();\r\n\t\t\t\t}\r\n\t\t\t\tif (\r\n\t\t\t\t\t(name === \"fromEntity\" || name === \"toEntity\") &&\r\n\t\t\t\t\tthis.state.cardinality === \"1-*\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.validateReferenceAttributeCreation();\r\n\t\t\t\t}\r\n\t\t\t\tif ((name === \"fromEntity\" || name === \"toEntity\") && !this.state.relationIdentifierChangedByUser) {\r\n\t\t\t\t\tconst relationIdentifier = this.getDefaultRelationIdentifier();\r\n\t\t\t\t\tthis.setState({ relationIdentifier });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleIdentifierChange = (e) => {\r\n\t\tconst newValue = e.target.value ? e.target.value.slice(0, e.target.maxLength) : \"\";\r\n\t\tconst relationWithSameIdentifier = this.props.relations.findIndex(relation => (\r\n\t\t\trelation.relationIdentifier === newValue\r\n\t\t)) > -1;\r\n\t\tthis.setState({\r\n\t\t\trelationIdentifier: newValue,\r\n\t\t\trelationIdentifierChangedByUser: true,\r\n\t\t\tshowDuplicateIdentifierError: relationWithSameIdentifier\r\n\t\t})\r\n\t}\r\n\r\n\tgetDefaultRelationIdentifier = () => {\r\n\t\tconst { fromEntity, toEntity } = this.state;\r\n\t\tif (!fromEntity._id || !toEntity._id) return \"\";\r\n\t\tconst { relations } = this.props;\r\n\t\tconst relationsBetweenSameEntities = relations.filter(relation => (\r\n\t\t\trelation.fromEntity._id === fromEntity._id && relation.toEntity._id === toEntity._id\r\n\t\t));\r\n\t\tconst numRelationsBetweenSameEntities = relationsBetweenSameEntities.length;\r\n\t\tconst identifier = fromEntity.name + \"_\" + toEntity.name;\r\n\t\treturn numRelationsBetweenSameEntities === 0 ? identifier : identifier + numRelationsBetweenSameEntities;\r\n\t}\r\n\r\n\tswapEntities = (e) => {\r\n\t\tlet { fromEntity, toEntity, contradictiveRelationError } = this.state;\r\n\t\tconst temp = fromEntity;\r\n\t\tfromEntity = toEntity;\r\n\t\ttoEntity = temp;\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tfromEntity,\r\n\t\t\t\ttoEntity,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tconst exists = this.checkIfContradictiveRelationExistsFor(this.state.cardinality);\r\n\r\n\t\t\t\tif (exists) {\r\n\t\t\t\t\tcontradictiveRelationError.isValid = false\r\n\t\t\t\t\tcontradictiveRelationError.message = this.props.t(\"errors.contradictive_relation\", { ns: \"linked_entity/create_link_dialog\" })\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontradictiveRelationError.isValid = true\r\n\t\t\t\t\tcontradictiveRelationError.message = \"\"\r\n\t\t\t\t}\r\n\t\t\t\tthis.setState({ contradictiveRelationError });\r\n\t\t\t\tif (this.state.cardinality === \"1-*\") {\r\n\t\t\t\t\tthis.getAttributes();\r\n\t\t\t\t\tthis.validateReferenceAttributeCreation();\r\n\t\t\t\t}\r\n\t\t\t\tthis.setState({ contradictiveRelationError });\r\n\t\t\t\tif (!this.state.relationIdentifierChangedByUser) {\r\n\t\t\t\t\tconst relationIdentifier = this.getDefaultRelationIdentifier();\r\n\t\t\t\t\tthis.setState({ relationIdentifier });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\thandleCardinality = (newValue) => {\r\n\t\tlet {\r\n\t\t\tcontradictiveRelationError,\r\n\t\t\tshowReferenceAttribute,\r\n\t\t\treferenceAttribute\r\n\t\t} = this.state\r\n\t\tif (newValue === \"1-*\") {\r\n\t\t\tthis.getAttributes();\r\n\t\t\tthis.validateReferenceAttributeCreation();\r\n\t\t}\r\n\t\tif (showReferenceAttribute === true) {\r\n\t\t\tshowReferenceAttribute = false;\r\n\t\t\treferenceAttribute = {};\r\n\t\t}\r\n\t\tconst exists = this.checkIfContradictiveRelationExistsFor(newValue);\r\n\t\tif (exists) {\r\n\t\t\tcontradictiveRelationError.isValid = false\r\n\t\t\tcontradictiveRelationError.message = this.props.t(\"errors.contradictive_relation\", { ns: \"linked_entity/create_link_dialog\" })\r\n\t\t} else {\r\n\t\t\tcontradictiveRelationError.isValid = true\r\n\t\t\tcontradictiveRelationError.message = \"\"\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tattributesLoading: true,\r\n\t\t\tcardinality: newValue,\r\n\t\t\tcontradictiveRelationError,\r\n\t\t\tshowReferenceAttribute,\r\n\t\t\treferenceAttribute\r\n\t\t});\r\n\t};\r\n\r\n\tcheckIfContradictiveRelationExistsFor = (cardinality) => {\r\n\t\tif (cardinality === \"1-*\") {\r\n\t\t\tconst { relations } = this.props;\r\n\t\t\tconst {\r\n\t\t\t\tfromEntity: { _id: fromEntityId },\r\n\t\t\t\ttoEntity: { _id: toEntityId },\r\n\t\t\t} = this.state;\r\n\t\t\treturn checkIfContradictiveRelationsExist(\r\n\t\t\t\tthis.props.relations,\r\n\t\t\t\t{\r\n\t\t\t\t\tfromEntity: { _id: fromEntityId },\r\n\t\t\t\t\ttoEntity: { _id: toEntityId },\r\n\t\t\t\t\tcardinality: \"1-*\",\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\thandleCheckbox = (e) => {\r\n\t\tconst { name } = e.target.element;\r\n\t\tthis.setState({\r\n\t\t\t[name]: e.value,\r\n\t\t}, () => {\r\n\t\t\tif (name === \"showReferenceAttribute\") {\r\n\t\t\t\tthis.validateReferenceAttributeExceedsSubscriptionLimit();\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tshouldCreateBeDisabled = () => {\r\n\t\tconst {\r\n\t\t\tfromEntity, toEntity, relationIdentifier,\r\n\t\t\tshowReferenceAttribute, referenceAttribute,\r\n\t\t\trelationIdentifierChangedByUser, showDuplicateIdentifierError,\r\n\t\t\tcontradictiveRelationError, isReferenceAttributeExceedingLimit\r\n\t\t} = this.state;\r\n\t\tif (!fromEntity._id || !toEntity._id) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (!contradictiveRelationError.isValid) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (showReferenceAttribute && !referenceAttribute._id) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (relationIdentifierChangedByUser) {\r\n\t\t\treturn showDuplicateIdentifierError || !relationIdentifier?.trim();\r\n\t\t}\r\n\t\tif (isReferenceAttributeExceedingLimit) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tcloseDialog = () => {\r\n\t\tthis.reset();\r\n\t\tthis.props.toggle(false);\r\n\t};\r\n\r\n\treset = () => {\r\n\t\tthis.setState({\r\n\t\t\tfromEntity: {},\r\n\t\t\tcardinality: \"1-1\",\r\n\t\t\ttoEntity: {},\r\n\t\t\tshowReferenceAttribute: false,\r\n\t\t\tisRequired: false,\r\n\t\t\tpreventReferenceAttribute: false,\r\n\t\t\treferenceAttribute: {},\r\n\t\t\tattributesLoading: true,\r\n\t\t\tattributes: [],\r\n\t\t\tcreatingRelation: false,\r\n\t\t\tshowDuplicateIdentifierError: false,\r\n\t\t\trelationIdentifier: \"\",\r\n\t\t\trelationIdentifierChangedByUser: false,\r\n\t\t});\r\n\t};\r\n\r\n\tvalidateReferenceAttributeCreation = () => {\r\n\t\tconst { relations } = this.props;\r\n\t\tconst { fromEntity, toEntity } = this.state;\r\n\t\tconst preventReferenceAttribute = (\r\n\t\t\trelations.findIndex((link) => (\r\n\t\t\t\tlink.fromEntity._id === fromEntity._id &&\r\n\t\t\t\tlink.toEntity._id === toEntity._id\r\n\t\t\t)) > -1 || fromEntity.isUserEntity\r\n\t\t);\r\n\t\tthis.setState({ preventReferenceAttribute });\r\n\t};\r\n\r\n\tvalidateReferenceAttributeExceedsSubscriptionLimit = async () => {\r\n\t\tconst { entityAttributeMap } = this;\r\n\t\tconst { toEntity, showReferenceAttribute, subscription } = this.state;\r\n\t\tif (showReferenceAttribute) {\r\n\t\t\tlet attributes = entityAttributeMap[toEntity._id];\r\n\t\t\tif (!attributes) {\r\n\t\t\t\tattributes = await getAttributes(toEntity._id);\r\n\t\t\t\tentityAttributeMap[toEntity._id] = attributes;\r\n\t\t\t}\r\n\t\t\tconst nonSystemAttributes = attributes.filter(attr => !attr.isSystemAttribute);\r\n\t\t\tconst limit = subscription?.maxAttributesPerApp;\r\n\t\t\tthis.setState({ isReferenceAttributeExceedingLimit: nonSystemAttributes.length + 1 > limit });\r\n\t\t} else {\r\n\t\t\tthis.setState({ isReferenceAttributeExceedingLimit: false });\r\n\t\t}\r\n\t}\r\n\r\n\tgetOrder = () => {\r\n\t\tif (this.props.relations.length === 0) {\r\n\t\t\treturn 10000000000;\r\n\t\t}\r\n\r\n\t\treturn parseInt(this.props.relations[this.props.relations.length - 1].order) + 10000000000;\r\n\t};\r\n\r\n\tgenerateSystemRelationName = async () => {\r\n\t\tconst { projectId } = this.props;\r\n\t\tconst { fromEntity, toEntity } = this.state;\r\n\r\n\t\tlet sysRelationName = \"\";\r\n\t\tlet sysReverseRelationName = \"\";\r\n\r\n\t\tconst currentEntityName = fromEntity.sysName;\r\n\t\tconst linkingEntityName = toEntity.sysName;\r\n\r\n\t\tsysRelationName = linkingEntityName + currentEntityName;\r\n\t\tsysReverseRelationName = currentEntityName + linkingEntityName;\r\n\r\n\t\tconst project = await getProject(projectId);\r\n\t\tlet numberOfLinkedEntities = ++project.numberOfLinkedEntities;\r\n\r\n\t\tsysRelationName += numberOfLinkedEntities;\r\n\t\tnumberOfLinkedEntities++;\r\n\r\n\t\tsysReverseRelationName += numberOfLinkedEntities;\r\n\t\tnumberOfLinkedEntities++;\r\n\r\n\t\tproject.numberOfLinkedEntities = numberOfLinkedEntities;\r\n\r\n\t\tupdateProject(projectId, { numberOfLinkedEntities})\r\n\r\n\t\treturn [sysRelationName, sysReverseRelationName];\r\n\t};\r\n\r\n\tgenerateReverseRelationName = () => {\r\n\t\tconst { fromEntity } = this.state;\r\n\t\tconst { relations } = this.props;\r\n\t\tconst initialName = fromEntity.name;\r\n\t\tlet counter = 0;\r\n\t\tlet reverseRelationName = initialName;\r\n\t\tfor (let relationIndex = 0; relationIndex < relations.length; relationIndex++) {\r\n\t\t\tif (relations[relationIndex].reverseRelationName === reverseRelationName) {\r\n\t\t\t\tcounter++;\r\n\t\t\t\treverseRelationName = initialName + counter;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn reverseRelationName;\r\n\t};\r\n\r\n\tgenerateRelationName = () => {\r\n\t\tconst { toEntity } = this.state;\r\n\t\tconst { relations } = this.props;\r\n\t\tconst initialName = toEntity.name;\r\n\t\tlet counter = 0;\r\n\t\tlet relationName = initialName;\r\n\t\tfor (let relationIndex = 0; relationIndex < relations.length; relationIndex++) {\r\n\t\t\tif (relations[relationIndex].relationName === relationName) {\r\n\t\t\t\tcounter++;\r\n\t\t\t\trelationName = initialName + counter;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn relationName;\r\n\t};\r\n\r\n\tgetAttributes = async () => {\r\n\t\ttry {\r\n\t\t\tdebugger;\r\n\t\t\tconst { _id: targetEntityId } = this.state.fromEntity;\r\n\t\t\tlet allAttributes = this.entityAttributeMap[targetEntityId];\r\n\t\t\tif (!allAttributes) {\r\n\t\t\t\tallAttributes = await getAttributes(targetEntityId);\r\n\t\t\t}\r\n\t\t\tconst attributes = allAttributes.filter((attr) => attr.attributeType === \"String\" && !attr.isSystemAttribute);\r\n\t\t\tconst attributesLoading = false;\r\n\t\t\tconst referenceAttribute = attributes[0] || {};\r\n\t\t\tconst isRequired = false;\r\n\t\t\tthis.setState({\r\n\t\t\t\tallAttributes,\r\n\t\t\t\tattributes,\r\n\t\t\t\tattributesLoading,\r\n\t\t\t\treferenceAttribute,\r\n\t\t\t\tisRequired,\r\n\t\t\t\t// isReferenceAttributeExceedingLimit is set to true to prevent the user from creating a reference attribute\r\n\t\t\t\t// while validating if the reference attribute exceeds the subscription limit\r\n\t\t\t\t// the function validateReferenceAttributeExceedsSubscriptionLimit will set this to false if the limit is not exceeded\r\n\t\t\t\tisReferenceAttributeExceedingLimit: true\r\n\t\t\t}, () => {\r\n\t\t\t\tthis.validateReferenceAttributeExceedsSubscriptionLimit();\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tthis.setState({\r\n\t\t\t\terror,\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t// generateSystemRelationName = async (type = \"normal\") => {\r\n\t// const { projectId } = this.props;\r\n\t// const { fromEntity, toEntity } = this.state;\r\n\r\n\t// let newName = \"\";\r\n\r\n\t// const currentEntityName = fromEntity.sysName;\r\n\t// const linkingEntityName = toEntity.sysName;\r\n\r\n\t// if (type === \"reversed\") {\r\n\t// newName = linkingEntityName + currentEntityName;\r\n\t// } else {\r\n\t// newName = currentEntityName + linkingEntityName;\r\n\t// }\r\n\r\n\t// const project = await getNode(projectId);\r\n\t// const numberOfLinkedEntities = ++project.numberOfLinkedEntities;\r\n\t// project.numberOfLinkedEntities = numberOfLinkedEntities;\r\n\t// await updateNode(\"Project\", projectId, project);\r\n\r\n\t// newName += String(numberOfLinkedEntities);\r\n\r\n\t// return newName;\r\n\t// };\r\n\r\n\tcreate = async (e, closeDialog = true) => {\r\n\t\te.preventDefault();\r\n\r\n\t\tthis.setState({\r\n\t\t\tcreatingRelation: true,\r\n\t\t});\r\n\r\n\t\tconst { createBtn, createAndNewBtn, reset } = this;\r\n\t\tconst { toggle, relations, onCreate, updateLink, projectId } = this.props;\r\n\t\tconst { fromEntity, toEntity, cardinality, showReferenceAttribute, relationIdentifier, referenceAttribute } = this.state;\r\n\r\n\t\tcreateBtn.current.disabled = true;\r\n\t\tcreateAndNewBtn.current.disabled = true;\r\n\r\n\t\t//console.time(\"Create Link: \");\r\n\r\n\t\tconst [sysRelationName, sysReverseRelationName] = await this.generateSystemRelationName();\r\n\t\tconst reverseRelationName = toEntity.name;\r\n\t\tconst relationName = fromEntity.name;\r\n\t\tconst order = this.getOrder();\r\n\t\tconst shouldDeleteOrphanRecords = \"false\";\r\n\r\n\t\t// const sysRelationName = await this.generateSystemRelationName();\r\n\t\t// const relationName = this.generateRelationName();\r\n\t\t// const sysReverseRelationName = await this.generateSystemRelationName(\r\n\t\t// \"reversed\"\r\n\t\t// );\r\n\t\t// const reverseRelationName = this.generateReverseRelationName();\r\n\t\t// const order = this.getOrder();\r\n\t\t// const shouldDeleteOrphanRecords = false;\r\n\r\n\t\tconst properties = {\r\n\t\t\tfromEntityId: fromEntity._id,\r\n\t\t\ttoEntityId: toEntity._id,\r\n\t\t\tcardinality,\r\n\t\t\tsysRelationName,\r\n\t\t\trelationName,\r\n\t\t\tsysReverseRelationName,\r\n\t\t\treverseRelationName,\r\n\t\t\torder,\r\n\t\t\tshowReferenceAttribute: showReferenceAttribute,\r\n\t\t\tidentifier: relationIdentifier\r\n\t\t};\r\n\r\n\t\t// const linkRequest = await callApiWithAuthorization(\"/api/v0/project/\" + projectId + \"/relationAndConfig\", {\r\n\t\t// \tmethod: \"POST\",\r\n\t\t// \theaders: {\r\n\t\t// \t\t\"Content-Type\": \"application/json\",\r\n\t\t// \t},\r\n\t\t// \tbody: JSON.stringify({\r\n\t\t// \t\tfromEntity,\r\n\t\t// \t\ttoEntity,\r\n\t\t// \t\tprojectId,\r\n\t\t// \t\torganizationId: this.props.organizationId,\r\n\t\t// \t\tproperties,\r\n\t\t// \t}),\r\n\t\t// });\r\n\t\tconst link = await createEntityRelation(projectId, this.props.organizationId, properties);\r\n\t\tdebugger;\r\n\r\n\t\tif (link.status && link.status === \"Failure\") {\r\n\t\t\tif (link.message === \"Max Relations allowed limit reached\") {\r\n\t\t\t\treset();\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tcreatingRelation: false\r\n\t\t\t\t})\r\n\t\t\t\ttoggle(true)\r\n\t\t\t} else if (link.message === \"Relation identifier is used.\") {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tshowDuplicateIdentifierError: true,\r\n\t\t\t\t\tcreatingRelation: false\r\n\t\t\t\t})\r\n\t\t\t\tcreateBtn.current.disabled = false;\r\n\t\t\t\tcreateAndNewBtn.current.disabled = false;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst relation = {\r\n\t\t\t\t...link,\r\n\t\t\t\trelationId: link._id,\r\n\t\t\t\t_id: relations.length + 1,\r\n\t\t\t\tfromEntity,\r\n\t\t\t\ttoEntity,\r\n\t\t\t\trelationIdentifier\r\n\t\t\t};\r\n\r\n\t\t\tif (cardinality === \"1-1\") {\r\n\t\t\t\trelation.deleteLinkingEntityOrphanRecord = properties.deleteLinkingEntityOrphanRecord === \"true\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.state.cardinality === \"1-*\" && this.state.showReferenceAttribute) {\r\n\t\t\t\tconst referenceAttribute = await this.createReferencedAttribute(link._id);\r\n\t\t\t\tif (referenceAttribute.status === \"Failure\") {\r\n\t\t\t\t\trelation.referencedAttribute = {\r\n\t\t\t\t\t\tattributeName: `Select ${ATTRIBUTE_LABEL}`,\r\n\t\t\t\t\t\tid: \"\",\r\n\t\t\t\t\t\trel_id: \"\",\r\n\t\t\t\t\t};\r\n\t\t\t\t\trelation.lookupAttribute = {\r\n\t\t\t\t\t\tid: \"\",\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t};\r\n\t\t\t\t\trelation.showReferenceAttribute = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\trelation.referencedAttribute = this.state.referenceAttribute;\r\n\t\t\t\t\trelation.lookupAttribute = referenceAttribute;\r\n\t\t\t\t\trelation.isLookupRequired = relation.lookupAttribute.required;\r\n\t\t\t\t\trelation.showReferenceAttribute = true;\r\n\t\t\t\t}\r\n\t\t\t} else if (properties.cardinality === \"1-*\") {\r\n\t\t\t\trelation.referencedAttribute = {\r\n\t\t\t\t\tattributeName: `Select ${ATTRIBUTE_LABEL}`,\r\n\t\t\t\t\tid: \"\",\r\n\t\t\t\t\trel_id: \"\",\r\n\t\t\t\t};\r\n\t\t\t\trelation.lookupAttribute = {\r\n\t\t\t\t\tid: \"\",\r\n\t\t\t\t\trequired: false,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tconsole.timeEnd(\"Create Link: \");\r\n\r\n\t\t\tawait onCreate(relation);\r\n\r\n\t\t\treset();\r\n\t\t\tif (closeDialog) {\r\n\t\t\t\ttoggle(false);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tcreateReferencedAttribute = async (linkedEntityRelationId) => {\r\n\t\tconst { fromEntity, toEntity, referenceAttribute, isRequired } = this.state;\r\n\t\tconst { projectId } = this.props;\r\n\t\t// const attributesOfParentEntity = await getAllAttributes(toEntity.id);\r\n\t\t// let sysName = referenceAttribute.attributeName\r\n\t\t// .replace(/[^a-zA-Z0-9]/g, \"\")\r\n\t\t// .toLowerCase();\r\n\r\n\t\t// let pattern = \"^\" + sysName + \"(\\\\d+)?$\";\r\n\t\t// let regex = new RegExp(pattern, \"g\");\r\n\r\n\t\t// const initialName = sysName;\r\n\t\t// let counter = 0;\r\n\r\n\t\t// for (let i = 0; i < attributesOfParentEntity.length; i++) {\r\n\t\t// if (attributesOfParentEntity[i].sysName === sysName) {\r\n\t\t// counter++;\r\n\t\t// sysName = initialName + String(counter);\r\n\t\t// i = 0;\r\n\t\t// }\r\n\t\t// }\r\n\r\n\t\t// let order = 10000000000;\r\n\r\n\t\t// if (attributesOfParentEntity.length > 0) {\r\n\t\t// order =\r\n\t\t// order +\r\n\t\t// parseInt(\r\n\t\t// attributesOfParentEntity[\r\n\t\t// attributesOfParentEntity.length - 1\r\n\t\t// ].order\r\n\t\t// );\r\n\t\t// }\r\n\r\n\t\tconst properties = {\r\n\t\t\tattributeName: `[REF] ${this.state.referenceAttribute.attributeName}`,\r\n\t\t\tattributeLabel: this.state.referenceAttribute.attributeLabel,\r\n\t\t\tprimary: \"false\",\r\n\t\t\trequired: isRequired,\r\n\t\t\treadOnly: false,\r\n\t\t\tattributeType: \"Entity Lookup\",\r\n\t\t\tgroup: \"\",\r\n\t\t\tlinkedEntityId: linkedEntityRelationId,\r\n\t\t\tentityAttributeRelId: this.state.referenceAttribute.rel_id,\r\n\t\t\ttooltip: this.state.referenceAttribute.attributeName,\r\n\t\t\tdescription: \"\",\r\n\t\t\tdefaultValue: \"\",\r\n\t\t};\r\n\t\tconst parentEntityId = toEntity._id;\r\n\t\tconst referencedAttributeId = this.state.referenceAttribute._id;\r\n\r\n\t\t// const request = await callApiWithAuthorization(\"/api/v0/entity/\" + parentEntityId + \"/referenceAttributeAndConfig\", {\r\n\t\t// \tmethod: \"POST\",\r\n\t\t// \theaders: {\r\n\t\t// \t\t\"Content-Type\": \"application/json\",\r\n\t\t// \t},\r\n\t\t// \tbody: JSON.stringify({\r\n\t\t// \t\tproperties,\r\n\t\t// \t\tprojectId,\r\n\t\t// \t\tparentEntityId,\r\n\t\t// \t\treferencedAttributeId,\r\n\t\t// \t\tlinkedEntityRelationId,\r\n\t\t// \t}),\r\n\t\t// });\r\n\r\n\t\t// const attribute = await request.json();\r\n\r\n\t\tconst attribute = await createReferenceAttribute({\r\n\t\t\torganizationId: this.props.organizationId,\r\n\t\t\tprojectId: projectId,\r\n\t\t\tentityRelationId: linkedEntityRelationId,\r\n\t\t\tparentEntityId: parentEntityId,\r\n\t\t\treferencedEntityId: fromEntity._id,\r\n\t\t\treferencedAttributeId: referencedAttributeId,\r\n\t\t\tattributeProperties: properties\r\n\t\t});\r\n\r\n\t\t// let attribute = await createNode(\"Attribute\", {\r\n\t\t// attributeName: this.state.referenceAttribute.attributeName,\r\n\t\t// attributeLabel: this.state.referenceAttribute.attributeLabel,\r\n\t\t// primary: false,\r\n\t\t// required: isRequired,\r\n\t\t// readOnly: false,\r\n\t\t// attributeType: \"Entity Lookup\",\r\n\t\t// group: \"\",\r\n\t\t// sysName: sysName,\r\n\t\t// linkedEntityId: linkedEntityRelationId,\r\n\t\t// entityAttributeRelId: this.state.referenceAttribute.rel_id,\r\n\t\t// tooltip: \"\",\r\n\t\t// description: \"\",\r\n\t\t// defaultValue: \"\"\r\n\t\t// });\r\n\r\n\t\t// callApiWithAuthorization(\"/api/v0/nodes/createAttributeRoles\", {\r\n\t\t// method: \"POST\",\r\n\t\t// headers: {\r\n\t\t// \"Content-Type\": \"application/json\",\r\n\t\t// },\r\n\t\t// body: JSON.stringify({\r\n\t\t// projectId: projectId,\r\n\t\t// entityId: toEntity.id,\r\n\t\t// attributeId: attribute.id,\r\n\t\t// }),\r\n\t\t// });\r\n\r\n\t\treturn attribute;\r\n\t};\r\n\r\n\tcreateAndReset = (e) => {\r\n\t\tthis.create(e, false);\r\n\t};\r\n}\r\n\r\nexport default withTranslation(\"linked_entity/create_link_dialog\")(CreateLinkDialog);","export function filterRecommendedRelations(recommendedRelations, existingRelations) {\r\n return recommendedRelations.filter(relation => {\r\n const isBetweenUserProfile = relation.from === 'User Profile' || relation.to === 'User Profile';\r\n return !isBetweenUserProfile && !existingRelations.some(existingRelation => {\r\n return (\r\n (\r\n (\r\n existingRelation.fromEntity.name === relation.from &&\r\n existingRelation.toEntity.name === relation.to\r\n ) ||\r\n (\r\n existingRelation.fromEntity.name === relation.to &&\r\n existingRelation.toEntity.name === relation.from\r\n )\r\n )\r\n );\r\n });\r\n })\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { getAliceRecommendedReferenceAttributeForRelation, getAliceRecommendedRelations, importRelationInProject } from \"../../../API/AliceGPT/AliceGPT\";\r\nimport { Grid, GridColumn } from \"@progress/kendo-react-grid\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport SelectedCardinality from \"../Field/SelectedCardinality\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { getAllAttributes } from \"../../Helpers/Schema/Schema\";\r\nimport { getDatalakeImageUrl } from \"../../Helpers/DateLakeStorage\";\r\nimport { ENTITY_RELATION_PLURAL_LABEL } from \"../../Helpers/Labels/EntityRelationLabel\";\r\nimport { ATTRIBUTE_LABEL } from \"../../Helpers/Labels/AttributeLabel\";\r\nimport { filterRecommendedRelations } from \"./utils\";\r\nimport RecommendedRelationCard from \"../../Shared/Recommendation/Relations/RecommendedRelationCard\";\r\nimport FailedToLoadError from \"../../Shared/Recommendation/Error/FailedToLoadError\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\";\r\nimport { getAttributes } from \"../../../API/Attribute/Attribute\";\r\nimport { getCurrentSubscriptionForOrganisation } from \"../../../API/Payment/Payment\";\r\nimport { getEntitiesExceedingAttributeLimitOnCreatingRelations } from \"../../Dashboard/Project/AliceGPT/utils\";\r\nimport { OPENAI_MODEL } from \"../../../Constants/OpenAI\";\r\n\r\nfunction AliceRelationRecommendationDialog({\r\n organizationId, projectId, entities, relations,\r\n onRelationsCreated, toggleDialog\r\n}) {\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [allEntities, setAllEntities] = useState([...entities]);\r\n const [recommendedRelations, setRecommendedRelations] = useState([]);\r\n const [subscription, setSubscription] = useState({});\r\n const [entitiesWithAttributeLimitExceed, setEntitiesWithAttributeLimitExceed] = useState([]);\r\n\r\n const [creatingRelations, setCreatingRelations] = useState(false);\r\n\r\n const [error, setError] = useState(\"\");\r\n\r\n const { t } = useTranslation(\"linked_entity/alice_relation_recommendation_dialog\");\r\n\r\n useEffect(() => {\r\n getEntities()\r\n .then(getRecommendedRelations)\r\n .then(getSubscrition)\r\n .catch(e => setError(e.message))\r\n .finally(() => setLoading(false));\r\n }, []);\r\n\r\n useEffect(() => {\r\n const entitiesWithAttributeLimitExceeded = getEntitiesExceedingAttributeLimitOnCreatingRelations(\r\n allEntities,\r\n recommendedRelations,\r\n subscription\r\n )\r\n setEntitiesWithAttributeLimitExceed(entitiesWithAttributeLimitExceeded);\r\n }, [recommendedRelations])\r\n\r\n async function getEntities() {\r\n const entitiesWithAttributesPromises = entities.map(async entity => {\r\n const attributes = await getAttributes(entity._id);\r\n attributes.forEach(attribute => attribute.selected = !attribute.isSystemAttribute);\r\n return {\r\n ...entity,\r\n attributes\r\n }\r\n });\r\n const entitiesWithAttributes = await Promise.all(entitiesWithAttributesPromises);\r\n setAllEntities(entitiesWithAttributes);\r\n }\r\n\r\n async function getRecommendedRelations() {\r\n const entityNames = entities.map(entity => entity.name);\r\n const response = await getAliceRecommendedRelations(entityNames, OPENAI_MODEL);\r\n const filteredRelations = filterRecommendedRelations(response, relations);\r\n // filter one relation for each pair of entity\r\n const uniqueRelations = [];\r\n const uniqueRelationKeys = {};\r\n for (const relation of filteredRelations) {\r\n const relationKey = `${relation.from}-${relation.to}`;\r\n const reverseRelationKey = `${relation.to}-${relation.from}`;\r\n if (!uniqueRelationKeys[relationKey] && !uniqueRelationKeys[reverseRelationKey]) {\r\n uniqueRelationKeys[relationKey] = true;\r\n uniqueRelations.push(relation);\r\n }\r\n }\r\n setRecommendedRelations(uniqueRelations);\r\n }\r\n\r\n async function getSubscrition() {\r\n const subscription = await getCurrentSubscriptionForOrganisation(organizationId);\r\n setSubscription(subscription);\r\n }\r\n\r\n function toggleRelationChecked(relationIndex) {\r\n const newRecommendedRelations = [...recommendedRelations];\r\n newRecommendedRelations[relationIndex].checked = !newRecommendedRelations[relationIndex].checked;\r\n newRecommendedRelations[relationIndex].showReferenceAttribute = false;\r\n setRecommendedRelations(newRecommendedRelations);\r\n }\r\n\r\n function toggleShowReferenceAttribute(relationIndex) {\r\n setRecommendedRelations(\r\n relations => relations.map((relation, index) => {\r\n if (index === relationIndex) {\r\n const recommendedAttribute = getRecommendedAttribute(relationIndex);\r\n return {\r\n ...relation,\r\n checked: (\r\n !relation.checked &&\r\n !relation.showReferenceAttribute\r\n ? true :\r\n relation.checked\r\n ),\r\n showReferenceAttribute: recommendedAttribute === null ? false : !relation.showReferenceAttribute,\r\n referenceAttribute: recommendedAttribute,\r\n referenceAttributeLoading: false\r\n }\r\n }\r\n return relation;\r\n })\r\n );\r\n }\r\n\r\n function getEntityByName(name) {\r\n return allEntities.find(entity => entity.name === name);\r\n }\r\n\r\n function getRecommendedAttribute(relationIndex) {\r\n const relation = recommendedRelations[relationIndex];\r\n\r\n const fromEntity = getEntityByName(relation.from);\r\n\r\n const fromEntityAttributesNames = fromEntity.attributes.filter(attribute => (\r\n !attribute.isSystemAttribute && attribute.attributeType === \"String\"\r\n )).map(attribute => attribute.attributeName);\r\n\r\n return fromEntityAttributesNames.length > 0 ? fromEntityAttributesNames[0] : null;\r\n }\r\n\r\n function handleReferenceAttributeChange(event, index) {\r\n const newRecommendedRelations = [...recommendedRelations];\r\n newRecommendedRelations[index].referenceAttribute = event.target.value;\r\n setRecommendedRelations(newRecommendedRelations);\r\n }\r\n\r\n function handleCardinalityChange(event, index) {\r\n setRecommendedRelations(prevValue => {\r\n return prevValue.map((relation, relationIndex) => {\r\n if (relationIndex === index) {\r\n return {\r\n ...relation,\r\n cardinality: event.target.value.value\r\n }\r\n }\r\n return relation;\r\n });\r\n })\r\n }\r\n\r\n function getSelectedAttributeNameOfEntity(fromEntityName) {\r\n const fromEntity = allEntities.find(entity => entity.name === fromEntityName);\r\n return (\r\n fromEntity.attributes ?\r\n fromEntity.attributes\r\n .filter(attribute => !attribute.isSystemAttribute && attribute.attributeType === \"String\")\r\n .map(attribute => attribute.attributeName)\r\n :\r\n []\r\n );\r\n }\r\n\r\n async function handleSubmit() {\r\n try {\r\n setCreatingRelations(true);\r\n const selectedRelations = recommendedRelations.filter(relation => relation.checked);\r\n const relations = await importRelationInProject(organizationId, projectId, selectedRelations);\r\n onRelationsCreated(relations);\r\n setCreatingRelations(false);\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n handleToggle();\r\n }\r\n }\r\n\r\n function handleToggle() {\r\n toggleDialog();\r\n }\r\n\r\n function isAddDisabled() {\r\n return (\r\n recommendedRelations.filter(relation => relation.checked).length === 0 ||\r\n recommendedRelations.some(relation => relation.showReferenceAttribute && !relation.referenceAttribute) ||\r\n recommendedRelations.some(relation => relation.referenceAttributeLoading) ||\r\n creatingRelations ||\r\n entitiesWithAttributeLimitExceed.length > 0\r\n );\r\n }\r\n\r\n function handleSelectAll() {\r\n setRecommendedRelations(recommendedRelations.map(relation => ({\r\n ...relation,\r\n checked: !recommendedRelations.every(relation => relation.checked)\r\n })));\r\n }\r\n\r\n function handleSwap(event, index) {\r\n event.stopPropagation();\r\n const newRecommendedRelations = recommendedRelations.map((relation, relationIndex) => {\r\n if (relationIndex === index) {\r\n return {\r\n ...relation,\r\n from: recommendedRelations[index].to,\r\n to: recommendedRelations[index].from,\r\n referenceAttribute: null,\r\n referenceAttributeLoading: false,\r\n showReferenceAttribute: false\r\n }\r\n }\r\n return relation;\r\n })\r\n setRecommendedRelations(newRecommendedRelations);\r\n }\r\n\r\n return (\r\n \r\n relation.checked)}\r\n value={recommendedRelations.every(relation => relation.checked)}\r\n onChange={handleSelectAll}\r\n /> \r\n { t(\"title\", { ns: \"linked_entity/alice_relation_recommendation_dialog\" }) }\r\n  \r\n {\r\n entitiesWithAttributeLimitExceed.length > 0 &&\r\n \r\n {\r\n t(\"max_attributes_exceeded\", {\r\n limit: subscription.maxAttributesPerApp,\r\n entitiesWithAttributeLimitExceeded: entitiesWithAttributeLimitExceed.join(\", \"),\r\n })\r\n }\r\n \r\n }\r\n \r\n )}\r\n height={\"80%\"}\r\n width={\"90%\"}\r\n onClose={handleToggle}\r\n >\r\n {\r\n loading &&\r\n
    \r\n
    \r\n \"\"/\r\n

    { t(\"loading_message\", { ns: \"linked_entity/alice_relation_recommendation_dialog\" }) }

    \r\n
    \r\n
    \r\n }\r\n {\r\n !loading &&\r\n error.length > 0 &&\r\n \r\n }\r\n {\r\n !loading &&\r\n error.length === 0 &&\r\n
    \r\n {\r\n recommendedRelations.length === 0 &&\r\n
    \r\n { t(\"no_relations_message\", { ns: \"linked_entity/alice_relation_recommendation_dialog\" }) }\r\n
    \r\n }\r\n {recommendedRelations.map((relation, index) => (\r\n toggleRelationChecked(index)}\r\n onCardinalityChange={(event) => handleCardinalityChange(event, index)}\r\n onAddReferenceAttributeChange={(event) => toggleShowReferenceAttribute(index)}\r\n onReferenceAttributeChange={(event) => handleReferenceAttributeChange(event, index)}\r\n onSwap={event => handleSwap(event, index)}\r\n />\r\n ))}\r\n
    \r\n }\r\n {\r\n !loading &&\r\n recommendedRelations.length > 0 &&\r\n \r\n
    \r\n {\r\n creatingRelations &&\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 toggleRelationChecked(index)}\r\n disabled={relation.isStatic}\r\n >\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n relation.cardinality === \"1-*\"\r\n ?\r\n e.stopPropagation()}>\r\n {\r\n e.syntheticEvent.stopPropagation();\r\n e.nativeEvent.stopPropagation();\r\n toggleShowReferenceAttribute(index)\r\n }}\r\n onClick={e => {\r\n e.stopPropagation()\r\n }} />\r\n  \r\n Add Reference {ATTRIBUTE_LABEL}\r\n \r\n :\r\n <> \r\n }\r\n {\r\n relation.showReferenceAttribute\r\n ?\r\n handleReferenceAttributeChange(e, index)}\r\n onOpen={e => {\r\n e.syntheticEvent.stopPropagation();\r\n }}\r\n onClose={e => {\r\n e.syntheticEvent.stopPropagation();\r\n }} />\r\n :\r\n <> \r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n*/\r\n\r\nexport default AliceRelationRecommendationDialog;","import React, { Component } from \"react\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport LinkedEntitySidebar from \"./LinkedEntitySidebar\";\r\nimport CreateLinkDialog from \"./CreateLinkDialog\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport CardinalityOptionsField from \"./Field/CardinalityOptionsField\";\r\nimport { PageContainer, Content, Header } from \"../Drawer/PageContainer\";\r\nimport Alice from \"../Display/Alice\";\r\nimport RemoveDialog from \"../Shared/Remove/RemoveDialog\";\r\nimport SaveDialog from \"../Shared/Remove/SaveDialog\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { CheckForInternalUser } from \"../Helpers/miscellaneous\";\r\nimport ErrorMessage from '../Shared/Error/ErrorMessage'\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport Upgarde from \"../Shared/Subscription/Upgrade\";\r\nimport ServerError from \"../Shared/Error/ServerError\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\";\r\nimport { ENTITY_LABEL } from \"../Helpers/Labels/EntityLabel\";\r\nimport { ATTRIBUTE_LABEL } from \"../Helpers/Labels/AttributeLabel\";\r\nimport WorkspaceAppModelContext from \"../../Context/Workspace/WorkspaceAppModelContext\";\r\nimport AliceRelationRecommendationDialog from \"./Recommendation/AliceRelationRecommendationDialog\";\r\nimport { checkIfContradictiveRelationsExist } from \"./utils\";\r\nimport { getProjectRelations } from \"../Helpers/Schema/Schema\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getEntities } from \"../../API/Entity/Entity\";\r\nimport { deleteEntityRelation, deleteEntityRelationMirrorAttribute, deleteEntityRelationReferenceAttribute, findFormulaReferencesForUnlink, updateEntityRelation } from \"../../API/EntityRelations/EntityRelations\";\r\nimport { getProject, updateProject } from \"../../API/Project/project\";\r\nimport { getAttributes, updateAttribute } from \"../../API/Attribute/Attribute\";\r\n\r\nclass DragCell extends React.Component {\r\n render() {\r\n return (\r\n {\r\n DragCell.reorder(this.props.dataItem);\r\n e.preventDefault();\r\n e.dataTransfer.dropEffect = \"copy\";\r\n }}\r\n onDragEnd={(e) => {\r\n e.preventDefault();\r\n DragCell.endDrag(this.props.dataItem);\r\n }}\r\n >\r\n {\r\n DragCell.dragStart(this.props.dataItem);\r\n e.dataTransfer.setData(\"dragging\", \"\");\r\n }}\r\n >\r\n {this.props.dataItem._id}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nclass LinkedEntity extends Component {\r\n static contextType = MsalContext;\r\n\r\n LinkText = {\r\n \"1-1\": \"One to One\",\r\n \"1-*\": \"One to Many\",\r\n \"*-*\": \"Many to Many\",\r\n };\r\n\r\n SubmitButton = React.createRef();\r\n\r\n AttributeItem = (li, itemProps) => {\r\n const index = itemProps.index;\r\n const itemChildren = (\r\n \r\n {li.props.children}\r\n {itemProps.dataItem.relName\r\n ? \"- \" + itemProps.dataItem.relName\r\n : \"\"}\r\n \r\n );\r\n return React.cloneElement(li, li.props, itemChildren);\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n data: [],\r\n panes: [\r\n { collapsible: false },\r\n { size: \"475px\", min: \"475px\", collapsible: false },\r\n ],\r\n showAddLinkedEntityDialog: false,\r\n toLinkEntity: { name: `Select ${ENTITY_LABEL}`, _id: \"\" },\r\n relationName: \"\",\r\n reverseRelationName: \"\",\r\n showReferenceAttribute: false,\r\n referenceAttribute: { attributeName: `Select ${ATTRIBUTE_LABEL}`, _id: \"\" },\r\n attributesOfSelectedEntity: [],\r\n filterableEntities: [],\r\n SideData: {},\r\n selectedId: \"\",\r\n previousSelectedId: \"\",\r\n toSelectId: \"\",\r\n draggedOverItemIndex: -1,\r\n activeItemIndex: -1,\r\n isInternalUser: false,\r\n oneManyLinkWithSameEntity: false,\r\n showUpgradeDailog: false,\r\n contradictiveRelationError: {\r\n isValid: true,\r\n message: \"\",\r\n },\r\n selected: {},\r\n processingLinkedEntity: false,\r\n referenceAttr: [],\r\n referenceChecked: false,\r\n showAliceGPTDialog: false,\r\n isEditPanelSaveDisabled: true\r\n };\r\n\r\n this.SidebarSubentity = React.createRef();\r\n DragCell.reorder = this.reorder.bind(this);\r\n DragCell.dragStart = this.dragStart.bind(this);\r\n DragCell.endDrag = this.endDrag.bind(this);\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.getAllEntities();\r\n this.getAllLinkedEntities();\r\n this.getProjectInternalModeStatus();\r\n // const currentOrganization = this.props.organizations.find(org => org._id === this.props.organizationId);\r\n // this.props.i18n.changeLanguage(currentOrganization.platformLanguage);\r\n };\r\n\r\n rowRender = (trElement, props) => {\r\n const trProps = { className: \"k-master-row\" };\r\n if (props.dataItem.selected) {\r\n trProps.className += \" k-state-selected\";\r\n }\r\n if (props.dataItem.isHovered) {\r\n if (this.state.activeItemIndex > this.state.draggedOverItemIndex) {\r\n trProps.className = \" hovered-row-above\";\r\n } else {\r\n trProps.className = \" hovered-row-below\";\r\n }\r\n }\r\n return React.cloneElement(trElement, trProps, trElement.props.children);\r\n };\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n\r\n if (this.state.showServerError) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n const { t } = this.props;\r\n\r\n return (\r\n <>\r\n {this.state.visible && (\r\n \r\n )}\r\n {this.state.UnlinkPopup && (\r\n 0 ?\r\n t(\"message.with_reference_attribute\", {\r\n ns: \"linked_entity/remove_dialog\",\r\n fromEntity: this.getEntityToUnlink()?.fromEntity?.label,\r\n toEntity: this.getEntityToUnlink()?.toEntity?.label\r\n }) :\r\n t(\"message.without_reference_attribute\", {\r\n ns: \"linked_entity/remove_dialog\",\r\n fromEntity: this.getEntityToUnlink()?.fromEntity?.label,\r\n toEntity: this.getEntityToUnlink()?.toEntity?.label\r\n })\r\n }\r\n Title={t(\"title\", { ns: \"linked_entity/remove_dialog\" })}\r\n cancelButtonText={t(\"buttons.cancel\", { ns: \"linked_entity/remove_dialog\" })}\r\n deleteButtonText={t(\"buttons.unlink\", { ns: \"linked_entity/remove_dialog\" })}\r\n icon=\"unlink\"\r\n referenceAttr={this.state.referenceAttr}\r\n hideDeleteButton={this.state.referenceChecked && this.state.referenceAttr.length > 0}\r\n hideCancelButton={this.state.referenceChecked && this.state.referenceAttr.length > 0}\r\n orgName={this.props.orgName}\r\n projectName={this.props.projectName}\r\n referenceMessage={t(\"message.update_formula\")}\r\n />\r\n )}\r\n {this.state.showChangeCardinalityPopup && (\r\n \r\n {this.state.processingLinkedEntity && }\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {this.state.processingLinkedEntity && (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n \r\n {t(\"buttons.cancel\", { ns: \"linked_entity/change_cardinality_dialog\" })}\r\n \r\n \r\n {t(\"buttons.update\", { ns: \"linked_entity/change_cardinality_dialog\" })}\r\n \r\n
    \r\n
    \r\n \r\n \r\n )}\r\n \r\n {\r\n this.state.showAliceGPTDialog &&\r\n \r\n }\r\n \r\n
    \r\n this.toggleAddLinkedEntityDialog(false)}\r\n showHelpCenter={(this.state.isInternalUser && this.props.advancedMode) ? true : false}\r\n user={this.props.user}\r\n helpCenterFor={\"LinkedEntity\"}\r\n // action3Text={this.props.advancedMode ? \"Alice AI Recommendation\" : null}\r\n // action3Disabled={false}\r\n // action3Icon={this.props.advancedMode ? \"fas fa-lightbulb-on\" : null}\r\n // action3Clicked={this.props.advancedMode ? this.toggleRecommendRelations : null}\r\n action2Text={this.props.showAIButtons && t(\"header.buttons.alice_ai\", { ns: \"linked_entity/common\" })}\r\n action2Disabled={false}\r\n action2Icon={this.props.showAIButtons && \"fas fa-lightbulb-on\"}\r\n action2Clicked={this.props.showAIButtons && this.toggleAliceGPTDialog}\r\n >\r\n \r\n \r\n
    \r\n \r\n {\r\n this.state.showUpgradeDailog &&\r\n bigger apps? '}\r\n toggleDialog={this.toggleUpgradeDailog}\r\n Type={'Pro'}\r\n />\r\n }\r\n {this.state.data.length === 0 && (\r\n \r\n {this.props.t(\"message_1\")}\r\n
    \r\n
    \r\n {this.props.t(\"message_2\")}\r\n
    \r\n )}\r\n {this.state.data.length > 0 && (\r\n <>\r\n \r\n
    \r\n \r\n ({\r\n ...item,\r\n selected:\r\n item.relationId ===\r\n this.state.selectedId,\r\n isHovered:\r\n index ===\r\n this.state\r\n .draggedOverItemIndex,\r\n index,\r\n })\r\n )}\r\n onRowClick={this.selectElement}\r\n selectedField=\"selected\"\r\n >\r\n \r\n (\r\n \r\n {/* {props.dataItem.fromEntity.name} */}\r\n {\r\n props.dataItem\r\n .fromEntity.name\r\n }\r\n \r\n )}\r\n />\r\n (\r\n \r\n \r\n this.toggleCardinalityPopup(\r\n props.dataItem\r\n )\r\n }\r\n >\r\n {\r\n props.dataItem\r\n .cardinalityText\r\n }\r\n \r\n \r\n )}\r\n />\r\n (\r\n \r\n {/* {props.dataItem.toEntity.name} */}\r\n {\r\n props.dataItem\r\n .toEntity.name\r\n }\r\n \r\n )}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n {\r\n \r\n {\r\n ({ state, mutators }) => (\r\n this.setState({ isEditPanelSaveDisabled })}\r\n mutators={mutators}\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 onSplitterSizeChange = (e) => {\r\n this.setState({ panes: e.newState });\r\n };\r\n\r\n checkFormulaReferenceForUnlink = async () => {\r\n this.setState({\r\n referenceAttr: [],\r\n referenceChecked: false\r\n });\r\n const response = await findFormulaReferencesForUnlink({\r\n oneEntityId: this.state.SideData.fromEntity._id,\r\n oneEntityName: this.state.SideData.fromEntity.name,\r\n oneEntitySysName: this.state.SideData.fromEntity.sysName,\r\n manyEntityId: this.state.SideData.toEntity._id,\r\n manyEntityName: this.state.SideData.toEntity.name,\r\n })\r\n this.setState({\r\n referenceAttr: Array.from(new Set(response.message)),\r\n referenceChecked: true,\r\n processingLinkedEntity: false\r\n });\r\n }\r\n // Get data part\r\n getAllEntities = async () => {\r\n try {\r\n let entities = await getEntities(this.props.projectId);\r\n entities = entities.filter((entity) => entity.isUserEntity !== true);\r\n entities = entities.sort((a, b) => a.order - b.order);\r\n const filterableEntities = [\r\n {\r\n name: this.props.t(\"show_all_objects_option\", { ns: \"linked_entity/common\" }),\r\n _id: \"\",\r\n },\r\n ...entities,\r\n ];\r\n const entityToFilterOn = filterableEntities[0];\r\n let isInternalUser = CheckForInternalUser(this.props.user.email);\r\n this.setState({\r\n isInternalUser: isInternalUser,\r\n entityToFilterOn,\r\n filterableEntities,\r\n entities,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({\r\n showServerError: true,\r\n errorMessage: this.props.t(\"fetch_error\", { ns: \"linked_entity/common\" })\r\n });\r\n }\r\n };\r\n\r\n getAllLinkedEntities = async () => {\r\n try {\r\n const linkedEntities = await getProjectRelations(this.props.projectId);\r\n\r\n if (linkedEntities.length > 0) {\r\n linkedEntities.forEach(this.setProperties);\r\n }\r\n\r\n const allLinkedEntities = linkedEntities;\r\n\r\n this.setState(\r\n {\r\n allLinkedEntities,\r\n data: linkedEntities,\r\n loading: false,\r\n },\r\n () => {\r\n if (this.state.data.length > 0) {\r\n let toSelectElement;\r\n\r\n if (this.props.selectedId) {\r\n toSelectElement = this.state.data.find(\r\n (rel) => rel.relationId === this.props.selectedId\r\n );\r\n } else {\r\n toSelectElement = this.state.data[0];\r\n }\r\n\r\n this.selectElement(toSelectElement);\r\n }\r\n }\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ showServerError: true, errorMessage: this.props.t(\"fetch_error\", { ns: \"linked_entity/common\" }) });\r\n }\r\n };\r\n\r\n getProjectInternalModeStatus = async () => {\r\n try {\r\n const project = await getProject(this.props.projectId);\r\n this.setState({\r\n isInternalModeActivated: project.developerMode === true,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ showServerError: true, errorMessage: this.props.t(\"fetch_error\", { ns: \"linked_entity/common\" }) });\r\n }\r\n }\r\n\r\n /*\r\n * Add Linked Entity Part\r\n */\r\n\r\n // Handle linked entity popup\r\n toggleAddLinkedEntityDialog = (showUpgradeDailog) => {\r\n this.setState({\r\n showUpgradeDailog: showUpgradeDailog,\r\n showAddLinkedEntityDialog: !this.state.showAddLinkedEntityDialog,\r\n toLinkEntity: { name: `Select ${ENTITY_LABEL}`, _id: \"\" },\r\n relationName: \"\",\r\n reverseRelationName: \"\",\r\n showReferenceAttribute: false,\r\n referenceAttribute: { name: `Select ${ATTRIBUTE_LABEL}`, _id: \"\" },\r\n });\r\n };\r\n\r\n toggleUpgradeDailog = () => {\r\n this.setState({\r\n showUpgradeDailog: !this.state.showUpgradeDailog\r\n })\r\n }\r\n\r\n toggleCardinalityPopup = (selected) => {\r\n if (!selected.isManagerAttributeRelation) {\r\n this.setState({\r\n toUpdate: selected || {},\r\n newCardinality: selected ? selected.cardinality : \"\",\r\n showChangeCardinalityPopup: !this.state.showChangeCardinalityPopup,\r\n contradictiveRelationError: {\r\n isValid: true,\r\n message: \"\",\r\n },\r\n });\r\n }\r\n };\r\n\r\n isCardinalityChanged = () => {\r\n if (this.state.contradictiveRelationError.isValid) {\r\n return (\r\n this.state.toUpdate.cardinality === this.state.newCardinality\r\n );\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n checkIfContradictiveRelationExistsFor = (cardinality) => {\r\n if (cardinality === \"1-*\") {\r\n const {\r\n toUpdate: {\r\n relationId,\r\n fromEntity: { _id: fromEntityId },\r\n toEntity: { _id: toEntityId },\r\n },\r\n data: relations,\r\n } = this.state;\r\n return checkIfContradictiveRelationsExist(\r\n this.state.allLinkedEntities,\r\n {\r\n relationId,\r\n fromEntity: { _id: fromEntityId },\r\n toEntity: { _id: toEntityId },\r\n cardinality\r\n }\r\n )\r\n }\r\n return false;\r\n };\r\n\r\n // Filter\r\n filterLinks = (e) => {\r\n const { value: entityToFilterOn } = e.target;\r\n const { allLinkedEntities } = this.state;\r\n if (entityToFilterOn._id) {\r\n const filteredData = allLinkedEntities.filter(\r\n (link) =>\r\n link.fromEntity._id === entityToFilterOn._id ||\r\n link.toEntity._id === entityToFilterOn._id\r\n );\r\n this.setState(\r\n {\r\n entityToFilterOn,\r\n data: filteredData,\r\n selectedId: \"\",\r\n SideData: {},\r\n },\r\n () => {\r\n if (filteredData.length > 0) {\r\n this.selectElement(filteredData[0]);\r\n }\r\n }\r\n );\r\n return;\r\n }\r\n this.setState(\r\n {\r\n entityToFilterOn,\r\n data: allLinkedEntities,\r\n selectedId: \"\",\r\n SideData: {},\r\n },\r\n () => {\r\n if (allLinkedEntities.length > 0) {\r\n this.selectElement(allLinkedEntities[0]);\r\n }\r\n }\r\n );\r\n };\r\n\r\n // After creating relation\r\n addRelationToGrid = async (relation) => {\r\n try {\r\n const { data: prevData, allLinkedEntities } = this.state;\r\n relation.cardinalityText = this.props.t(\"cardinality.\" + relation.cardinality, { ns: \"linked_entity/recommended_relation_card\" })\r\n const data = [...prevData, relation];\r\n allLinkedEntities.push(relation);\r\n if (data.length > 1) {\r\n await this.removePreviousReferenceAttribute(data);\r\n }\r\n this.setState(\r\n {\r\n data,\r\n allLinkedEntities\r\n },\r\n () => {\r\n this.selectElement(relation);\r\n }\r\n );\r\n } catch (e) {\r\n this.setState({ showServerError: true });\r\n }\r\n };\r\n\r\n removePreviousReferenceAttribute = async (relations) => {\r\n const {\r\n relationId,\r\n fromEntity,\r\n toEntity,\r\n } = relations[relations.length - 1];\r\n const relationWithSameEntityIndex = relations.findIndex(\r\n (link) =>\r\n link.fromEntity._id === fromEntity._id &&\r\n link.toEntity._id === toEntity._id &&\r\n link.showReferenceAttribute &&\r\n link.relationId !== relationId\r\n );\r\n if (relationWithSameEntityIndex > -1) {\r\n const relationWithSameEntity =\r\n relations[relationWithSameEntityIndex];\r\n // await updateRelationship(\r\n // relationWithSameEntity.relationId,\r\n // \"Has_Entity\",\r\n // {\r\n // ...relationWithSameEntity,\r\n // showReferenceAttribute: false,\r\n // }\r\n // );\r\n // await callApiWithAuthorization(\r\n // \"/api/v0/linkedEntity/\" +\r\n // relationWithSameEntity.relationId +\r\n // \"/referenceAttribute?projectId=\" + this.props.projectId,\r\n // {\r\n // method: \"DELETE\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // }\r\n // );\r\n await deleteEntityRelationReferenceAttribute(relationWithSameEntity.relationId);\r\n relationWithSameEntity.showReferenceAttribute = false;\r\n relationWithSameEntity.referencedAttribute = {};\r\n }\r\n };\r\n\r\n updateLink = (relation) => {\r\n const { data: prevData } = this.state;\r\n const relIndex = prevData.findIndex(\r\n (link) => link.relationId === relation.relationId\r\n );\r\n prevData[relIndex] = relation;\r\n const data = [...prevData];\r\n this.setState({\r\n data,\r\n });\r\n };\r\n\r\n updateCardinality = async (e) => {\r\n try {\r\n e.preventDefault();\r\n this.setState({ processingLinkedEntity: true })\r\n const { data, toUpdate, newCardinality } = this.state;\r\n if (toUpdate.cardinality !== newCardinality) {\r\n // await callApiWithAuthorization(\r\n // \"/api/v0/linkedEntity/\" +\r\n // toUpdate.relationId +\r\n // \"/referenceAttribute?projectId=\" + this.props.projectId,\r\n // {\r\n // method: \"DELETE\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // }\r\n // );\r\n await deleteEntityRelationReferenceAttribute(toUpdate.relationId);\r\n toUpdate.lookupAttribute = {};\r\n toUpdate.referencedAttribute = {};\r\n toUpdate.showReferenceAttribute = false;\r\n }\r\n toUpdate.cardinality = newCardinality;\r\n toUpdate.cardinalityText = this.props.t(\"cardinality.\" + toUpdate.cardinality, { ns: \"linked_entity/recommended_relation_card\" });\r\n const toUpdateIndex = data.findIndex(\r\n (link) => link.relationId === toUpdate.relationId\r\n );\r\n data[toUpdateIndex] = toUpdate;\r\n // await updateRelationship(\r\n // toUpdate.relationId,\r\n // \"Has_Entity\",\r\n // {\r\n // cardinality: toUpdate.cardinality,\r\n // showReferenceAttribute: toUpdate.showReferenceAttribute,\r\n // }\r\n // )\r\n await updateEntityRelation(\r\n toUpdate.relationId,\r\n {\r\n cardinality: toUpdate.cardinality,\r\n showReferenceAttribute: toUpdate.showReferenceAttribute,\r\n }\r\n )\r\n // await updateRelationWithProperty(\r\n // \"Has_Entity\",\r\n // \"id\",\r\n // toUpdate.relationId,\r\n // {\r\n // cardinality: toUpdate.cardinality,\r\n // showReferenceAttribute: toUpdate.showReferenceAttribute,\r\n // }\r\n // );\r\n this.setState(\r\n {\r\n data,\r\n processingLinkedEntity: false\r\n },\r\n () => {\r\n if (\r\n this.state.SideData.relationId ===\r\n data[toUpdateIndex].relationId\r\n ) {\r\n this.setState(\r\n {\r\n SideData: {},\r\n },\r\n () => {\r\n this.setState({\r\n SideData: data[toUpdateIndex],\r\n });\r\n }\r\n );\r\n }\r\n }\r\n );\r\n this.toggleCardinalityPopup(toUpdate);\r\n } catch (e) {\r\n this.setState({ showServerError: true });\r\n }\r\n };\r\n\r\n handleCardinality = (newCardinality) => {\r\n let { contradictiveRelationError } = this.state;\r\n const exists = this.checkIfContradictiveRelationExistsFor(newCardinality);\r\n if (exists) {\r\n contradictiveRelationError.isValid = false;\r\n contradictiveRelationError.message = this.props.t(\"errors.contradictive_relation\", { ns: \"linked_entity/create_link_dialog\" })\r\n } else {\r\n contradictiveRelationError.isValid = true;\r\n contradictiveRelationError.message = \"\";\r\n }\r\n this.setState({\r\n newCardinality,\r\n contradictiveRelationError,\r\n });\r\n };\r\n\r\n /*\r\n * Linked Entity Grid Part\r\n */\r\n\r\n // Select a linked entity\r\n selectElement = (e) => {\r\n let selectedId = e.relationId;\r\n let SideData = e.dataItem;\r\n\r\n if (!selectedId) {\r\n selectedId = e.dataItem.relationId;\r\n }\r\n\r\n if (this.state.SideData && this.state.SideData.relationId === selectedId) {\r\n return;\r\n }\r\n\r\n if (!SideData) {\r\n SideData = e;\r\n }\r\n\r\n if (this.state.isEditPanelSaveDisabled !== undefined && this.state.isEditPanelSaveDisabled === false) {\r\n this.setState({\r\n visible: true,\r\n previousSelectedId: this.state.selectedId,\r\n toSelectId: selectedId,\r\n });\r\n } else {\r\n this.setState({\r\n selectedId: selectedId,\r\n SideData: SideData,\r\n previousSelectedId: \"\",\r\n toSelectId: \"\",\r\n visible: false,\r\n });\r\n }\r\n };\r\n\r\n updateElement = (linkedEntityData) => {\r\n let data = this.state.data;\r\n let linkedEntityIndex = data.findIndex(\r\n (relation) => relation.relationId === linkedEntityData.relationId\r\n );\r\n linkedEntityData._id = linkedEntityIndex + 1;\r\n linkedEntityData.cardinalityText = this.props.t(\"cardinality.\" + linkedEntityData.cardinality, { ns: \"linked_entity/recommended_relation_card\" });\r\n data[linkedEntityIndex] = linkedEntityData;\r\n\r\n if (this.state.previousSelectedId.trim() === \"\") {\r\n if (this.state.selectedId === linkedEntityData.relationId) {\r\n this.setState({\r\n data: data,\r\n SideData: linkedEntityData,\r\n });\r\n }\r\n } else {\r\n let toSelectElement = data.find(\r\n (relation) => relation.relationId === this.state.toSelectId\r\n );\r\n this.selectElement(toSelectElement);\r\n }\r\n };\r\n\r\n // Re-order part\r\n\r\n reorder(dataItem) {\r\n if (this.state.activeItem.relationId === dataItem.relationId) {\r\n if (\r\n this.state.draggedOverItemIndex !== this.state.activeItemIndex\r\n ) {\r\n this.setState({ draggedOverItemIndex: -1 });\r\n }\r\n return;\r\n }\r\n\r\n this.setState({\r\n activeItem: this.state.activeItem,\r\n draggedOverItemIndex: dataItem.index,\r\n });\r\n }\r\n\r\n updateOrder = (id, ordertoUpdate) => {\r\n let element = this.state.data.find((x) => x.relationId === id);\r\n\r\n callApiWithAuthorization(\"/api/v0/relationships\", {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n id: id,\r\n label: element.inherited\r\n ? \"InheritsLinkedEntity\"\r\n : \"Has_Entity\",\r\n properties: {\r\n cardinalities1: element.cardinalities1,\r\n cardinalities2: element.cardinalities2,\r\n relationName: element.relationName,\r\n reverseRelationName: element.reverseRelationName,\r\n order: ordertoUpdate,\r\n },\r\n }),\r\n });\r\n };\r\n\r\n endDrag(dataItem) {\r\n let { activeItemIndex, draggedOverItemIndex } = this.state;\r\n\r\n if (draggedOverItemIndex === -1) {\r\n return;\r\n }\r\n\r\n let reorderedData = this.state.data.slice();\r\n reorderedData.splice(activeItemIndex, 1);\r\n reorderedData.splice(draggedOverItemIndex, 0, this.state.activeItem);\r\n let index = draggedOverItemIndex;\r\n\r\n let newOrder;\r\n\r\n if (reorderedData.length > 2) {\r\n if (index === reorderedData.length - 1) {\r\n newOrder =\r\n parseInt(reorderedData[index - 1][\"order\"]) + 10000000000;\r\n ////console.log(index, newOrder);\r\n reorderedData[index][\"order\"] = newOrder;\r\n this.updateOrder(reorderedData[index].relationId, newOrder);\r\n } else if (index === 0) {\r\n newOrder = parseInt(reorderedData[1][\"order\"]);\r\n let prevElementOrder = parseInt(reorderedData[2][\"order\"]);\r\n let orderToSet = (prevElementOrder + newOrder) / 2;\r\n reorderedData[index][\"order\"] = newOrder;\r\n reorderedData[1][\"order\"] = orderToSet;\r\n this.updateOrder(reorderedData[index].relationId, newOrder);\r\n this.updateOrder(reorderedData[1].relationId, orderToSet);\r\n } else {\r\n let prevItemOrder = parseInt(reorderedData[index - 1][\"order\"]);\r\n let nextItemOrder = parseInt(reorderedData[index + 1][\"order\"]);\r\n newOrder = (prevItemOrder + nextItemOrder) / 2;\r\n reorderedData[index][\"order\"] = newOrder;\r\n this.updateOrder(reorderedData[index].relationId, newOrder);\r\n }\r\n } else {\r\n let firstOrder = reorderedData[0][\"order\"];\r\n let secondOrder = reorderedData[1][\"order\"];\r\n\r\n reorderedData[0][\"order\"] = secondOrder;\r\n reorderedData[1][\"order\"] = firstOrder;\r\n\r\n this.updateOrder(reorderedData[0].relationId, secondOrder);\r\n this.updateOrder(reorderedData[1].relationId, firstOrder);\r\n }\r\n\r\n for (let i = 0; i < reorderedData.length; i++) {\r\n reorderedData[i]._id = i + 1;\r\n }\r\n\r\n this.setState({\r\n data: reorderedData,\r\n selectedId: this.state.oldSelectedId,\r\n });\r\n }\r\n\r\n dragStart(dataItem) {\r\n var oldSelectedId = this.state.selectedId;\r\n this.setState({\r\n data: this.state.data,\r\n activeItem: dataItem,\r\n oldSelectedId: oldSelectedId,\r\n selectedId: dataItem.relationId,\r\n activeItemIndex: dataItem.index,\r\n });\r\n }\r\n\r\n // Save and continue part\r\n Save = (e) => {\r\n this.SidebarSubentity.current.Save(e);\r\n };\r\n\r\n Discard = () => {\r\n // this.SidebarSubentity.current.continueWithoutSaving(() => {\r\n // let element = this.state.data.find(\r\n // (e) => e.relationId === this.state.toSelectId\r\n // );\r\n // this.selectElement(element);\r\n this.setState({\r\n visible: false,\r\n previousSelectedId: \"\",\r\n toSelectId: \"\",\r\n });\r\n };\r\n\r\n // Unlink linked entity part\r\n\r\n toggleUnlinkDialog = (e) => {\r\n this.setState({\r\n UnlinkPopup: false,\r\n });\r\n };\r\n\r\n Unlink = (e) => {\r\n this.setState({\r\n UnlinkPopup: true,\r\n processingLinkedEntity: true\r\n });\r\n var res = this.checkFormulaReferenceForUnlink();\r\n };\r\n\r\n getEntityToUnlink = () => {\r\n return this.state.data.find((e) => e.relationId === this.state.SideData.relationId);\r\n }\r\n\r\n UnlinkConfirmation = async (e) => {\r\n this.deleteFormula();\r\n e.target.disabled = true;\r\n this.setState({ processingLinkedEntity: true })\r\n let element = this.state.data.find((x) => x.relationId === this.state.selectedId);\r\n await this.remove(element);\r\n this.setState({\r\n UnlinkPopup: !this.state.UnlinkPopup,\r\n processingLinkedEntity: false\r\n });\r\n };\r\n\r\n // delete formula\r\n deleteFormula = async () => {\r\n let referenceAttr = this.state.referenceAttr\r\n for (let item of referenceAttr) {\r\n const allEntityAttributes = await getAttributes(item.entityId);\r\n const linkedAttributes = allEntityAttributes.find(attrItem => attrItem._id === item.attributeId);\r\n linkedAttributes.formula = '';\r\n linkedAttributes.formulaJson = '';\r\n const triggerSettingObj = JSON.parse(linkedAttributes.triggerSetting);\r\n triggerSettingObj.formulaEnabled = false;\r\n const updatedTriggerSettingStr = JSON.stringify(triggerSettingObj);\r\n linkedAttributes.triggerSetting = updatedTriggerSettingStr;\r\n linkedAttributes.readOnly = false;\r\n const res = await updateAttribute(linkedAttributes._id, linkedAttributes);\r\n\r\n }\r\n }\r\n\r\n remove = async (dataItem) => {\r\n await deleteEntityRelation(dataItem.relationId);\r\n\r\n let data = this.state.data;\r\n const allLinkedEntities = this.state.allLinkedEntities.filter(relation => (\r\n relation.relationId !== dataItem.relationId\r\n ));\r\n let index = data.findIndex((p) => p.relationId === dataItem.relationId);\r\n let toGet = 0;\r\n\r\n data.splice(index, 1);\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n data[i]._id = i + 1;\r\n }\r\n\r\n this.setState({ allLinkedEntities, data: data }, () => {\r\n debugger;\r\n if (index === 0) {\r\n if (data.length > 0) {\r\n // Here setstate is utilized intentionally\r\n // to prevent opening of the save dialog\r\n this.setState({\r\n selectedId: data[toGet].relationId,\r\n SideData: data[toGet],\r\n previousSelectedId: \"\",\r\n toSelectId: \"\",\r\n visible: false,\r\n });\r\n } else {\r\n this.setState({\r\n SideData: {},\r\n });\r\n }\r\n } else {\r\n toGet = index - 1;\r\n\r\n if (this.state.selectedId === dataItem.relationId) {\r\n // Here setstate is utilized intentionally\r\n // to prevent opening of the save dialog\r\n this.setState({\r\n selectedId: data[toGet].relationId,\r\n SideData: data[toGet],\r\n previousSelectedId: \"\",\r\n toSelectId: \"\",\r\n visible: false,\r\n });\r\n }\r\n }\r\n if (data.length === 0) {\r\n this.setState({ selectedId: \"\" })\r\n }\r\n });\r\n };\r\n\r\n setProperties = (linkedEntity, index) => {\r\n const { LinkText } = this;\r\n linkedEntity.cardinalityText = this.props.t(\"cardinality.\" + linkedEntity.cardinality, { ns: \"linked_entity/recommended_relation_card\" });\r\n linkedEntity.referencedAttribute =\r\n linkedEntity.referencedAttribute === null\r\n ? {}\r\n : linkedEntity.referencedAttribute;\r\n if (linkedEntity.lookupAttribute) {\r\n linkedEntity.lookupAttribute.required =\r\n linkedEntity.lookupAttribute.required === true;\r\n linkedEntity.isLookupRequired =\r\n linkedEntity.lookupAttribute.required;\r\n } else {\r\n linkedEntity.lookupAttribute = {};\r\n }\r\n linkedEntity.relationIdentifier = linkedEntity.identifier;\r\n delete linkedEntity.identifier;\r\n linkedEntity._id = index + 1;\r\n }\r\n\r\n toggleAliceGPTDialog = (e) => {\r\n this.setState({\r\n showAliceGPTDialog: !this.state.showAliceGPTDialog,\r\n });\r\n }\r\n\r\n getEntityNames = () => {\r\n return this.state.entities.map(entity => entity.name);\r\n }\r\n\r\n addCreatedRelationsToGrid = (response) => {\r\n if (response.status && response.status === \"Failure\") {\r\n if (response.message === \"Max Relations allowed limit reached\") {\r\n this.toggleUpgradeDailog();\r\n return;\r\n }\r\n }\r\n response.forEach(this.setProperties);\r\n const { data, allLinkedEntities } = this.state;\r\n const newData = data.concat(response).map((relation, index) => ({ ...relation, _id: index + 1 }));\r\n const newAllRelations = allLinkedEntities.concat(response).map((relation, index) => ({ ...relation, _id: index + 1 }));\r\n this.setState({\r\n data: newData,\r\n allLinkedEntities: newAllRelations\r\n }, () => {\r\n if (response.length > 0) {\r\n this.selectElement(response[0]);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default withTranslation([\r\n \"linked_entity/common\",\r\n \"linked_entity/save_dialog\",\r\n \"linked_entity/remove_dialog\",\r\n \"linked_entity/create_link_dialog\",\r\n \"linked_entity/recommended_relation_card\",\r\n \"linked_entity/change_cardinality_dialog\",\r\n \"linked_entity/cardinality_shapes\",\r\n \"linked_entity/recommended_relation_card\"\r\n])(LinkedEntity);\r\n","/* refactored - ali */\r\nimport React, { useRef } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport const PortalCard = ({ portal, project, clone, goToPortal }) => {\r\n\r\n const cloneButton = useRef(null);\r\n\r\n const { t } = useTranslation([\r\n \"portal/common\",\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n function handleClone(e) {\r\n e.preventDefault();\r\n clone(portal);\r\n }\r\n\r\n function handleCardClick(e) {\r\n if (cloneButton && cloneButton.current && cloneButton.current.contains(e.target)) {\r\n handleClone();\r\n } else {\r\n goToPortal(portal);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n {portal.Icon ? (\r\n \r\n ) : (\r\n portal.portalName.charAt(0).toUpperCase()\r\n )}\r\n \r\n
    \r\n {portal.portalName}\r\n {!portal.isActive && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n {portal.portalDescription}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {t(\"portal_card.updated_on\")}\r\n \r\n \r\n {new Date(portal.updatedDate).toLocaleString()}\r\n \r\n \r\n {/*
    \r\n {\r\n project.developerMode &&\r\n \r\n \r\n {t(\"portal_card.buttons.clone_portal_button_label\")}\r\n \r\n }\r\n
    */}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","const colors = [\r\n \"#7b64ff\",\r\n \"#68bc00\",\r\n \"#009ce0\",\r\n \"#D94F04\",\r\n \"#F29325\",\r\n \"#BDA523\",\r\n \"#E3C75F\",\r\n \"#F27457\",\r\n \"#A1C7E0\",\r\n \"#BF665E\"\r\n ];\r\n\r\n\r\nexport default function Color(index) {\r\n if (index === undefined) return colors[Math.floor(Math.floor(colors.length) * Math.random())]\r\n return colors[index % colors.length]\r\n}","import { callApiWithAuthorization } from \"../CallApi\";\r\nimport { getAzureUser } from \"../User/User\";\r\n\r\n// Update label and url on runtime for organization, application and portal\r\nexport async function UpdateRuntimeforLabelandUrlChange(\r\n type,\r\n context,\r\n orgId,\r\n appId,\r\n portalId,\r\n data\r\n) {\r\n let accessToken = localStorage.getItem(\"accessToken\")\r\n var requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + accessToken,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(data)\r\n };\r\n\r\n let user = await getAzureUser(context)\r\n\r\n var baseURL = process.env.REACT_APP_RUNTIME_API_URL + \"/api/ui/UpdateRuntime?\";\r\n var searchParams = new URLSearchParams();\r\n\r\n searchParams.append(\"type\", type);\r\n searchParams.append(\"userId\", user.oid);\r\n searchParams.append(\"orgId\", orgId);\r\n\r\n if (type === \"Application\") {\r\n searchParams.append(\"appId\", appId);\r\n } else if (type === \"Portal\") {\r\n searchParams.append(\"appId\", appId);\r\n searchParams.append(\"portalId\", portalId);\r\n }\r\n\r\n let requestURL = baseURL + searchParams.toString();\r\n\r\n let request = await fetch(requestURL, requestOptions);\r\n let result = await request.json();\r\n return result;\r\n}\r\n\r\n// Assign subscription to organization on runtime\r\nexport async function assignSubscriptionToOrganizationOnRuntime(organizationId, subscriptionId) {\r\n let accessToken = localStorage.getItem(\"accessToken\")\r\n let url = process.env.REACT_APP_RUNTIME_API_URL + \"/api/ui/AssignSubscriptionToOrg\"\r\n let requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: `Bearer ${accessToken}`,\r\n \"Content-Type\": \"application/json\",\r\n orgid: organizationId,\r\n subsid: subscriptionId,\r\n \"tokentype\": \"accesstoken\"\r\n }\r\n }\r\n let request = await fetch(url, requestOptions)\r\n let response = await request.json()\r\n return response\r\n}\r\n\r\n//update/create subscription on runtime\r\nexport async function updateSubscriptionOnRuntime(data) {\r\n const accessToken = localStorage.getItem(\"accessToken\");\r\n await fetch(process.env.REACT_APP_RUNTIME_API_URL + \"/api/ui/AddUpdateSubscriptionType\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": \"Bearer \" + accessToken,\r\n \"tokentype\": \"accesstoken\"\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n}\r\n\r\n\r\n","import React, { Component } from \"react\";\r\nimport Color from \"../Shared/ColorPicker/ColorPalette\";\r\nimport IconPicker, { icons } from \"../Shared/IconPicker/IconPicker\";\r\nimport { call } from \"../Helpers/Nodes\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport { UpdateRuntimeforLabelandUrlChange } from '../../API/Runtime/RuntimeHelper'\r\nimport { getInstances } from \"../Helpers/Launch\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport ServerError from \"../Shared/Error/ServerError\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\"\r\nimport { removeSpecialCharacters } from \"../Entities/utils\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { createPortal, updatePortal } from \"../../API/Portal/Portal\";\r\nimport { getProject } from \"../../API/Project/project\";\r\n\r\nclass CreatePortalDialog extends Component {\r\n\r\n static contextType = MsalContext\r\n defaultData;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n portalName: \"\",\r\n portalDescription: \"\",\r\n value: icons[this.props.Portals.length + 1 % 66],\r\n IconColor: Color(this.props.Portals.length + 1),\r\n displayColorPicker: false,\r\n portalError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n urlError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n urlName: \"\",\r\n urlInitialized: false,\r\n isActive: true,\r\n disabled: true,\r\n isloading: true,\r\n creatingPortal: false,\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n if (this.props.cloneId !== \"\") {\r\n let portal = this.props.Portals.find((portal) => portal._id === this.props.cloneId);\r\n this.setState({\r\n portalName: portal.portalName,\r\n portalDescription: portal.portalDescription,\r\n value: portal.Icon ? portal.Icon : icons[this.props.Portals.length + 1 % 66],\r\n IconColor: portal.IconColor ? portal.IconColor : Color(this.props.Portals.length + 1),\r\n displayColorPicker: false,\r\n portalError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n isloading: false,\r\n urlName: portal.urlName,\r\n urlInitialized: portal.urlName !== \"\",\r\n urlError: {\r\n isValid: true,\r\n message: \"\"\r\n }\r\n });\r\n }\r\n if (this.props.viewMode) {\r\n let { portal } = this.props;\r\n this.setState({\r\n portalName: portal.portalName,\r\n portalDescription: portal.portalDescription,\r\n value: portal.Icon ? portal.Icon : icons[this.props.Portals.length + 1 % 66],\r\n IconColor: portal.IconColor ? portal.IconColor : Color(this.props.Portals.length + 1),\r\n displayColorPicker: false,\r\n portalError: {\r\n isValid: true,\r\n message: \"\"\r\n },\r\n isloading: false,\r\n urlName: portal.urlName,\r\n urlInitialized: portal.urlName !== \"\",\r\n urlError: {\r\n isValid: true,\r\n message: \"\"\r\n }\r\n });\r\n this.defaultData = {\r\n portalName: portal.portalName,\r\n portalDescription: portal.portalDescription,\r\n value: portal.Icon ? portal.Icon : icons[this.props.Portals.length + 1 % 66],\r\n IconColor: portal.IconColor ? portal.IconColor : Color(this.props.Portals.length + 1),\r\n urlName: portal.urlName,\r\n }\r\n } else {\r\n this.setState({\r\n isloading: false,\r\n });\r\n }\r\n if (this.props.mutators) {\r\n this.props.mutators.setFormSaveFunction(() => this.Update);\r\n }\r\n };\r\n\r\n InternalPortalForm = () => {\r\n const { t } = this.props;\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n {t(\"name_field_label\")}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {t(\"icon_field_label\")}\r\n
    \r\n {!this.props.viewMode ? (\r\n \r\n ) : this.props.viewMode &&\r\n this.props.portal.isActive ? (\r\n \r\n ) : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {t(\"description_field_label\")}\r\n
    \r\n \r\n
    \r\n {\r\n this.props.project.developerMode &&\r\n
    \r\n
    \r\n
    \r\n {t(\"url_field_label\")}\r\n
    \r\n \r\n
    \r\n
    \r\n {process.env.REACT_APP_RUNTIME_URL}/{this.props.organization.url}/{this.props.project.url}/\r\n {this.state.urlName}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n \r\n )\r\n }\r\n\r\n InternalPortalButtons = () => {\r\n const { t } = this.props;\r\n return (\r\n <>\r\n \r\n {this.state.creatingPortal && !this.props.viewMode && (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n {!this.props.viewMode && (\r\n this.props.onCancel(false)}>\r\n {t(\"buttons.cancel_button_label\")}\r\n \r\n )}\r\n (this.saveRef = Save)}\r\n onClick={this.props.viewMode ? this.Update : this.Create}\r\n disabled={this.state.disabled}\r\n >\r\n {this.props.viewMode ?\r\n t(\"buttons.save_button_label\")\r\n :\r\n t(\"buttons.create_button_label\")\r\n }\r\n \r\n {this.state.creatingPortal && this.props.viewMode && (\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 render() {\r\n if (this.state.isloading) {\r\n return (\r\n \r\n )\r\n }\r\n if (this.state.showServerError) {\r\n return (\r\n \r\n )\r\n }\r\n const { t } = this.props;\r\n return (\r\n !this.props.viewMode ?\r\n (\r\n this.props.onCancel(false)}>\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n {this.state.creatingPortal && }\r\n \r\n )\r\n :\r\n (\r\n <>\r\n {this.state.creatingPortal && }\r\n \r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.disabled !== this.state.disabled && this.props.mutators) {\r\n this.props.mutators.setFormsWithChanges(prevValue => ({\r\n ...prevValue,\r\n portalForm: !this.state.disabled\r\n }))\r\n }\r\n }\r\n\r\n handlePortalName = (e) => {\r\n let { portalError } = this.state;\r\n const { t } = this.props;\r\n let portalName = e.target.value.trim()\r\n let specialCharactersEntered = /[`!@#$%^&*()+={}|\\[\\]:;<>?,]/g.test(portalName);\r\n if (portalName === \"\") {\r\n portalError.isValid = false\r\n portalError.message = t(\"errors.name_required\")\r\n } else if (portalName.match(/^\\d/)) {\r\n portalError.isValid = false\r\n portalError.message = t(\"errors.name_starts_with_number\")\r\n } else if (specialCharactersEntered) {\r\n portalError.isValid = false\r\n portalError.message = t(\"errors.name_contain_specical_character\")\r\n } else {\r\n let exist = this.props.Portals.find((x) =>\r\n removeSpecialCharacters(x.portalName.trim().toLowerCase()) ===\r\n removeSpecialCharacters(portalName.trim().toLowerCase())\r\n );\r\n if (exist) {\r\n portalError.isValid = false\r\n portalError.message = t(\"errors.name_in_use\")\r\n if (\r\n this.props.viewMode &&\r\n this.props.portal.portalName === exist.portalName\r\n ) {\r\n portalError.isValid = true\r\n portalError.message = \"\"\r\n }\r\n } else {\r\n portalError.isValid = true\r\n portalError.message = \"\"\r\n }\r\n }\r\n const portalUrl = this.getUrlForName(portalName);\r\n this.setState(\r\n {\r\n portalName: e.target.value,\r\n portalError: portalError,\r\n urlName: portalUrl,\r\n },\r\n this.CheckURl\r\n );\r\n };\r\n\r\n getUrlForName = (name) => {\r\n let portalUrl = name.replace(/[^a-zA-Z0-9-._~]/g, \"\");\r\n if (portalUrl === \"\") {\r\n portalUrl = \"portal\";\r\n }\r\n // }\r\n // let counter = 0;\r\n // for (let index = 0; index < this.props.Portals.length; index++) {\r\n // if (this.props.Portals[index].urlName === portalUrl) {\r\n // counter++;\r\n // }\r\n // }\r\n // if (counter > 0) {\r\n // portalUrl = portalUrl + counter;\r\n // }\r\n return portalUrl;\r\n };\r\n\r\n setURL = (e) => {\r\n this.setState(\r\n {\r\n urlName: this.state.portalName.replace(\r\n /[^a-zA-Z0-9-._~]/g,\r\n \"\"\r\n ),\r\n },\r\n () => {\r\n this.CheckURl();\r\n }\r\n );\r\n };\r\n\r\n handleDescription = (e) => {\r\n this.setState(\r\n {\r\n portalDescription: e.target.value,\r\n },\r\n () => {\r\n this.setDisabled();\r\n }\r\n );\r\n };\r\n\r\n handleChange = (props, value) => {\r\n this.setState(\r\n {\r\n value: props,\r\n },\r\n () => {\r\n this.setDisabled();\r\n }\r\n );\r\n };\r\n\r\n handleColorChange = (e) => {\r\n this.setState(\r\n {\r\n IconColor: e.value,\r\n },\r\n () => {\r\n this.setDisabled();\r\n }\r\n );\r\n };\r\n\r\n handleOpen = () => {\r\n this.setState({\r\n displayColorPicker: !this.state.displayColorPicker,\r\n });\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({\r\n displayColorPicker: false,\r\n });\r\n };\r\n\r\n handleURL = (e) => {\r\n this.setState(\r\n {\r\n urlName: e.target.value\r\n },\r\n () => {\r\n this.CheckURl();\r\n this.setDisabled();\r\n }\r\n );\r\n };\r\n\r\n CheckURl = (e) => {\r\n let { urlError, urlName } = this.state;\r\n const { t } = this.props;\r\n let specialCharactersEntered = !/[^a-zA-Z0-9-._~]/g.test(urlName);\r\n if (urlName === \"\") {\r\n urlError.isValid = false\r\n urlError.message = t(\"errors.url_required\")\r\n } else if (!specialCharactersEntered) {\r\n urlError.isValid = false\r\n urlError.message = t(\"errors.url_contain_specical_character\")\r\n } else {\r\n let exist = this.props.Portals.find((portal) => portal.urlName === urlName);\r\n if (exist) {\r\n if (this.props.viewMode && this.props.portal.portalName === exist.portalName) {\r\n urlError.isValid = true\r\n urlError.message = \"\"\r\n } else {\r\n urlError.isValid = false\r\n urlError.message = t(\"errors.url_in_use\")\r\n }\r\n } else {\r\n urlError.isValid = true\r\n urlError.message = \"\"\r\n }\r\n }\r\n this.setState({\r\n urlError: urlError,\r\n }, () => {\r\n this.setDisabled()\r\n });\r\n };\r\n\r\n setDisabled = () => {\r\n let condition = true;\r\n\r\n if (this.props.portal) {\r\n condition =\r\n this.defaultData.portalName.trim() !== this.state.portalName.trim() ||\r\n this.defaultData.urlName.trim() !== this.state.urlName.trim() ||\r\n this.defaultData.portalDescription.trim() !== this.state.portalDescription.trim() ||\r\n this.defaultData.IconColor !== this.state.IconColor ||\r\n this.defaultData.value !== this.state.value;\r\n }\r\n\r\n if (\r\n !this.state.urlError.isValid ||\r\n this.state.portalName.trim() === \"\" ||\r\n !this.state.portalError.isValid\r\n ) {\r\n condition = false;\r\n }\r\n\r\n if (condition) {\r\n this.setState({\r\n disabled: false,\r\n });\r\n } else {\r\n this.setState({\r\n disabled: true,\r\n });\r\n }\r\n\r\n if (this.props.mutators) {\r\n this.props.mutators.setFormsWithChanges(prevValue => ({\r\n ...prevValue, portalForm: true\r\n }))\r\n }\r\n };\r\n\r\n getOrder = () => {\r\n if (this.props.Portals.length === 0) {\r\n return \"10000000000\";\r\n }\r\n const order = parseInt(this.props.Portals[this.props.Portals.length - 1].order) + 10000000000;\r\n return String(order);\r\n };\r\n\r\n Create = async (e) => {\r\n try {\r\n e.preventDefault();\r\n\r\n this.saveRef.disabled = true;\r\n\r\n this.setState({\r\n creatingPortal: true,\r\n });\r\n\r\n console.time(\"Create portal\");\r\n\r\n const portal = await createPortal({\r\n projectId: this.props.project._id,\r\n subscriptionId: this.props.organization.subscriptionId,\r\n properties: {\r\n portalName: this.state.portalName.trim().replace(/\\s\\s+/g, \" \"),\r\n portalDescription: this.state.portalDescription,\r\n Icon: this.state.value,\r\n IconColor: this.state.IconColor ? this.state.IconColor : Color(this.props.Portals.length + 1),\r\n urlName: this.state.urlName,\r\n isActive: true,\r\n logoUrl: \"\",\r\n faviconUrl: \"\",\r\n enableDashboard: true,\r\n enableReporting: true,\r\n isWorkflowEnabled: true,\r\n order: this.getOrder(),\r\n navigationBarOrientation: \"Top\",\r\n navigateToDefaultPage: \"false\",\r\n entityId: \"\",\r\n targetPageId: \"\",\r\n },\r\n });\r\n console.timeEnd(\"Create portal\");\r\n if (portal.status && portal.status === \"Failure\") {\r\n this.props.onCancel(true)\r\n } else {\r\n if (this.props.cloneId !== \"\") {\r\n await call(\"clonePortal\", \"POST\").with({\r\n oldId: this.props.cloneId,\r\n newId: portal._id,\r\n });\r\n }\r\n this.props.onClose(portal);\r\n }\r\n } catch (e) {\r\n this.setState({ showServerError: true, errorMessage: \"Something went wrong while creating portal.\" })\r\n }\r\n };\r\n\r\n Update = async (e) => {\r\n\r\n try {\r\n e.preventDefault();\r\n this.saveRef.disabled = true;\r\n this.setState({\r\n creatingPortal: true,\r\n });\r\n const properties = {\r\n portalName: this.state.portalName.trim().replace(/\\s\\s+/g, \" \"),\r\n portalDescription: this.state.portalDescription,\r\n Icon: this.state.value,\r\n IconColor: this.state.IconColor ? this.state.IconColor : Color(this.props.Portals.length + 1),\r\n urlName: this.state.urlName,\r\n };\r\n await updatePortal(this.props.portal._id, properties);\r\n const portal = { ...this.props.portal, ...properties };\r\n if (this.props.portal.portalName !== this.state.portalName) {\r\n let type = \"Portal\";\r\n let { context } = this;\r\n let orgId = this.props.organization._id;\r\n let portalId = this.props.portal._id\r\n let project = await getProject(this.props.project._id);\r\n let Instances = project.instances;\r\n for (let instance of Instances) {\r\n if (instance.appId) {\r\n let data = {\r\n updatedUrl: this.state.urlName,\r\n updatedLabel: this.state.portalName\r\n }\r\n await UpdateRuntimeforLabelandUrlChange(\r\n type,\r\n context,\r\n orgId,\r\n instance.appId,\r\n portalId,\r\n data\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (this.props.portal.portalName.trim() !== this.state.portalName.trim()) {\r\n // await callApiWithAuthorization(\r\n // \"/api/v0/nodes/updatePortalFolderName\",\r\n // {\r\n // method: \"POST\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // body: JSON.stringify({\r\n // portalId: this.props.portal._id,\r\n // projectId: this.props.project._id,\r\n // oldPortalName: this.props.portal.portalName,\r\n // portalName: properties.portalName,\r\n // }),\r\n // }\r\n // );\r\n if (!this.props.mutators) {\r\n window.location.href = `/${this.props.organization.orgName}/${this.props.project.name}/Portals/${properties.portalName}/General`;\r\n }\r\n }\r\n this.defaultData = { ...properties }\r\n this.setState({\r\n disabled: true,\r\n creatingPortal: false,\r\n portalName: properties.portalName,\r\n });\r\n if (this.props.onSubmit) {\r\n this.props.onSubmit(portal);\r\n }\r\n } catch (e) {\r\n this.setState({ showServerError: true, creatingPortal: false, errorMessage: \"Something went wrong while updating portal.\" })\r\n } finally {\r\n if (this.props.mutators && this.props.mutators.setFormsWithChanges) {\r\n this.props.mutators.setFormsWithChanges(prevValue => ({\r\n ...prevValue, portalForm: false\r\n }))\r\n }\r\n }\r\n };\r\n}\r\n\r\nexport default withTranslation([\r\n \"portal/create_dialog\",\r\n])(CreatePortalDialog);\r\n","import React, { Component } from \"react\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { PortalCard } from \"./PortalCard\";\r\nimport { Content, Header, PageContainer } from \"../Drawer/PageContainer\";\r\nimport PortalForm from \"./PortalForm\";\r\nimport { getPortals } from \"../../API/Portal/Portal\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { CheckForInternalUser } from \"../Helpers/miscellaneous\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport Upgarde from \"../Shared/Subscription/Upgrade\";\r\nimport ServerError from \"../Shared/Error/ServerError\";\r\nimport { withTranslation } from \"react-i18next\";\r\nclass Portal extends Component {\r\n static contextType = MsalContext\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ShowCreatePortalPopup: false,\r\n showUpgradeDailog: false,\r\n loading: true,\r\n isInternalUser: false,\r\n Portals: [],\r\n cloneId: \"\",\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n try {\r\n await this.getPortal();\r\n } catch (e) {\r\n this.setState({ showServerError: true, errorMessage: \"Something went wrong while fetching portals.\" })\r\n }\r\n };\r\n\r\n render() {\r\n if (this.state.redirect) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n\r\n if (this.state.serverError) {\r\n return (\r\n \r\n )\r\n }\r\n const { t } = this.props;\r\n return (\r\n \r\n
    \r\n this.toggleCreatePortalDialog(false)}\r\n showAction={true}\r\n showHelpCenter={(this.state.isInternalUser && this.props.project.developerMode) ? true : false}\r\n user={this.props.user}\r\n helpCenterFor={\"Portals\"}\r\n >\r\n
    \r\n \r\n {\r\n this.state.showUpgradeDailog &&\r\n Super App portals? '}\r\n toggleDialog={this.toggleUpgradeDailog}\r\n Type={'Pro'}\r\n />\r\n }\r\n {this.state.ShowCreatePortalPopup === true && (\r\n \r\n )}\r\n \r\n
    \r\n
    \r\n {this.state.Portals.map((portal) => (\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 goToPortal = (portal) => {\r\n if (this.props.isAccessedFromWorkspace) {\r\n this.props.selectPortal(portal);\r\n } else {\r\n this.setState({\r\n redirect: true,\r\n selectedPortalName: portal.portalName,\r\n });\r\n }\r\n };\r\n\r\n getPortal = async () => {\r\n let result = await getPortals(this.props.project._id);\r\n result = result.sort((a, b) => a.order - b.order);\r\n let isInternalUser = CheckForInternalUser(this.props.user.email)\r\n this.setState({\r\n isInternalUser: isInternalUser,\r\n Portals: result,\r\n loading: false,\r\n });\r\n };\r\n\r\n toggleCreatePortalDialog = (showUpgradeDailog) => {\r\n this.setState({\r\n showUpgradeDailog: showUpgradeDailog,\r\n ShowCreatePortalPopup: !this.state.ShowCreatePortalPopup,\r\n cloneId: \"\",\r\n });\r\n };\r\n\r\n toggleUpgradeDailog = () => {\r\n this.setState({\r\n showUpgradeDailog: !this.state.showUpgradeDailog\r\n })\r\n }\r\n\r\n addPortal = (portal) => {\r\n debugger\r\n let data = this.state.Portals;\r\n data.push(portal);\r\n this.setState({\r\n ShowCreatePortalPopup: false,\r\n cloneId: \"\",\r\n Portals: data,\r\n });\r\n };\r\n\r\n clone = (properties) => {\r\n this.setState({\r\n ShowCreatePortalPopup: true,\r\n cloneId: properties.id,\r\n });\r\n };\r\n}\r\n\r\nexport default withTranslation([\r\n \"portal/common\",\r\n], {\r\n withRef: true,\r\n})(Portal);","import React, { Component } from \"react\";\r\nimport PortalForm from \"../PortalForm\";\r\nimport RemoveDialog from \"../../Shared/Remove/RemoveDialog\";\r\nimport {\r\n enabledisableOnRuntime,\r\n deleteOnRuntime,\r\n} from \"../../Helpers/DisableDeleteRuntime\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { getPortals } from \"../../../API/Portal/Portal\";\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\";\r\nimport { DeleteFile } from \"../../Helpers/DateLakeStorage\";\r\nimport { OverlayLoader } from \"../../Shared/Loader/OverlayLoader\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport WorkspaceAppModelContext from \"../../../Context/Workspace/WorkspaceAppModelContext\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getProject } from \"../../../API/Project/project\";\r\nimport { deletePortal, updatePortal } from \"../../../API/Portal/Portal\";\r\n\r\nclass General extends Component {\r\n\r\n static contextType = MsalContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n portal: { ...this.props.portal },\r\n Portals: [],\r\n PortalDisabling: false,\r\n errorMessage: {\r\n type: \"\",\r\n status: \"\",\r\n message: \"\",\r\n },\r\n loading: true,\r\n PortalDeleting: false,\r\n DeletePortalPopup: false,\r\n DisablePortalPopup: false,\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n let Portals = await getPortals(this.props.project._id);\r\n const portal = Portals.find(portal => portal._id === this.props.portal._id);\r\n this.setState({\r\n loading: false,\r\n Portals: Portals.reverse(),\r\n portal\r\n });\r\n };\r\n\r\n render() {\r\n const { t } = this.props;\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n return (\r\n
    \r\n {(this.state.PortalDisabling && !this.state.portal.isActive) && }\r\n
    \r\n {this.state.DeletePortalPopup && (\r\n this.DeletePortal(this.state.portal)}\r\n message={t(\"dialog.warning\", { ns: \"portal/delete_portal\", portalName: this.state.portal.portalName })}\r\n Title={t(\"dialog.title\", { ns: \"portal/delete_portal\" })}\r\n deleteButtonText={t(\"dialog.buttons.delete_button_label\", { ns: \"portal/delete_portal\" })}\r\n cancelButtonText={t(\"dialog.buttons.cancel_button_label\", { ns: \"portal/delete_portal\" })}\r\n />\r\n )}\r\n {this.state.DisablePortalPopup && (\r\n this.DisablePortal(this.state.portal)}\r\n message={t(\"dialog.warning\", { ns: \"portal/disable_portal\", portalName: this.state.portal.portalName })}\r\n Title={t(\"dialog.title\", { ns: \"portal/disable_portal\" })}\r\n deleteButtonText={t(\"dialog.buttons.disable_button_label\", { ns: \"portal/disable_portal\" })}\r\n cancelButtonText={t(\"dialog.buttons.cancel_button_label\", { ns: \"portal/disable_portal\" })}\r\n />\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n ({ state, mutators }) => (\r\n \r\n )\r\n }\r\n \r\n
    \r\n {this.state.portal.isActive ? (\r\n
    \r\n \r\n {t(\"title\", { ns: \"portal/disable_portal\" })}\r\n \r\n
    \r\n ) : (\r\n
    \r\n \r\n {t(\"title\", { ns: \"portal/enable_portal\" })}\r\n \r\n
    \r\n )}\r\n\r\n {!this.state.PortalDisabling &&\r\n this.state.errorMessage &&\r\n this.state.errorMessage.type ===\r\n \"Disable\" &&\r\n this.state.errorMessage.status ===\r\n \"Failure\" && (\r\n \r\n {\r\n this.state.errorMessage\r\n .message\r\n }\r\n \r\n )}\r\n {this.state.portal.isActive ? (\r\n
    \r\n \r\n {t(\"description\", { ns: \"portal/disable_portal\" })}\r\n \r\n
    \r\n ) : (\r\n
    \r\n \r\n {t(\"description\", { ns: \"portal/enable_portal\" })}\r\n \r\n
    \r\n )}\r\n\r\n
    \r\n this.DisablePortal(this.state.portal)}\r\n disabled={this.shouldDisableDisablePortalButton()}\r\n className={this.state.portal.isActive\r\n ? \"btn btn-danger\"\r\n : \"btn btn-success\"\r\n }\r\n >\r\n \r\n \r\n {this.state.portal.isActive\r\n ?\r\n t(\"buttons.disable_buttons_label\", { ns: \"portal/disable_portal\" })\r\n :\r\n t(\"buttons.enable_buttons_label\", { ns: \"portal/enable_portal\" })\r\n }\r\n \r\n \r\n {(this.state.PortalDisabling && !this.state.portal.isActive) && (\r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n {\r\n !this.state.portal.isActive &&\r\n <>\r\n
    \r\n
    \r\n \r\n {t(\"title\", { ns: \"portal/delete_portal\" })}\r\n \r\n
    \r\n
    \r\n \r\n {t(\"description\", { ns: \"portal/delete_portal\" })}\r\n \r\n
    \r\n\r\n \r\n \r\n \r\n {t(\"buttons.delete_buttons_label\", { ns: \"portal/delete_portal\" })}\r\n \r\n \r\n {!this.state.PortalDeleting &&\r\n this.state.errorMessage &&\r\n this.state.errorMessage.type ===\r\n \"Delete\" &&\r\n this.state.errorMessage.status ===\r\n \"Failure\" && (\r\n \r\n {\r\n this.state.errorMessage\r\n .message\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 shouldDisableDisablePortalButton = () => {\r\n if (this.state.portal.isActive) {\r\n const hasOnlyOneActivePortal = this.state.Portals.filter(portal => portal.isActive).length === 1\r\n return (\r\n this.state.PortalDisabling ||\r\n hasOnlyOneActivePortal\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n toggleDeleteDialog = () => {\r\n this.setState({\r\n DeletePortalPopup: !this.state.DeletePortalPopup,\r\n });\r\n };\r\n\r\n toggleDisableDialog = () => {\r\n this.setState({\r\n DisablePortalPopup: !this.state.DisablePortalPopup,\r\n });\r\n };\r\n\r\n DeletePortal = async (dataItem) => {\r\n this.setState({\r\n errorMessage: {\r\n type: \"\",\r\n status: \"\",\r\n message: \"\",\r\n },\r\n PortalDeleting: true,\r\n });\r\n let type = \"Portal\";\r\n let orgId = this.props.organization._id;\r\n let url = dataItem.urlName;\r\n let { errorMessage } = this.state;\r\n\r\n let project = await getProject(this.props.project._id);\r\n let Instances = project.instances;\r\n\r\n for (let instance of Instances) {\r\n if (instance.appId) {\r\n let result = await deleteOnRuntime(\r\n type,\r\n url,\r\n orgId,\r\n instance.appId,\r\n this.props.portal._id\r\n );\r\n if (result.status === undefined) {\r\n errorMessage.status = \"Failure\";\r\n errorMessage.message = result.message;\r\n errorMessage.type = \"Delete\";\r\n this.toggleDeleteDialog();\r\n this.setState({\r\n errorMessage: errorMessage,\r\n PortalDeleting: false,\r\n });\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (dataItem.faviconUrl !== \"\") {\r\n let path = orgId + \"/\" + this.props.project._id + \"/PortalImages/\" + dataItem.faviconUrl;\r\n DeleteFile(path, dataItem.faviconUrl);\r\n }\r\n\r\n if (dataItem.logoUrl !== \"\") {\r\n let path = orgId + \"/\" + this.props.project._id + \"/PortalImages/\" + dataItem.logoUrl;\r\n DeleteFile(path, dataItem.logoUrl);\r\n }\r\n\r\n await deletePortal(this.props.project._id, dataItem._id, dataItem.portalName);\r\n\r\n if (this.props.workspaceAppModelContext && this.props.workspaceAppModelContext.mutators && this.props.workspaceAppModelContext.mutators.setSelectedPortal) {\r\n this.props.workspaceAppModelContext.mutators.setSelectedPortal(null);\r\n } else {\r\n window.location.href = `/${this.props.organization.orgName}/${this.props.project.name}/Portals`;\r\n }\r\n };\r\n\r\n checkForActivePortal = async (dataItem) => {\r\n const allPortals = await getPortals(this.props.project._id);\r\n\r\n // Filter out current portal and check if any other portal is active\r\n const activePortal = allPortals.find(portal => portal._id !== dataItem._id && portal.isActive);\r\n\r\n if (activePortal) {\r\n return true;\r\n } else {\r\n const currentPortal = allPortals.find(portal => portal._id === dataItem._id);\r\n\r\n this.setState({\r\n Portals: allPortals.slice().reverse(), // Create a copy of allPortals before reversing\r\n DisablePortalPopup: false,\r\n PortalDisabling: false,\r\n portal: { ...currentPortal },\r\n errorMessage: {\r\n type: \"Disable\",\r\n status: \"Failure\",\r\n message: this.props.t(\"errors.one_active_portal_required\"),\r\n },\r\n });\r\n\r\n return false;\r\n }\r\n };\r\n\r\n DisablePortal = async (dataItem) => {\r\n this.setState({\r\n errorMessage: {\r\n type: \"\",\r\n status: \"\",\r\n message: \"\",\r\n },\r\n PortalDisabling: true,\r\n });\r\n const activePortal = await this.checkForActivePortal(dataItem);\r\n if (!activePortal) {\r\n return;\r\n }\r\n let { context } = this;\r\n let type = \"Portal\";\r\n let orgId = this.props.organization._id;\r\n let url = dataItem.urlName;\r\n let disable = dataItem.isActive;\r\n let { errorMessage } = this.state;\r\n\r\n const project = await getProject(this.props.project._id);\r\n const Instances = project.instances;\r\n\r\n for (let instance of Instances) {\r\n if (instance.appId) {\r\n let result = await enabledisableOnRuntime(\r\n context,\r\n type,\r\n url,\r\n orgId,\r\n instance.appId,\r\n this.props.portal._id,\r\n disable\r\n );\r\n\r\n if (result.status === undefined) {\r\n errorMessage.status = \"Failure\";\r\n errorMessage.message = result.message;\r\n errorMessage.type = \"Disable\";\r\n this.setState({\r\n errorMessage: errorMessage,\r\n PortalDisabling: false,\r\n });\r\n return;\r\n }\r\n }\r\n }\r\n\r\n await updatePortal(dataItem._id, { isActive: !dataItem.isActive })\r\n\r\n dataItem.isActive = !dataItem.isActive;\r\n\r\n this.props.portal.isActive = dataItem.isActive;\r\n const portals = this.state.Portals.map(portal => {\r\n if (portal._id === dataItem._id) {\r\n return {\r\n ...dataItem\r\n }\r\n }\r\n return portal;\r\n })\r\n\r\n this.setState({\r\n Portals: portals,\r\n portal: { ...this.props.portal },\r\n PortalDisabling: false,\r\n DisablePortalPopup: false\r\n });\r\n };\r\n\r\n updatePortalValueInState = (updatedPortalValues) => {\r\n const Portals = this.state.Portals.map(portal => {\r\n if (portal._id === updatedPortalValues._id) {\r\n return {\r\n ...portal,\r\n ...updatedPortalValues\r\n }\r\n }\r\n return portal;\r\n })\r\n this.props.updatePortal(updatedPortalValues);\r\n this.setState({\r\n portal: { ...this.state.portal, ...updatedPortalValues },\r\n Portals\r\n })\r\n }\r\n}\r\n\r\nexport default withTranslation([\r\n \"portal/disable_portal\",\r\n \"portal/enable_portal\",\r\n \"portal/delete_portal\"\r\n], {\r\n withRef: true,\r\n})(General);\r\n","import { TreeView } from \"@progress/kendo-react-treeview\";\r\n\r\nfunction MenuItemTreeView(props) {\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default MenuItemTreeView;","import { ENTITY_LABEL } from \"../../../Helpers/Labels/EntityLabel\";\r\n\r\nexport const NO_ENTITY_AVAILABLE_OPTION = {\r\n name: `No ${ENTITY_LABEL} available`,\r\n id: \"no-entity-available\"\r\n};\r\n\r\nexport const NO_PAGE_AVAILABLE_OPTION = {\r\n pageName: \"No page available\",\r\n _id: \"no-page-available\"\r\n};","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { useEffect, useState, useContext } from \"react\";\r\nimport ErrorMessage from \"../../../Shared/Error/ErrorMessage\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { createItem, getPortalEntityTargetPage } from \"../../../../API/Portal/Portal\";\r\nimport { NO_ENTITY_AVAILABLE_OPTION, NO_PAGE_AVAILABLE_OPTION } from \"./utils\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { GlobalContext } from \"../../../../Renderers/GlobalContext\";\r\nimport { getEntities } from \"../../../../API/Entity/Entity\";\r\n\r\nfunction CreateMenuItemDialog({ menuItems, portalId, projectId, onToggle, onCreate }) {\r\n\r\n const menuTypes = [\"Sub Menu Item\", \"Recent Records\", \"Recent Lists\"];\r\n\r\n const selectedId = \"\";\r\n\r\n const [formState, setFormState] = useState({\r\n name: \"\",\r\n type: \"\",\r\n entity: NO_ENTITY_AVAILABLE_OPTION,\r\n page: NO_PAGE_AVAILABLE_OPTION\r\n });\r\n\r\n const [entities, setEntities] = useState([]);\r\n const { organization } = useContext(GlobalContext).state\r\n const [pages, setPages] = useState([]);\r\n const { t, i18n } = useTranslation([\r\n \"portal/menu_items\"\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n useEffect(() => {\r\n const fetchEntities = async () => {\r\n const entities = await getEntities(projectId);\r\n // i18n.changeLanguage(organization.platformLanguage)\r\n const filteredEntities = getFilteredEntities(entities);\r\n setEntities(entities);\r\n setFormState(prevState => ({\r\n ...prevState,\r\n entity: filteredEntities.length === 0 ? NO_ENTITY_AVAILABLE_OPTION : filteredEntities[0]\r\n }));\r\n }\r\n \r\n fetchEntities();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (\r\n formState.entity &&\r\n formState.entity.id &&\r\n formState.entity.id.length > 0 &&\r\n formState.entity.id !== NO_ENTITY_AVAILABLE_OPTION.id\r\n ) {\r\n getPortalEntityTargetPage(portalId, formState.entity.id)\r\n .then(({ data }) => {\r\n setPages(data)\r\n })\r\n }\r\n }, [formState.entity])\r\n\r\n function getFilteredEntities(entities) {\r\n if (selectedId) {\r\n return []\r\n }\r\n return entities.filter(entity => !(\r\n menuItems.some(menuItem => menuItem.entityId === entity.id)\r\n ))\r\n }\r\n\r\n function handleChange(event) {\r\n setFormState(prevState => ({\r\n ...prevState,\r\n [event.target.name]: event.target.value,\r\n }))\r\n }\r\n\r\n async function createNewItem(e) {\r\n e.preventDefault();\r\n const properties = {\r\n name: formState.name,\r\n entityId: formState.entity.id,\r\n targetPageId: formState.page._id\r\n }\r\n const item = await createItem(projectId, portalId, properties);\r\n onCreate(item);\r\n }\r\n\r\n function isCreateDisabled() {\r\n return (\r\n formState.name.trim().localeCompare(\"\") === 0 ||\r\n formState.page._id.localeCompare(NO_PAGE_AVAILABLE_OPTION._id) === 0 ||\r\n formState.entity.id.localeCompare(NO_ENTITY_AVAILABLE_OPTION.id) === 0\r\n )\r\n }\r\n\r\n function handleToggle() {\r\n onToggle();\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n {t(\"create_dialog.menu_item_name_field_label\")}\r\n
    \r\n \r\n {selectedId.trim().localeCompare(\"\") !== 0 &&\r\n <>\r\n
    \r\n {t(\"create_dialog.menu_type_field_label\")}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n }\r\n {\r\n (\r\n entities.length > 0 &&\r\n selectedId !== \"\"\r\n ) &&\r\n \r\n }\r\n
    \r\n {t(\"create_dialog.target_object_field_label\")}\r\n
    \r\n \r\n\r\n
    \r\n {t(\"create_dialog.target_object_field_label\")}\r\n
    \r\n \r\n \r\n \r\n \r\n {t(\"create_dialog.buttons.cancel_button_label\")}\r\n \r\n \r\n {t(\"create_dialog.buttons.create_button_label\")}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CreateMenuItemDialog;","export function getTreeItem(tree, itemIndex) {\r\n let item = { children: tree };\r\n const indexes = itemIndex.split('_');\r\n indexes.forEach(index => {\r\n item = item.children[index];\r\n });\r\n return item;\r\n}\r\n\r\nexport function removeTreeViewItem(tree, itemIndex) {\r\n const indexes = itemIndex.split('_');\r\n let item = { children: tree };\r\n let parent = null;\r\n indexes.forEach((index, i) => {\r\n if (i === indexes.length - 1) {\r\n parent = item;\r\n }\r\n item = item.children[index];\r\n });\r\n const index = indexes[indexes.length - 1];\r\n parent.children.splice(index, 1);\r\n return tree;\r\n}","import React, { useEffect, useContext } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { GlobalContext } from \"../../../Renderers/GlobalContext\";\r\n\r\nconst Toolbar = ({\r\n disabled, onSave, onDelete, onReset, onNameChange, name, type, hasSpChars, placeholder\r\n}) => {\r\n\r\n const { organization } = useContext(GlobalContext).state\r\n const { t, i18n } = useTranslation([\r\n \"portal/menu_items\"\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n useEffect(() => {\r\n // i18n.changeLanguage(organization.platformLanguage)\r\n }, [])\r\n\r\n function save(e) {\r\n e.target.disabled = true;\r\n onSave(e);\r\n }\r\n\r\n function handleChange(e) {\r\n onNameChange(e)\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n {t(\"edit_form.title\")}\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {/*
    {type}
    */}\r\n
    \r\n
    \r\n {t(\"edit_form.menu_item_name_field_label\")}\r\n {hasSpChars && t(\"edit_form.errors.name_contain_specical_character\")}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default Toolbar;\r\n","export const MENU_ITEM_PROPERTIES = [\r\n \"name\",\r\n \"label\",\r\n \"tooltip\",\r\n \"icon\",\r\n \"showIcon\",\r\n \"showAs\",\r\n \"entityId\",\r\n \"targetPageId\",\r\n \"show\",\r\n \"recordsToShow\"\r\n]\r\n\r\nexport const RECENT_RECORD_PROPERTIES = [\r\n \"name\",\r\n \"label\",\r\n \"tooltip\",\r\n \"icon\",\r\n \"showIcon\",\r\n \"showAs\",\r\n \"entityId\",\r\n \"targetPageId\",\r\n \"show\",\r\n \"order\",\r\n \"recordsToShow\",\r\n \"attributes\",\r\n]","import { useEffect, useState, useContext } from \"react\";\r\nimport Toolbar from \"../../../Shared/Toolbar/Toolbar\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { getPortalEntityTargetPage, updateItem } from \"../../../../API/Portal/Portal\";\r\nimport { MENU_ITEM_PROPERTIES } from \"./utils\";\r\nimport { NO_ENTITY_AVAILABLE_OPTION, NO_PAGE_AVAILABLE_OPTION } from \"../CreateMenuItemDialog/utils\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { GlobalContext } from \"../../../../Renderers/GlobalContext\";\r\nimport { getEntities } from \"../../../../API/Entity/Entity\";\r\n\r\nfunction MenuItemForm({ itemId, portalId, projectId, properties, onDelete, updateMenuItem }) {\r\n\r\n const [state, setState] = useState({\r\n ...properties,\r\n entities: [],\r\n pages: [],\r\n entity: {},\r\n page: {}\r\n })\r\n const [isChanged, setIsChanged] = useState(false);\r\n const { organization } = useContext(GlobalContext).state\r\n const { t, i18n } = useTranslation([\r\n \"portal/menu_items\"\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n\r\n useEffect(() => {\r\n // i18n.changeLanguage(organization.platformLanguage)\r\n handleStateChange();\r\n }, [state])\r\n\r\n useEffect(() => {\r\n async function getPages() {\r\n const { data: pages } = await getPortalEntityTargetPage(portalId, state.entity._id);\r\n const stateToUpdate = {\r\n pages,\r\n page: {}\r\n }\r\n const page = pages.find(page => page._id === properties.targetPageId) || NO_PAGE_AVAILABLE_OPTION;\r\n if (page) {\r\n stateToUpdate.page = page;\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n ...stateToUpdate\r\n }))\r\n }\r\n\r\n if (state.entity && state.entity._id) {\r\n getPages();\r\n }\r\n }, [state.entity])\r\n\r\n useEffect(() => {\r\n async function getData() {\r\n const entities = await getEntities(projectId);\r\n const { data: pages } = await getPortalEntityTargetPage(portalId, properties.entityId);\r\n const entity = entities.find(entity => entity._id === properties.entityId) || NO_ENTITY_AVAILABLE_OPTION;\r\n const page = pages.find(page => page._id === properties.targetPageId) || NO_PAGE_AVAILABLE_OPTION;\r\n setState(prevState => ({\r\n ...prevState,\r\n ...properties,\r\n entities,\r\n pages,\r\n entity,\r\n page\r\n }))\r\n }\r\n\r\n getData();\r\n }, [itemId])\r\n\r\n function handleChange(event) {\r\n const { name, value } = event.target;\r\n setState(prevState => ({\r\n ...prevState,\r\n [name]: value\r\n }))\r\n }\r\n\r\n function handleReset() {\r\n const entity = state.entities.find(entity => entity._id === properties.entityId);\r\n const page = state.pages.find(page => page._id === properties.targetPageId);\r\n setState(prevState => ({\r\n ...prevState,\r\n ...properties,\r\n entity,\r\n page\r\n }))\r\n }\r\n\r\n function handleStateChange() {\r\n let isChanged = false;\r\n for (const property of MENU_ITEM_PROPERTIES) {\r\n switch (property) {\r\n case \"entityId\":\r\n if (state.entity._id !== properties.entityId) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"targetPageId\":\r\n if (state.page._id !== properties.targetPageId) {\r\n isChanged = true;\r\n }\r\n break;\r\n default:\r\n if (state[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n }\r\n setIsChanged(isChanged);\r\n }\r\n\r\n async function handleSave() {\r\n const properties = {};\r\n for (const property of MENU_ITEM_PROPERTIES) {\r\n switch (property) {\r\n case \"entityId\":\r\n properties[property] = state.entity._id;\r\n break;\r\n case \"targetPageId\":\r\n properties[property] = state.page._id;\r\n break;\r\n default:\r\n properties[property] = state[property];\r\n break;\r\n }\r\n }\r\n await updateItem(portalId, itemId, properties);\r\n updateMenuItem(portalId, itemId, properties);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"edit_form.target_object_field_label\")}\r\n {state.entity._id === \"\" && (\r\n \r\n )}\r\n
    \r\n \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {t(\"edit_form.label_field_label\")}\r\n
    \r\n \r\n
    \r\n {t(\"edit_form.tooltip_field_label\")}\r\n
    \r\n \r\n\r\n
    \r\n {t(\"edit_form.target_page_field_label\")}\r\n {state.page._id === \"\" && (\r\n \r\n )}\r\n
    \r\n\r\n \r\n\r\n
    \r\n {t(\"edit_form.show_as_field_label\")}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default MenuItemForm;","import { useEffect, useState, useContext } from \"react\";\r\nimport Toolbar from \"../../../Shared/Toolbar/Toolbar\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { getPortalEntityTargetPage, updateItem } from \"../../../../API/Portal/Portal\";\r\nimport { MENU_ITEM_PROPERTIES } from \"./utils\";\r\nimport { NO_ENTITY_AVAILABLE_OPTION, NO_PAGE_AVAILABLE_OPTION } from \"../CreateMenuItemDialog/utils\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { GlobalContext } from \"../../../../Renderers/GlobalContext\";\r\nimport { getEntities } from \"../../../../API/Entity/Entity\";\r\n\r\nfunction RecentListForm({ itemId, portalId, projectId, properties, parentMenuItemId, onDelete, updateMenuItem }) {\r\n\r\n const [state, setState] = useState({\r\n ...properties,\r\n entities: [],\r\n pages: [],\r\n entity: {},\r\n page: {}\r\n })\r\n const [isChanged, setIsChanged] = useState(false);\r\n const { organization } = useContext(GlobalContext).state\r\n const { t, i18n } = useTranslation([\r\n \"portal/menu_items\"\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n\r\n useEffect(() => {\r\n async function getData() {\r\n // i18n.changeLanguage(organization.platformLanguage)\r\n const entities = await getEntities(projectId);\r\n const { data: pages } = await getPortalEntityTargetPage(portalId, properties.entityId);\r\n const entity = entities.find(entity => entity._id === properties.entityId) || NO_ENTITY_AVAILABLE_OPTION;\r\n const page = pages.find(page => page._id === properties.targetPageId) || NO_PAGE_AVAILABLE_OPTION;\r\n setState(prevState => ({\r\n ...prevState,\r\n ...properties,\r\n entities,\r\n pages,\r\n entity,\r\n page\r\n }))\r\n }\r\n getData();\r\n }, [itemId])\r\n\r\n useEffect(() => {\r\n handleFormChange()\r\n }, [state])\r\n\r\n useEffect(() => {\r\n async function getPages() {\r\n const { data: pages } = await getPortalEntityTargetPage(portalId, state.entity._id);\r\n const stateToUpdate = {\r\n pages,\r\n page: {}\r\n }\r\n const page = pages.find(page => page._id === properties.targetPageId) || NO_PAGE_AVAILABLE_OPTION;\r\n if (page) {\r\n stateToUpdate.page = page;\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n ...stateToUpdate\r\n }))\r\n }\r\n\r\n if (state.entity && state.entity._id) {\r\n getPages();\r\n }\r\n }, [state.entity])\r\n\r\n function handleChange(event) {\r\n const { name, value } = event.target;\r\n setState(prevState => ({\r\n ...prevState,\r\n [name]: value\r\n }))\r\n }\r\n\r\n function handleReset() {\r\n const entity = state.entities.find(entity => entity._id === properties.entityId);\r\n const page = state.pages.find(page => page._id === properties.targetPageId);\r\n setState(prevState => ({\r\n ...prevState,\r\n ...properties,\r\n entity,\r\n page\r\n }))\r\n }\r\n\r\n function handleFormChange() {\r\n let isChanged = false;\r\n for (const property of MENU_ITEM_PROPERTIES) {\r\n switch (property) {\r\n case \"entityId\":\r\n if (state.entity._id !== properties.entityId) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"targetPageId\":\r\n if (state.page._id !== properties.targetPageId) {\r\n isChanged = true;\r\n }\r\n break;\r\n default:\r\n if (state[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n }\r\n setIsChanged(isChanged);\r\n }\r\n\r\n async function handleSave() {\r\n const properties = {};\r\n for (const property of MENU_ITEM_PROPERTIES) {\r\n switch (property) {\r\n case \"entityId\":\r\n properties[property] = state.entity._id;\r\n break;\r\n case \"targetPageId\":\r\n properties[property] = state.page._id;\r\n break;\r\n default:\r\n properties[property] = state[property];\r\n break;\r\n }\r\n }\r\n await updateItem(portalId, parentMenuItemId, properties, itemId);\r\n updateMenuItem(parentMenuItemId, itemId, properties);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"edit_form.menu_item_name_field_label\")}\r\n {state.entity._id === \"\" && (\r\n \r\n )}\r\n
    \r\n \r\n\r\n
    \r\n {t(\"edit_form.label_field_label\")}\r\n
    \r\n \r\n
    \r\n {t(\"edit_form.tooltip_field_label\")}\r\n
    \r\n \r\n\r\n
    \r\n {t(\"edit_form.number_of_lists_field_label\")}\r\n
    \r\n \r\n\r\n
    \r\n {t(\"edit_form.target_page_field_label\")}\r\n {state.page._id === \"\" && (\r\n \r\n )}\r\n
    \r\n\r\n \r\n\r\n
    \r\n {t(\"edit_form.show_as_field_label\")}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default RecentListForm;","import { useEffect, useState, useContext } from \"react\";\r\nimport Toolbar from \"../../../Shared/Toolbar/Toolbar\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { getAllAttributes } from \"../../../Helpers/Schema/Schema\";\r\nimport { getPortalEntityTargetPage, updateItem } from \"../../../../API/Portal/Portal\";\r\nimport { RECENT_RECORD_PROPERTIES } from \"./utils\";\r\nimport { NO_ENTITY_AVAILABLE_OPTION, NO_PAGE_AVAILABLE_OPTION } from \"../CreateMenuItemDialog/utils\";\r\nimport { GlobalContext } from \"../../../../Renderers/GlobalContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getEntities } from \"../../../../API/Entity/Entity\";\r\n\r\nfunction RecentRecordsForm({ itemId, portalId, projectId, properties, parentMenuItemId, onDelete, updateMenuItem }) {\r\n\r\n const [state, setState] = useState({\r\n ...properties,\r\n entities: [],\r\n pages: [],\r\n attributes: [],\r\n entity: {},\r\n page: {},\r\n firstAttribute: {},\r\n secondAttribute: {}\r\n })\r\n const [isChanged, setIsChanged] = useState(false);\r\n const { organization } = useContext(GlobalContext).state\r\n const { t, i18n } = useTranslation([\r\n \"portal/menu_items\"\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n\r\n useEffect(() => {\r\n // i18n.changeLanguage(organization.platformLanguage)\r\n handleFormChange()\r\n }, [state])\r\n\r\n useEffect(() => {\r\n async function getData() {\r\n const entities = await getEntities(projectId);\r\n const { data: pages } = await getPortalEntityTargetPage(portalId, properties.entityId);\r\n const attributes = await getAllAttributes(properties.entityId);\r\n const entity = entities.find(entity => entity._id === properties.entityId) || NO_ENTITY_AVAILABLE_OPTION;\r\n const page = pages.find(page => page._id === properties.targetPageId) || NO_PAGE_AVAILABLE_OPTION;\r\n const [firstAttributeId, secondAttributeId] = properties.attributes;\r\n const firstAttribute = attributes.find(attribute => attribute._id === firstAttributeId) || {};\r\n const secondAttribute = attributes.find(attribute => attribute._id === secondAttributeId) || {};\r\n const sortedAttributes = attributes.sort((a, b) => a.attributeName.localeCompare(b.attributeName))\r\n setState(prevState => ({\r\n ...prevState,\r\n ...properties,\r\n entities,\r\n pages,\r\n entity,\r\n page,\r\n attributes: sortedAttributes,\r\n firstAttribute,\r\n secondAttribute\r\n }))\r\n }\r\n\r\n getData();\r\n }, [itemId])\r\n\r\n useEffect(() => {\r\n async function getPages() {\r\n const { data: pages } = await getPortalEntityTargetPage(portalId, state.entity._id);\r\n const stateToUpdate = {\r\n pages,\r\n page: {}\r\n }\r\n const page = pages.find(page => page._id === properties.targetPageId) || NO_PAGE_AVAILABLE_OPTION;\r\n if (page) {\r\n stateToUpdate.page = page;\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n ...stateToUpdate\r\n }))\r\n }\r\n\r\n async function getAttributes() {\r\n const attributes = await getAllAttributes(state.entity._id);\r\n const filteredAttributes = attributes.filter(attribute => (\r\n attribute.attributeType !== \"Image\" &&\r\n !(attribute.attributeType === \"Mirror\" && [\"Image\", \"Html\"].includes(attribute.attribute.attributeType))\r\n ))\r\n const [firstAttributeId, secondAttributeId] = properties.attributes;\r\n const firstAttribute = filteredAttributes.find(attribute => attribute._id === firstAttributeId);\r\n const secondAttribute = filteredAttributes.find(attribute => attribute._id === secondAttributeId);\r\n const stateToUpdate = {\r\n attributes: filteredAttributes,\r\n firstAttribute: {},\r\n secondAttribute: {}\r\n }\r\n if (firstAttribute) {\r\n stateToUpdate.firstAttribute = firstAttribute;\r\n }\r\n if (secondAttribute) {\r\n stateToUpdate.secondAttribute = secondAttribute;\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n ...stateToUpdate\r\n }))\r\n }\r\n\r\n if (state.entity && state.entity._id) {\r\n getPages();\r\n getAttributes();\r\n }\r\n }, [state.entity])\r\n\r\n function handleChange(event) {\r\n const { name, value } = event.target;\r\n setState(prevState => ({\r\n ...prevState,\r\n [name]: value\r\n }))\r\n }\r\n\r\n function handleReset() {\r\n const entity = state.entities.find(entity => entity._id === properties.entityId);\r\n const page = state.pages.find(page => page._id === properties.targetPageId);\r\n setState(prevState => ({\r\n ...prevState,\r\n ...properties,\r\n entity,\r\n page\r\n }))\r\n }\r\n\r\n function handleFormChange() {\r\n let isChanged = false;\r\n for (const property of RECENT_RECORD_PROPERTIES) {\r\n switch (property) {\r\n case \"entityId\":\r\n if (state.entity._id !== properties.entityId) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"targetPageId\":\r\n if (state.page._id !== properties.targetPageId) {\r\n isChanged = true;\r\n }\r\n break;\r\n case \"attributes\":\r\n if (\r\n state.firstAttribute._id !== properties.attributes[0] ||\r\n state.secondAttribute._id !== properties.attributes[1]\r\n ) {\r\n isChanged = true;\r\n }\r\n break;\r\n default:\r\n if (state[property] !== properties[property]) {\r\n isChanged = true;\r\n }\r\n break;\r\n }\r\n }\r\n setIsChanged(isChanged)\r\n }\r\n\r\n async function handleSave() {\r\n const properties = {};\r\n for (const property of RECENT_RECORD_PROPERTIES) {\r\n switch (property) {\r\n case \"entityId\":\r\n properties[property] = state.entity._id;\r\n break;\r\n case \"targetPageId\":\r\n properties[property] = state.page._id;\r\n break;\r\n case \"attributes\":\r\n const firstAttributeId = state.firstAttribute ? state.firstAttribute._id : \"\";\r\n const secondAttributeId = state.secondAttribute ? state.secondAttribute._id : \"\";\r\n const attributes = [];\r\n if (firstAttributeId) {\r\n attributes.push(firstAttributeId);\r\n }\r\n if (secondAttributeId) {\r\n attributes.push(secondAttributeId);\r\n }\r\n properties[property] = attributes;\r\n break;\r\n default:\r\n properties[property] = state[property];\r\n break;\r\n }\r\n }\r\n await updateItem(portalId, parentMenuItemId, properties, itemId);\r\n updateMenuItem(parentMenuItemId, itemId, properties);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"edit_form.menu_item_name_field_label\")}\r\n {state.entity._id === \"\" && (\r\n \r\n )}\r\n
    \r\n \r\n\r\n
    \r\n {t(\"edit_form.label_field_label\")}\r\n
    \r\n \r\n
    \r\n {t(\"edit_form.tooltip_field_label\")}\r\n
    \r\n \r\n\r\n
    \r\n {t(\"edit_form.number_of_records_field_label\")}\r\n
    \r\n \r\n\r\n
    \r\n {t(\"edit_form.target_page_field_label\")}\r\n {state.page._id === \"\" && (\r\n \r\n )}\r\n
    \r\n\r\n \r\n\r\n
    \r\n {t(\"edit_form.show_as_field_label\")}\r\n
    \r\n \r\n\r\n {state.entity._id !== \"\" && (\r\n <>\r\n
    \r\n {t(\"edit_form.property_to_show_field_label\")}\r\n
    \r\n \r\n \r\n {\r\n state.firstAttribute &&\r\n state.secondAttribute &&\r\n state.firstAttribute._id &&\r\n state.firstAttribute._id === state.secondAttribute._id &&\r\n t(\"edit_form.errors.property_in_use\")\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 RecentRecordsForm;","import { getTreeItem } from \"../MenuItems/MenuItemTreeView/utils\";\r\nimport MenuItemForm from \"./MenuItemForm\";\r\nimport RecentListForm from \"./RecentListForm\";\r\nimport RecentRecordsForm from \"./RecentRecordsForm\";\r\n\r\nfunction EditItemForm(props) {\r\n\r\n const item = getTreeItem(props.menuItems, props.selectedItemIndex);\r\n const parentMenuItem = getTreeItem(props.menuItems, props.selectedItemIndex.split(\"_\")[0]);\r\n\r\n switch (item.type) {\r\n case \"Recent Records\":\r\n return \r\n case \"Recent Lists\":\r\n return \r\n default:\r\n return \r\n }\r\n}\r\n\r\nexport default EditItemForm;","import React, { useContext, useEffect } from \"react\";\r\nimport { deleteItem } from \"../../../../API/Portal/Portal\";\r\nimport RemoveDialog from \"../../../Shared/Remove/RemoveDialog\";\r\nimport { getTreeItem } from \"../MenuItems/MenuItemTreeView/utils\";\r\nimport { GlobalContext } from \"../../../../Renderers/GlobalContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nfunction DeleteMenuItemDialog({\r\n portalId, selectedItemIndex, menuItems,\r\n toggleDialog, onDelete\r\n}) {\r\n\r\n const { organization } = useContext(GlobalContext).state\r\n const { t, i18n } = useTranslation([\r\n \"portal/menu_items\"\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n useEffect(() => {\r\n // i18n.changeLanguage(organization.platformLanguage)\r\n }, [])\r\n\r\n\r\n const item = getTreeItem(menuItems, selectedItemIndex);\r\n\r\n async function handleDelete() {\r\n if (selectedItemIndex.length === 1) {\r\n await deleteItem(portalId, item.id);\r\n } else {\r\n const splitIndex = selectedItemIndex.split(\"_\");\r\n const parentMenuItem = getTreeItem(menuItems, splitIndex[0]);\r\n await deleteItem(portalId, parentMenuItem.id, item.id);\r\n }\r\n onDelete();\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default DeleteMenuItemDialog;","import { useContext, useEffect, useState } from \"react\";\r\nimport { getMenuItems, reorderItems } from \"../../../API/Portal/Portal\";\r\nimport MenuItemTreeView from \"./MenuItems/MenuItemTreeView/MenuItemTreeView\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport CreateMenuItemDialog from \"./CreateMenuItemDialog/CreateMenuItemDialog\";\r\nimport EditItemForm from \"./EditForms/EditItemForm\";\r\nimport DeleteMenuItemDialog from \"./DeleteMenuItemDialog/DeleteMenuItemDialog\";\r\nimport { removeTreeViewItem } from \"./MenuItems/MenuItemTreeView/utils\";\r\nimport { TreeViewDragAnalyzer, moveTreeViewItem } from \"@progress/kendo-react-treeview\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { GlobalContext } from \"../../../Renderers/GlobalContext\";\r\n\r\nfunction MenuItems({ portalId, projectId }) {\r\n\r\n const [menuItems, setMenuItems] = useState([]);\r\n const { organization } = useContext(GlobalContext).state\r\n const [selectedItemIndex, setSelectedItemIndex] = useState(\"0\");\r\n const [showCreateMenuItemDialog, setShowCreateMenuItemDialog] = useState(false);\r\n const [showDeleteMenuItemDialog, setShowDeleteMenuItemDialog] = useState(false);\r\n const { t, i18n } = useTranslation([\r\n \"portal/menu_items\"\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n useEffect(() => {\r\n // i18n.changeLanguage(organization.platformLanguage)\r\n getData();\r\n }, [])\r\n\r\n async function getData() {\r\n const { data } = await getMenuItems(portalId);\r\n const menuItems = data.map(item => ({\r\n ...item,\r\n expanded: true\r\n }))\r\n setMenuItems(menuItems);\r\n }\r\n\r\n function toggleCreateMenuItemDialog() {\r\n setShowCreateMenuItemDialog(prevState => !prevState);\r\n }\r\n\r\n function toggleDeleteMenuItemDialog() {\r\n setShowDeleteMenuItemDialog(prevState => !prevState);\r\n }\r\n\r\n function toggleExpand(event) {\r\n setMenuItems(prevState => prevState.map((item, index) => {\r\n if (String(index) === event.itemHierarchicalIndex) {\r\n return {\r\n ...item,\r\n expanded: !item.expanded\r\n }\r\n }\r\n return item;\r\n }));\r\n }\r\n\r\n function addItemToMenuItems(item) {\r\n setMenuItems(prevState => [...prevState, item]);\r\n toggleCreateMenuItemDialog();\r\n }\r\n\r\n function handleItemSelect(event) {\r\n setSelectedItemIndex(event.itemHierarchicalIndex);\r\n }\r\n\r\n function handleDelete() {\r\n toggleDeleteMenuItemDialog();\r\n const newTree = removeTreeViewItem(menuItems, selectedItemIndex);\r\n let newSelectedItem = selectedItemIndex;\r\n if (newTree.length === 0) {\r\n newSelectedItem = \"\";\r\n } else if (newTree.length === 1) {\r\n newSelectedItem = \"0\";\r\n } else {\r\n const [parentIndex, childIndex] = selectedItemIndex.split(\"_\");\r\n if (childIndex) {\r\n const parentItem = menuItems[parentIndex];\r\n const children = parentItem.children;\r\n if (children.length === 0) {\r\n newSelectedItem = parentIndex;\r\n } else if (children.length === 1) {\r\n newSelectedItem = `${parentIndex}_0`;\r\n }\r\n }\r\n }\r\n setMenuItems(newTree);\r\n setSelectedItemIndex(newSelectedItem);\r\n }\r\n\r\n function handleDragEnd(event) {\r\n const eventAnalyzer = new TreeViewDragAnalyzer(event).init();\r\n const direction = eventAnalyzer.getDropOperation();\r\n\r\n if (eventAnalyzer.isDropAllowed && direction !== \"child\") {\r\n const newTree = moveTreeViewItem(\r\n event.itemHierarchicalIndex,\r\n menuItems,\r\n direction,\r\n eventAnalyzer.destinationMeta.itemHierarchicalIndex,\r\n null,\r\n \"children\"\r\n );\r\n newTree.map((item, index) => {\r\n item.order = (index + 1) * 100000000;\r\n if (item.children) {\r\n item.children.map((child, childIndex) => {\r\n child.order = (childIndex + 1) * 100000000;\r\n })\r\n }\r\n })\r\n reorderItems(portalId, { items: newTree });\r\n setMenuItems(newTree);\r\n }\r\n }\r\n\r\n function updateMenuItem(parentId, itemId, newProperties) {\r\n if (parentId === portalId) {\r\n setMenuItems(items => items.map(item => {\r\n if (item.id === itemId) {\r\n return {\r\n ...item,\r\n ...newProperties\r\n }\r\n }\r\n return item;\r\n }))\r\n } else {\r\n setMenuItems(items =>\r\n items.map(item => ({\r\n ...item,\r\n children: item.children ? item.children.map(child => {\r\n if (child.id === itemId) {\r\n return {\r\n ...child,\r\n ...newProperties\r\n }\r\n }\r\n return child;\r\n }) : []\r\n })\r\n ))\r\n }\r\n }\r\n\r\n return (\r\n \r\n
    \r\n {\r\n showCreateMenuItemDialog &&\r\n \r\n }\r\n {\r\n showDeleteMenuItemDialog &&\r\n \r\n }\r\n
    \r\n
    \r\n {t(\"header.title\")}\r\n
    \r\n \r\n {t(\"header.buttons.add_menu_item_button_label\")}\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n menuItems.length > 0 &&\r\n \r\n }\r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default MenuItems;\r\n","import React, { Component } from \"react\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport InnerLoader from \"../../Shared/Loader/InnerLoader\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport { PageContainer } from \"../../Drawer/PageContainer\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Menu, MenuItem } from \"@progress/kendo-react-layout\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getPortalEntitiesAndPagesConfigurations, updateEntitiesConfigurations } from \"../../../API/Entity/Entity\";\r\n\r\nclass Entities extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data: [],\r\n entitiesToUpdate: [],\r\n removedFromPortal: [],\r\n dataLoading: true,\r\n isLoading: false\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n let data = await getPortalEntitiesAndPagesConfigurations(this.props.portal._id, this.props.project._id);\r\n const entities = data\r\n .slice()\r\n .sort((a, b) => a.order - b.order)\r\n .map((entity, index) => ({\r\n ...entity,\r\n indexId: index + 1\r\n }));\r\n let dataLoading = false;\r\n this.setState({\r\n data: [...entities],\r\n dataLoading\r\n });\r\n };\r\n\r\n render() {\r\n const { t } = this.props;\r\n if (this.state.dataLoading) {\r\n return ;\r\n }\r\n return (\r\n \r\n {this.state.showEntityRemoveWarning && (\r\n \r\n
    \r\n

    \r\n {t(\"entity_removal_dialog.warning1\", { entityName: this.getNameOfEntitiesRemoved() })}\r\n

    \r\n

    \r\n {t(\"entity_removal_dialog.warning2\", { entityName: this.getNameOfEntitiesRemoved() })}\r\n

    \r\n

    \r\n {t(\"entity_removal_dialog.warning3\")}\r\n

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n {this.state.data.length !== 0 && (\r\n
    \r\n
    \r\n
    \r\n {this.state.isLoading && (\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {t(\"buttons.save_button_label\")}\r\n \r\n e.item.data()} className=\"no-dropdown-in-menu\">\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 {props.dataItem.name}\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 goToEntity = () => {\r\n window.location.href = `/${this.props.organization.orgName}/${this.props.project.name}/Entities`;\r\n };\r\n\r\n getUseInPortalValue = (entity) => {\r\n const configuration = entity.configurations[this.props.portal._id];\r\n if (configuration === undefined) {\r\n return false\r\n }\r\n return configuration.useInPortal;\r\n };\r\n\r\n handleUseInPortalCheckBox = (e) => {\r\n const { checked } = e.target.element;\r\n const dataKey = e.target.element.getAttribute(\"data-key\");\r\n let { data, entitiesToUpdate } = this.state;\r\n\r\n const entityIndex = data.findIndex((e) => e._id === dataKey);\r\n const entity = data[entityIndex];\r\n const entityConfiguration = entity.configurations[this.props.portal._id];\r\n\r\n const removedFromPortal = this.getNewRemovedFromPortalValue(\r\n dataKey,\r\n checked\r\n );\r\n\r\n entityConfiguration.useInPortal = checked;\r\n entityConfiguration.shouldCreateCards = checked;\r\n entityConfiguration.shouldCreateDetailsView = checked;\r\n entityConfiguration.shouldCreateEditRecord = checked;\r\n entityConfiguration.shouldCreateNewRecord = checked;\r\n entityConfiguration.shouldCreateSplitView = checked;\r\n entityConfiguration.shouldCreateCalendar = checked;\r\n entityConfiguration.shouldCreateTable = checked;\r\n entityConfiguration.shouldCreateKanban = checked;\r\n\r\n\r\n const exist = entitiesToUpdate.findIndex((e) => e._id === dataKey);\r\n if (exist < 0) {\r\n entitiesToUpdate.push(entity);\r\n } else {\r\n entitiesToUpdate = entitiesToUpdate.filter((e) => e._id !== dataKey);\r\n }\r\n\r\n this.setState({\r\n data,\r\n entitiesToUpdate,\r\n removedFromPortal,\r\n });\r\n };\r\n\r\n getNewRemovedFromPortalValue = (entityId, newState) => {\r\n const newRemovedFromPortal = this.state.removedFromPortal.slice();\r\n const entityIndex = newRemovedFromPortal.findIndex(\r\n (element) => element === entityId\r\n );\r\n if (newState === true) {\r\n if (entityIndex > -1) {\r\n newRemovedFromPortal.splice(entityIndex, 1);\r\n }\r\n } else if (newState === false) {\r\n const entity = this.state.data.find(element => element._id === entityId);\r\n if (entity.numberOfPages > 0) {\r\n newRemovedFromPortal.push(entityId);\r\n }\r\n }\r\n return newRemovedFromPortal;\r\n };\r\n\r\n getNameOfEntitiesRemoved = () => {\r\n const names = [];\r\n const { entitiesToUpdate } = this.state;\r\n for (const entity of entitiesToUpdate) {\r\n const entityConfiguration = entity.configurations[this.props.portal._id];\r\n if (!entityConfiguration.useInPortal) {\r\n names.push(entity.name);\r\n }\r\n }\r\n return names.join(', ');\r\n }\r\n\r\n IsAllEntitiesBeDisabled = (data) => {\r\n for (let entity of data) {\r\n const entityConfiguration = entity.configurations[this.props.portal._id];\r\n if (entityConfiguration.useInPortal) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n save = () => {\r\n debugger\r\n const isAnyEntityRemovedFromPortal = this.entitiesRemovedFromPortal();\r\n if (isAnyEntityRemovedFromPortal === true) {\r\n this.setState({\r\n showEntityRemoveWarning: true\r\n });\r\n } else {\r\n this.saveConfiguration();\r\n }\r\n };\r\n\r\n cancelSave = () => {\r\n this.setState({\r\n showEntityRemoveWarning: false\r\n })\r\n }\r\n\r\n saveConfiguration = async () => {\r\n const { entitiesToUpdate } = this.state;\r\n await updateEntitiesConfigurations(entitiesToUpdate, this.props.portal._id);\r\n\r\n this.setState({\r\n entitiesToUpdate: [],\r\n showEntityRemoveWarning: false,\r\n removedFromPortal: []\r\n });\r\n };\r\n\r\n entitiesRemovedFromPortal = () => {\r\n return this.state.removedFromPortal.length > 0;\r\n };\r\n\r\n reset = () => {\r\n const { entitiesToUpdate, data } = this.state;\r\n for (let entity of data) {\r\n const exist = entitiesToUpdate.find(e => e._id === entity._id);\r\n if (exist) {\r\n entity.configurations[this.props.portal._id].useInPortal = !entity.configurations[this.props.portal._id].useInPortal;\r\n entity.configurations[this.props.portal._id].shouldCreateCards = !entity.configurations[this.props.portal._id].shouldCreateCards;\r\n entity.configurations[this.props.portal._id].shouldCreateDetailsView = !entity.configurations[this.props.portal._id].shouldCreateDetailsView;\r\n entity.configurations[this.props.portal._id].shouldCreateEditRecord = !entity.configurations[this.props.portal._id].shouldCreateEditRecord;\r\n entity.configurations[this.props.portal._id].shouldCreateNewRecord = !entity.configurations[this.props.portal._id].shouldCreateNewRecord;\r\n entity.configurations[this.props.portal._id].shouldCreateSplitView = !entity.configurations[this.props.portal._id].shouldCreateSplitView;\r\n entity.configurations[this.props.portal._id].shouldCreateCalendar = !entity.configurations[this.props.portal._id].shouldCreateCalendar;\r\n entity.configurations[this.props.portal._id].shouldCreateTable = !entity.configurations[this.props.portal._id].shouldCreateTable;\r\n entity.configurations[this.props.portal._id].shouldCreateKanban = !entity.configurations[this.props.portal._id].shouldCreateKanban;\r\n }\r\n }\r\n const removedFromPortal = [];\r\n this.setState({\r\n data: [...data],\r\n entitiesToUpdate: [],\r\n removedFromPortal,\r\n });\r\n };\r\n}\r\n\r\nexport default withTranslation([\r\n \"portal/objects_selection\",\r\n])(Entities);\r\n","import React, { Component } from \"react\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\n\r\nclass Page1 extends Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    This page allows user to review multiple records in a Table View
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    This page allows user to review multiple records in a Split View
    \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    This page allows user to review multiple records in a Cards View
    \r\n\r\n\t\t\t\t\t
    Default Menu Item Page
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\thandleCheckBox = (e) => {\r\n\t\tthis.props.handleCheckBox(e);\r\n\t\tif (!this.props.entity.shouldCreateTable) {\r\n\t\t\tif (this.props.entity.shouldCreateCards) {\r\n\t\t\t\tthis.props.handleDropDrown({ target: { props: { \"data-key\": this.props.entity.id }, name: \"defaultMenuItemPageType\", value: \"Cards\" } });\r\n\t\t\t} else if (this.props.entity.shouldCreateSplitView) {\r\n\t\t\t\tthis.props.handleDropDrown({ target: { props: { \"data-key\": this.props.entity.id }, name: \"defaultMenuItemPageType\", value: \"Split View\" } });\r\n\t\t\t} else {\r\n\t\t\t\tthis.props.handleDropDrown({ target: { props: { \"data-key\": this.props.entity.id }, name: \"defaultMenuItemPageType\", value: \"\" } });\r\n\t\t\t}\r\n\t\t} else if (!this.props.entity.shouldCreateCards && this.props.entity.defaultMenuItemPageType === \"Cards\") {\r\n\t\t\tif (this.props.entity.shouldCreateTable) {\r\n\t\t\t\tthis.props.handleDropDrown({ target: { props: { \"data-key\": this.props.entity.id }, name: \"defaultMenuItemPageType\", value: \"Table\" } });\r\n\t\t\t} else if (this.props.entity.shouldCreateSplitView) {\r\n\t\t\t\tthis.props.handleDropDrown({ target: { props: { \"data-key\": this.props.entity.id }, name: \"defaultMenuItemPageType\", value: \"Split View\" } });\r\n\t\t\t} else {\r\n\t\t\t\tthis.props.handleDropDrown({ target: { props: { \"data-key\": this.props.entity.id }, name: \"defaultMenuItemPageType\", value: \"\" } });\r\n\t\t\t}\r\n\t\t} else if (!this.props.entity.shouldCreateSplitView && this.props.entity.defaultMenuItemPageType === \"Cards\") {\r\n\t\t\tif (this.props.entity.shouldCreateTable) {\r\n\t\t\t\tthis.props.handleDropDrown({ target: { props: { \"data-key\": this.props.entity.id }, name: \"defaultMenuItemPageType\", value: \"Table\" } });\r\n\t\t\t} else if (this.props.entity.shouldCreateCards) {\r\n\t\t\t\tthis.props.handleDropDrown({ target: { props: { \"data-key\": this.props.entity.id }, name: \"defaultMenuItemPageType\", value: \"Cards\" } });\r\n\t\t\t} else {\r\n\t\t\t\tthis.props.handleDropDrown({ target: { props: { \"data-key\": this.props.entity.id }, name: \"defaultMenuItemPageType\", value: \"\" } });\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tgetDefaultPageTypeOptions = () => {\r\n\t\tlet options = [];\r\n\r\n\t\tif (this.props.entity.shouldCreateTable) {\r\n\t\t\toptions.push(\"Table\");\r\n\t\t}\r\n\r\n\t\tif (this.props.entity.shouldCreateCards) {\r\n\t\t\toptions.push(\"Cards\");\r\n\t\t}\r\n\r\n\t\tif (this.props.entity.shouldCreateSplitView) {\r\n\t\t\toptions.push(\"Split View\");\r\n\t\t}\r\n\r\n\t\treturn options;\r\n\t};\r\n}\r\n\r\nclass Page2 extends Component {\r\n\tdetailsViewStyleOption = [\"Layout 1\", \"Layout 2\"];\r\n\r\n\tcomponentDidMount() {\r\n\t\tlet { entity } = this.props;\r\n\t\tif (entity.isNotLinkedToOtherEntity) {\r\n\t\t\tthis.detailsViewStyleOption = [\"Layout 2\"];\r\n\t\t\tthis.forceUpdate();\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    This page allows user to review details of a single record
    \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    This page allows user to add a new record
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    This page allows user to edit record
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nclass Page3 extends Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tLink Record Reference Pages\r\n\t\t\t\t\tThis page allows user to review linked record(s) in a Cards View\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    Page Style
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    This page allows user to review details of linked record
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{this.props.entity.linkRecordReferencePageStyle.localeCompare(\"Cards\") === 0 && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    This page allows user to link records
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nclass Page4 extends Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport class EntityConfigurationModal extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tcurrentPage: 0,\r\n\t\t};\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (!this.props.isEntityConfigurationModalVisible) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst { entityName } = this.props.entity;\r\n\t\tconst { currentPage } = this.state;\r\n\r\n\t\tlet page, title;\r\n\r\n\t\tif (currentPage === 0) {\r\n\t\t\tpage = (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t\ttitle = \" - Multiple Record Page Selection\";\r\n\t\t} else if (currentPage === 1) {\r\n\t\t\tpage = (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t\ttitle = \" - Single Record Page Selection\";\r\n\t\t} else if (currentPage === 2) {\r\n\t\t\tpage = (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t\ttitle = \" - Linked Record Pages\";\r\n\t\t} else {\r\n\t\t\tpage = (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t\ttitle = \" - Linked Record Pages\";\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{page}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\thandleNext = () => {\r\n\t\tthis.setState({ currentPage: this.state.currentPage + 1 });\r\n\t};\r\n\r\n\thandlePrevious = () => {\r\n\t\tthis.setState({ currentPage: this.state.currentPage - 1 });\r\n\t};\r\n\r\n\ttoggleEntityConfigurationModal = (e) => {\r\n\t\tthis.setState({ currentPage: 0 });\r\n\t\tthis.props.toggleEntityConfigurationModal(e);\r\n\t};\r\n\r\n\tsaveChanges = (e) => {\r\n\r\n\t\tif (this.state.currentPage === 3) {\r\n\t\t\tthis.toggleEntityConfigurationModal(e);\r\n\t\t}\r\n\t\tthis.props.saveChanges(e);\r\n\t};\r\n}\r\n","import React, { Component, Fragment } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Switch } from \"@progress/kendo-react-inputs\";\r\nimport { Upload } from \"@progress/kendo-react-upload\";\r\nimport {\r\n DeleteFile,\r\n UploadFiletoDirectory,\r\n} from \"../../Helpers/DateLakeStorage\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport { GlobalContext } from \"../../../Renderers/GlobalContext\";\r\nimport { ENTITY_LABEL } from \"../../Helpers/Labels/EntityLabel\";\r\nimport { getPortal, getPortalEntityTargetPage, updatePortal } from \"../../../API/Portal/Portal\";\r\nimport { getPortalAndLandingPage } from \"../../Helpers/DisplayTemplates/DisplayPages\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getEntities } from \"../../../API/Entity/Entity\";\r\nimport { getPage } from \"../../../API/Display/Display\";\r\n\r\nclass NavigationBarandLogo extends Component {\r\n\r\n static contextType = GlobalContext\r\n\r\n NavigationBarOrientation = [\r\n { text: \"Top\", value: \"Top\" },\r\n { text: \"Left\", value: \"Left\" }\r\n ];\r\n\r\n defaultData = {};\r\n\r\n saveButton = React.createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n entities: [{ name: this.props.t(\"dropdown_values.select_object\"), _id: \"\" }],\r\n pages: [{ pageName: this.props.t(\"dropdown_values.select_page\"), _id: \"\" }],\r\n entity: { name: this.props.t(\"dropdown_values.select_object\"), _id: \"\" },\r\n page: { name: this.props.t(\"dropdown_values.select_page\"), _id: \"\" },\r\n portal: {},\r\n disabled: true,\r\n favicon: [],\r\n logo: [],\r\n loading: true\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n let entities = await this.getAllEntities();\r\n let portal = await this.getPortalDetails();\r\n let entity = this.state.entity\r\n let pages = this.state.pages\r\n let page = this.state.page\r\n if (portal.targetPageId && portal.targetPageId !== \"\") {\r\n page = await getPage(portal.targetPageId);\r\n if (page) {\r\n entity = entities.find(entity => entity._id === page.entityId);\r\n pages = await this.getPages(page.entityId);\r\n } else {\r\n page = this.state.page;\r\n entity = this.state.entity;\r\n }\r\n }\r\n this.defaultData = {\r\n ...portal,\r\n entity: entity,\r\n page: page,\r\n };\r\n this.setState({\r\n portal: portal,\r\n entities,\r\n pages: pages,\r\n entity: entity,\r\n page: page,\r\n loading: false\r\n })\r\n };\r\n\r\n render() {\r\n const { subscription } = this.context.state\r\n const { t } = this.props;\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {t(\"buttons.save_button_label\")}\r\n \r\n \r\n \r\n {t(\"buttons.revert_changes_button_label\")}\r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"navigation_bar_orientation.label\")}\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {t(\"default_landing_page.title\")}\r\n
    \r\n {/* {this.state.page && this.state.page._id ? (\r\n \r\n \r\n \r\n ) : null} */}\r\n
    \r\n
    \r\n {t(\"default_landing_page.object_field_label\")}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"default_landing_page.page_field_label\")}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"default_landing_page.navigate_to_default_page_field_label\")}\r\n
    \r\n \r\n
    \r\n
    \r\n {subscription.showPortalLogos ?\r\n \r\n
    \r\n
    \r\n
    \r\n {t(\"logos.title\")}\r\n
    \r\n
    \r\n \r\n
    \r\n {t(\"logos.portal_logo_field_label\")}\r\n
    \r\n
    \r\n {t(\"logos.portal_logo_field_description\")}\r\n
    \r\n \r\n {this.state.portal.logoUrl === \"\" ?\r\n null :\r\n (\r\n <>\r\n \r\n
    \r\n \r\n )\r\n }\r\n
    \r\n
    \r\n
    \r\n {t(\"logos.favicon_field_label\")}\r\n
    \r\n
    \r\n {t(\"logos.favicon_field_description\")}\r\n
    \r\n \r\n

    \r\n {this.state.portal.faviconUrl === \"\" ?\r\n null :\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 {t(\"upgrade_subscription_message\")}\r\n \r\n
    \r\n }\r\n \r\n
    \r\n
    \r\n \r\n \r\n );\r\n }\r\n\r\n getPortalDetails = async () => {\r\n let portal = await getPortal(this.props.portal._id);\r\n portal.navigationBarOrientation = this.NavigationBarOrientation.find(item => item.value === portal.navigationBarOrientation) || this.NavigationBarOrientation[0];\r\n portal.logoUrl = portal.logoUrl || \"\";\r\n portal.faviconUrl = portal.faviconUrl || \"\";\r\n portal.entityId = portal.entityId || \"\";\r\n portal.navigateToDefaultPage = portal.navigateToDefaultPage || false;\r\n portal.targetPageId = portal.targetPageId || \"\";\r\n return portal;\r\n };\r\n\r\n getNavigationOrientationData = () => {\r\n const { t } = this.props;\r\n const data = this.NavigationBarOrientation.map((item) => {\r\n const text = t(\"navigation_bar_orientation.dropdown_values.\" + item.value.toLowerCase());\r\n const value = item.value;\r\n return {\r\n text,\r\n value\r\n };\r\n });\r\n return data;\r\n };\r\n\r\n getNavigationOrientationValue = (dataItem) => {\r\n debugger\r\n const { t } = this.props;\r\n debugger\r\n const text = t(\"navigation_bar_orientation.dropdown_values.\" + dataItem.value.toLowerCase());\r\n return {\r\n text,\r\n value: dataItem.value\r\n }\r\n };\r\n\r\n getAllEntities = async () => {\r\n const { portal, t } = this.props;\r\n let entities = await getEntities(this.props.project._id);\r\n const portalEntities = entities.filter(entity =>\r\n entity.configurations &&\r\n entity.configurations[portal._id] &&\r\n entity.configurations[portal._id].useInPortal === true\r\n )\r\n return [{ name: t(\"dropdown_values.select_object\"), _id: \"\" }, ...portalEntities];\r\n };\r\n\r\n getPages = async (entityId) => {\r\n const { data: pagesData } = await getPortalEntityTargetPage(\r\n this.props.portal._id,\r\n entityId\r\n );\r\n\r\n const pages = pagesData.filter(\r\n (page) =>\r\n page.pageType === \"Entity Group\" &&\r\n page.subPageType !== \"List\" &&\r\n page.subPageType !== \"Link Record\" &&\r\n page.subPageType !== \"Search\" &&\r\n !page.useAsReference\r\n );\r\n\r\n const startPage = [\r\n {\r\n pageName: this.props.t(\"dropdown_values.select_page\"),\r\n _id: \"\"\r\n }\r\n ]\r\n\r\n return pages.length > 0\r\n ? [\r\n ...startPage,\r\n ...pages\r\n ]\r\n : startPage;;\r\n };\r\n\r\n handleEntity = async (e, setDisabled = true) => {\r\n let entity = { ...e.target.value };\r\n let pages = this.state.pages;\r\n\r\n if (entity._id !== \"\") {\r\n pages = await this.getPages(entity._id);\r\n }\r\n\r\n this.setState({\r\n entity: entity,\r\n pages: pages,\r\n page: this.state.pages[0],\r\n }, () => {\r\n if (setDisabled) {\r\n this.setDisabled();\r\n }\r\n });\r\n };\r\n\r\n reset = () => {\r\n const data = { ...this.defaultData };\r\n this.setState({\r\n portal: data,\r\n entity: data.entity,\r\n page: data.page,\r\n logo: [],\r\n favicon: [],\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n handleNavBar = (e) => {\r\n const portal = this.state.portal;\r\n portal.navigationBarOrientation = e.target.value;\r\n this.setState({\r\n portal: portal,\r\n }, () => {\r\n\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n handleNavToDefaultPage = (e) => {\r\n const portal = this.state.portal;\r\n portal.navigateToDefaultPage = e.target.value;\r\n this.setState({\r\n portal: portal\r\n }, () => {\r\n this.setDisabled();\r\n })\r\n }\r\n\r\n handlePage = (e) => {\r\n this.setState({\r\n page: e.target.value,\r\n }, () => {\r\n this.setDisabled();\r\n })\r\n }\r\n\r\n handleLogo = (event) => {\r\n this.setState({\r\n logo: event.newState,\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n handleLogoRemove = (event) => {\r\n this.setState({\r\n logo: event.newState,\r\n }, () => {\r\n this.setDisabled();\r\n })\r\n }\r\n\r\n handleLogoReset = (event) => {\r\n event.preventDefault();\r\n const portal = this.state.portal;\r\n portal.logoUrl = \"\";\r\n this.setState({\r\n portal: portal\r\n }, () => {\r\n this.setDisabled();\r\n })\r\n };\r\n\r\n handleFavicon = (event) => {\r\n this.setState({\r\n favicon: event.newState,\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n handleFaviconRemove = (event) => {\r\n this.setState({\r\n favicon: event.newState,\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n handleFaviconReset = (event) => {\r\n this.setState({\r\n faviconUrl: \"\",\r\n }, () => {\r\n this.setDisabled();\r\n });\r\n };\r\n\r\n setDisabled = () => {\r\n let condition =\r\n this.state.portal.navigationBarOrientation.value !== this.defaultData.navigationBarOrientation.value ||\r\n this.state.entity._id !== this.defaultData.entity._id ||\r\n this.state.page._id !== this.defaultData.targetPageId ||\r\n this.state.portal.logoUrl !== this.defaultData.logoUrl ||\r\n this.state.portal.faviconUrl !== this.defaultData.faviconUrl ||\r\n this.state.portal.navigateToDefaultPage !== this.defaultData.navigateToDefaultPage ||\r\n this.state.logo.length > 0 ||\r\n this.state.favicon.length > 0\r\n\r\n if (this.state.logo.length > 0 && this.state.logo[0].validationErrors) {\r\n condition = false;\r\n }\r\n\r\n if (this.state.favicon.length > 0 && this.state.favicon[0].validationErrors) {\r\n condition = false;\r\n }\r\n\r\n if (condition) {\r\n this.setState({ disabled: false });\r\n } else {\r\n this.setState({ disabled: true });\r\n }\r\n };\r\n\r\n uploadAttachments = async (files) => {\r\n let formData = new FormData();\r\n\r\n files = [\r\n ...new Map(files.map((item) => [item[\"name\"], item])).values(),\r\n ];\r\n\r\n for (let attachment of files) {\r\n if (!attachment.validationErrors) {\r\n let fileName =\r\n attachment.name.split(\r\n \".jpg\" || \".png\" || \".jpeg\" || \".ico\"\r\n )[0] +\r\n \"_\" +\r\n new Date().getTime() +\r\n attachment.extension;\r\n formData.append(`file`, attachment.getRawFile(), fileName);\r\n }\r\n }\r\n let path =\r\n this.props.organization._id +\r\n \"/\" +\r\n this.props.project._id +\r\n \"/\" +\r\n \"PortalImages\";\r\n formData.append(\"path\", path);\r\n\r\n return await UploadFiletoDirectory(formData);\r\n };\r\n\r\n Save = async (e) => {\r\n debugger\r\n const { saveButton } = this;\r\n saveButton.current.disabled = true;\r\n e.preventDefault();\r\n\r\n let UploadLogoImages = [];\r\n let UploadFaviconImages = [];\r\n\r\n var path = \"\";\r\n\r\n if (this.state.logo.length > 0 && this.state.logo[0].name !== this.defaultData.logoUrl) {\r\n UploadLogoImages = await this.uploadAttachments(this.state.logo);\r\n path = this.props.organization._id + \"/\" + this.props.project._id + \"/PortalImages/\" + this.defaultData.logoUrl;\r\n DeleteFile(path, this.defaultData.logoUrl);\r\n this.defaultData.logoUrl = \"\";\r\n }\r\n\r\n if (this.defaultData.logoUrl !== this.state.portal.logoUrl) {\r\n path = this.props.organization._id + \"/\" + this.props.project._id + \"/PortalImages/\" + this.defaultData.logoUrl;\r\n DeleteFile(path, this.defaultData.logoUrl);\r\n this.defaultData.logoUrl = \"\";\r\n }\r\n\r\n if (this.state.favicon.length > 0 && this.state.favicon[0].name !== this.defaultData.faviconUrl) {\r\n UploadFaviconImages = await this.uploadAttachments(this.state.favicon);\r\n path = this.props.organization._id + \"/\" + this.props.project._id + \"/PortalImages/\" + this.defaultData.faviconUrl;\r\n DeleteFile(path, this.defaultData.faviconUrl);\r\n this.defaultData.faviconUrl = \"\";\r\n }\r\n\r\n if (this.defaultData.faviconUrl !== this.state.portal.faviconUrl) {\r\n path = this.props.organization._id + \"/\" + this.props.project._id + \"/PortalImages/\" + this.defaultData.faviconUrl;\r\n DeleteFile(path, this.defaultData.faviconUrl);\r\n this.defaultData.faviconUrl = \"\";\r\n }\r\n\r\n let properties = {\r\n navigationBarOrientation: this.state.portal.navigationBarOrientation.value,\r\n targetPageId: this.state.page._id,\r\n entityId: this.state.entity._id,\r\n navigateToDefaultPage: this.state.portal.navigateToDefaultPage,\r\n logoUrl: UploadLogoImages.length > 0 ? UploadLogoImages.join(\",\") : this.defaultData.logoUrl,\r\n faviconUrl: UploadFaviconImages.length > 0 ? UploadFaviconImages.join(\",\") : this.defaultData.faviconUrl,\r\n }\r\n await updatePortal(this.props.portal._id, properties);\r\n\r\n const updatedportal = {\r\n ...this.state.portal,\r\n ...properties,\r\n entity: this.state.entity,\r\n page: this.state.page,\r\n navigationBarOrientation: this.NavigationBarOrientation.find(item => item.value === properties.navigationBarOrientation) || this.NavigationBarOrientation[0],\r\n }\r\n this.defaultData = { ...updatedportal };\r\n this.setState({\r\n portal: updatedportal,\r\n disabled: true,\r\n logo: [],\r\n favicon: []\r\n })\r\n };\r\n}\r\n\r\nexport default withTranslation([\r\n \"portal/navigation_bar_and_logo\",\r\n], {\r\n withRef: true\r\n})(NavigationBarandLogo);","import { Grid, GridColumn } from \"@progress/kendo-react-grid\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { getDisplayPagesConfigurations, updateDisplayPagesConfigurations } from \"../../Helpers/DisplayTemplates/DisplayPages\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n\r\nfunction ObjectsAndPages({ portalId }) {\r\n\r\n const enabledColumns = [\r\n {\r\n title: \"Table\",\r\n databaseField: \"shouldCreateTable\",\r\n disabledField: \"\"\r\n },\r\n {\r\n title: \"Split View\",\r\n databaseField: \"shouldCreateSplitView\",\r\n disabledField: \"\"\r\n },\r\n {\r\n title: \"Kanban\",\r\n databaseField: \"shouldCreateKanban\",\r\n disabledField: \"isKanbanDisabled\"\r\n },\r\n {\r\n title: \"Calendar\",\r\n databaseField: \"shouldCreateCalendar\",\r\n disabledField: \"isCalendarDisabled\"\r\n },\r\n {\r\n title: \"Cards\",\r\n databaseField: \"shouldCreateCards\",\r\n disabledField: \"\"\r\n },\r\n {\r\n title: \"Gantt Chart\",\r\n databaseField: \"shouldCreateGanttChart\",\r\n disabledField: \"isGanntChartDisabled\"\r\n }\r\n ];\r\n\r\n const [data, setData] = useState([]);\r\n const [isSaveDisabled, setIsSaveDisabled] = useState(false);\r\n const [showEntityRemovedDialog, setShowEntityRemovedDialog] = useState(false);\r\n\r\n useEffect(() => {\r\n getDisplayPagesConfigurations(portalId)\r\n .then(data => {\r\n setData(data.map(entity => ({\r\n ...entity,\r\n isKanbanDisabled: entity.isUserEntity,\r\n isCalendarDisabled: entity.isUserEntity,\r\n isGanntChartDisabled: entity.isUserEntity,\r\n defaultConfig: {\r\n shouldCreateTable: entity.shouldCreateTable,\r\n shouldCreateKanban: entity.shouldCreateKanban,\r\n shouldCreateCards: entity.shouldCreateCards,\r\n shouldCreateSplitView: entity.shouldCreateSplitView,\r\n shouldCreateCalendar: entity.shouldCreateCalendar,\r\n shouldCreateGanttChart: entity.shouldCreateGanttChart,\r\n useInPortal: entity.useInPortal\r\n }\r\n })))\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n const isDisabled = data.every(entity => {\r\n return Object.keys(entity.defaultConfig).every(key => {\r\n return entity.defaultConfig[key] === entity[key];\r\n });\r\n });\r\n setIsSaveDisabled(isDisabled);\r\n }, [data])\r\n\r\n function handleCheckbox(event, entityId) {\r\n const { name, value } = event.target;\r\n setData(prevData => prevData.map((entity) => {\r\n if (entity.entityId === entityId) {\r\n const newEntity = { ...entity, [name]: value };\r\n const isAnyPageEnabled = enabledColumns.some(column => newEntity[column.databaseField]);\r\n if (newEntity.useInPortal !== isAnyPageEnabled) {\r\n newEntity.useInPortal = isAnyPageEnabled;\r\n newEntity.shouldCreateDetailsView = isAnyPageEnabled;\r\n newEntity.shouldCreateNewRecord = isAnyPageEnabled;\r\n newEntity.shouldCreateEditRecord = isAnyPageEnabled;\r\n }\r\n return newEntity;\r\n }\r\n return entity;\r\n }))\r\n }\r\n\r\n function handleUseInPortal(event, entityId) {\r\n const { name, value } = event.target;\r\n setData(prevData => prevData.map((entity) => {\r\n if (entity.entityId === entityId) {\r\n const newEntity = {\r\n ...entity,\r\n [name]: value\r\n };\r\n if (value === true) {\r\n return {\r\n ...newEntity,\r\n shouldCreateTable: true,\r\n shouldCreateKanban: false,\r\n shouldCreateCards: false,\r\n shouldCreateSplitView: true,\r\n shouldCreateCalendar: false,\r\n shouldCreateGanttChart: false,\r\n shouldCreateDetailsView: true,\r\n shouldCreateEditView: true,\r\n shouldCreateListView: true\r\n }\r\n } else {\r\n for (const column of enabledColumns) {\r\n if (newEntity[column.disabledField] !== true) {\r\n newEntity[column.databaseField] = value;\r\n }\r\n }\r\n }\r\n return newEntity;\r\n }\r\n return entity;\r\n }))\r\n }\r\n\r\n async function handleSave() {\r\n const entityWithUseInPortalChanged = data.some(entity => (\r\n entity.useInPortal !== entity.defaultConfig.useInPortal &&\r\n entity.useInPortal === false\r\n ));\r\n if (entityWithUseInPortalChanged) {\r\n setShowEntityRemovedDialog(true);\r\n } else {\r\n await saveConfigurations();\r\n }\r\n }\r\n\r\n async function saveConfigurations() {\r\n const updatedEntities = data.filter(entity => {\r\n return Object.keys(entity.defaultConfig).some(key => {\r\n return entity.defaultConfig[key] !== entity[key];\r\n });\r\n });\r\n await updateDisplayPagesConfigurations(portalId, updatedEntities);\r\n setData(prevData => prevData.map(entity => {\r\n return {\r\n ...entity,\r\n defaultConfig: {\r\n shouldCreateTable: entity.shouldCreateTable,\r\n shouldCreateKanban: entity.shouldCreateKanban,\r\n shouldCreateCards: entity.shouldCreateCards,\r\n shouldCreateSplitView: entity.shouldCreateSplitView,\r\n shouldCreateCalendar: entity.shouldCreateCalendar,\r\n shouldCreateGanttChart: entity.shouldCreateGanttChart,\r\n useInPortal: entity.useInPortal\r\n }\r\n }\r\n }));\r\n }\r\n\r\n async function handleEntityRemovedDialogConfirm() {\r\n await saveConfigurations();\r\n setShowEntityRemovedDialog(false);\r\n }\r\n\r\n function revertChanges() {\r\n setData(prevData => prevData.map(entity => {\r\n return {\r\n ...entity,\r\n ...entity.defaultConfig\r\n }\r\n }))\r\n }\r\n\r\n function getNamesOfEntitiesRemovedFromPortal() {\r\n return data.filter(entity => entity.useInPortal !== entity.defaultConfig.useInPortal)\r\n .map(entity => entity.entityName)\r\n .join(\", \");\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n showEntityRemovedDialog && (\r\n {}}\r\n >\r\n

    \r\n You are about to remove the { getNamesOfEntitiesRemovedFromPortal() } object from this portal.\r\n Proceeding with this action will result in the permanent deletion of all pages created for the { getNamesOfEntitiesRemovedFromPortal() } object within this portal during the next Preview/Publish.\r\n

    \r\n

    \r\n Are you sure you wish to continue with the removal of the { getNamesOfEntitiesRemovedFromPortal() } object?\r\n This action is irreversible.\r\n

    \r\n \r\n setShowEntityRemovedDialog(false)}\r\n >\r\n Cancel\r\n \r\n \r\n Yes, Proceed\r\n \r\n \r\n \r\n )\r\n }\r\n
    \r\n \r\n \r\n   \r\n Save\r\n \r\n \r\n \r\n   \r\n Revert Changes\r\n \r\n
    \r\n \r\n {\r\n return (\r\n \r\n {\r\n handleUseInPortal(event, props.dataItem.entityId)\r\n }}\r\n />\r\n \r\n )\r\n }}\r\n />\r\n {enabledColumns.map((column, index) => {\r\n return (\r\n {\r\n return (\r\n \r\n {\r\n handleCheckbox(event, props.dataItem.entityId)\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 ObjectsAndPages;","import React, { Component } from \"react\";\r\nimport General from \"./General/General\";\r\nimport MenuItems from \"./Menu/MenuItems\";\r\nimport { Displays } from \"./Displays/Displays\";\r\nimport Entities from \"./Entities/Entities\";\r\nimport NavigationBarandLogo from \"./NavigationBarandLogo/NavigationBarandLogo\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport { Content, Header, PageContainer } from \"../Drawer/PageContainer\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { CheckForInternalUser } from \"../Helpers/miscellaneous\";\r\nimport WorkspaceAppModelContext from \"../../Context/Workspace/WorkspaceAppModelContext\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport ObjectsAndPages from \"./Displays/ObjectsAndPages\";\r\n\r\nclass PortalDetail extends Component {\r\n\r\n static contextType = MsalContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selected: this.props.selectedTab,\r\n portalName: props.portal.portalName,\r\n redirectToPortal: false,\r\n tabs: {\r\n general: true,\r\n entities: false,\r\n isInternalUser: false,\r\n menuItems: false,\r\n displayConfig: false,\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n let { tabs } = this.state;\r\n let isInternalUser = CheckForInternalUser(this.props.user.email)\r\n tabs.menuItems = this.props.project.developerMode && isInternalUser;\r\n tabs.displayConfig = this.props.project.developerMode && isInternalUser;\r\n this.setState({\r\n isInternalUser: isInternalUser,\r\n tabs: tabs,\r\n });\r\n };\r\n\r\n updatePortal = async (portal) => {\r\n this.setState({ portalName: portal.portalName });\r\n }\r\n\r\n\r\n render() {\r\n const { t } = this.props;\r\n if (this.state.redirect) {\r\n let url = `/${this.props.organization.orgName}/${this.props.project.name}/Portals/${this.props.portal.portalName}/`;\r\n\r\n if (this.state.selected === 1) {\r\n url += \"General\";\r\n } else if (this.state.selected === 0) {\r\n url += \"Entities\";\r\n } else if (this.state.selected === 2) {\r\n url += \"NavigationBarandLogo\";\r\n } else if (this.state.selected === 3) {\r\n url += \"MenuItems\";\r\n } else {\r\n url += \"Displays\";\r\n }\r\n\r\n this.setState({ redirect: false });\r\n\r\n return ;\r\n }\r\n\r\n if (this.state.redirectToPortal) {\r\n let url = `/${this.props.organization.orgName}/${this.props.project.name}/Portals`;\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n {this.props.portal.portalName && (\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n (context) => (\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n \r\n {this.state.tabs.menuItems && (\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 goToPortal = (e) => {\r\n if (this.props.isAccessedFromWorkspace) {\r\n this.props.mutators.setSelectedPortal(null);\r\n } else {\r\n this.setState({\r\n redirectToPortal: true,\r\n });\r\n }\r\n };\r\n\r\n handleSelect = (e) => {\r\n this.setState({ selected: e.selected }, () => {\r\n this.setState({ redirect: !this.props.isAccessedFromWorkspace });\r\n });\r\n };\r\n}\r\n\r\nexport default withTranslation([\r\n \"portal/portal_detail\",\r\n])(PortalDetail);\r\n","export const RoleReducer = (state, action) => {\r\n switch (action.type) {\r\n case \"SET_INTIAL_DATA\":\r\n return {\r\n ...state,\r\n ...action.payload\r\n }\r\n case \"TOGGLE_CREATE_ROLE_DIALOG\":\r\n return {\r\n ...state,\r\n showCreateRoleDialog: !state.showCreateRoleDialog,\r\n roleName: \"\",\r\n toUpdateRole: {},\r\n nameError: {\r\n isValid: true,\r\n message: \"\"\r\n }\r\n }\r\n case \"TOGGLE_DELETE_ROLE_DIALOG\":\r\n return {\r\n ...state,\r\n showDeleteRoleDialog: !state.showDeleteRoleDialog\r\n }\r\n case \"SET_LOADER\":\r\n return {\r\n ...state,\r\n processingRole: action.payload\r\n }\r\n case \"HANDLE_ROLE_NAME_CHANGE\":\r\n return {\r\n ...state,\r\n roleName: action.payload.roleName,\r\n nameError: action.payload.nameError,\r\n }\r\n case \"HANDLE_SPLITTER_CHANGE\":\r\n return {\r\n ...state,\r\n panes: action.payload\r\n }\r\n case \"SET_SELECTED_ROLE\":\r\n debugger\r\n return {\r\n ...state,\r\n selectedRole: action.payload,\r\n inProgressItems: [],\r\n savedItems: [],\r\n selectedEntity: {},\r\n entityInProgressItems: [],\r\n entitySavedItems: [],\r\n attributeInProgressItems: [],\r\n attributeSavedItems: [],\r\n pageInProgressItems: [],\r\n pageSavedItems: [],\r\n otherRightsInProgressItems: [],\r\n otherRightsSavedItems: []\r\n }\r\n case \"SET_DELETING_ROlE\":\r\n return {\r\n ...state,\r\n toDeleteRole: action.payload\r\n }\r\n case \"SET_UPDATING_ROlE\":\r\n return {\r\n ...state,\r\n showCreateRoleDialog: true,\r\n toUpdateRole: action.payload,\r\n roleName: action.payload.roleName\r\n }\r\n case \"ADD_ROLE\":\r\n return {\r\n ...state,\r\n ...action.payload\r\n }\r\n case \"UPDATE_ROLE\":\r\n return {\r\n ...state,\r\n ...action.payload\r\n }\r\n case \"DELETE_ROLE\":\r\n return {\r\n ...state,\r\n ...action.payload\r\n }\r\n case \"UPDATE_ROLES\":\r\n return {\r\n ...state,\r\n selectedRole: {\r\n ...state.selectedRole,\r\n ...action.payload.properties,\r\n },\r\n data: state.data.map(role => {\r\n if (role._id === action.payload._id) {\r\n return {\r\n ...role,\r\n ...action.payload.properties\r\n };\r\n }\r\n return role;\r\n })\r\n }\r\n case \"ADD_TO_INPROGRESS\":\r\n return {\r\n ...state,\r\n inProgressItems: [...state.inProgressItems, action.payload],\r\n savedItems: state.savedItems.filter(item => item !== action.payload)\r\n }\r\n case \"MOVE_TO_SAVE\":\r\n return {\r\n ...state,\r\n inProgressItems: state.inProgressItems.filter(item => item !== action.payload),\r\n savedItems: [...state.savedItems, action.payload]\r\n }\r\n case \"SET_SELECTED_ENTITY_RIGHTS_TAB\":\r\n return {\r\n ...state,\r\n selectedEntityRightsTab: action.payload\r\n }\r\n case \"SET_ENTITIES\":\r\n return {\r\n ...state,\r\n entities: action.payload\r\n }\r\n case \"SET_ENTITY_LOADER\":\r\n return {\r\n ...state,\r\n loadingEntities: action.payload\r\n }\r\n case \"SET_SELECTED_ENTITY\":\r\n return {\r\n ...state,\r\n selectedEntity: action.payload,\r\n attributeInProgressItems: [],\r\n attributeSavedItems: [],\r\n pageInProgressItems: [],\r\n pageSavedItems: [],\r\n otherRightsInProgressItems: [],\r\n otherRightsSavedItems: []\r\n }\r\n case \"ENTITY_ADD_TO_INPROGRESS\":\r\n return {\r\n ...state,\r\n entityInProgressItems: [...state.entityInProgressItems, action.payload],\r\n entitySavedItems: state.entitySavedItems.filter(item => item !== action.payload)\r\n }\r\n case \"ENTITY_MOVE_TO_SAVE\":\r\n return {\r\n ...state,\r\n entityInProgressItems: state.entityInProgressItems.filter(item => item !== action.payload),\r\n entitySavedItems: [...state.entitySavedItems, action.payload]\r\n }\r\n case \"UPDATE_ENTITIES\":\r\n return {\r\n ...state,\r\n entities: state.entities.map(entity => {\r\n if (entity._id === action.payload._id) {\r\n return action.payload.properties\r\n }\r\n return entity\r\n })\r\n }\r\n case \"SET_ATTRIBUTES\":\r\n return {\r\n ...state,\r\n attributes: action.payload\r\n }\r\n case \"SET_ATTRIBUTE_LOADER\":\r\n return {\r\n ...state,\r\n loadingAttributes: action.payload\r\n }\r\n case \"SET_SELECTED_ATTRIBUTE\":\r\n return {\r\n ...state,\r\n selectedAttribute: action.payload\r\n }\r\n case \"ATTRIBUTE_ADD_TO_INPROGRESS\":\r\n return {\r\n ...state,\r\n attributeInProgressItems: [...state.attributeInProgressItems, action.payload],\r\n attributeSavedItems: state.attributeSavedItems.filter(item => item !== action.payload)\r\n }\r\n case \"ATTRIBUTE_MOVE_TO_SAVE\":\r\n return {\r\n ...state,\r\n attributeInProgressItems: state.attributeInProgressItems.filter(item => item !== action.payload),\r\n attributeSavedItems: [...state.attributeSavedItems, action.payload]\r\n }\r\n case \"UPDATE_ALL_ATTRIBUTES\":\r\n return {\r\n ...state,\r\n attributes: state.attributes.map(attribute => {\r\n if (action.payload.entityPermission === \"Full access\" && attribute.isSystemAttribute) {\r\n return {\r\n ...attribute,\r\n roleRights: {\r\n ...attribute.roleRights,\r\n [action.payload.properties.roleId]: {\r\n permission: \"Readonly\"\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n ...attribute,\r\n roleRights: {\r\n ...attribute.roleRights,\r\n [action.payload.properties.roleId]: {\r\n permission: action.payload.properties.permission\r\n }\r\n }\r\n }\r\n })\r\n }\r\n case \"UPDATE_ATTRIBUTES\":\r\n return {\r\n ...state,\r\n attributes: state.attributes.map(attribute => {\r\n if (attribute._id === action.payload._id) {\r\n return { ...action.payload.properties }\r\n }\r\n return attribute\r\n })\r\n }\r\n case \"SET_PAGES\":\r\n return {\r\n ...state,\r\n pages: action.payload\r\n }\r\n case \"SET_PAGE_LOADER\":\r\n return {\r\n ...state,\r\n loadingPages: action.payload\r\n }\r\n case \"SET_SELECTED_PAGE\":\r\n return {\r\n ...state,\r\n selectedPage: action.payload\r\n }\r\n case \"PAGE_ADD_TO_INPROGRESS\":\r\n return {\r\n ...state,\r\n pageInProgressItems: [...state.pageInProgressItems, action.payload],\r\n pageSavedItems: state.pageSavedItems.filter(item => item !== action.payload)\r\n }\r\n case \"PAGE_MOVE_TO_SAVE\":\r\n return {\r\n ...state,\r\n pageInProgressItems: state.pageInProgressItems.filter(item => item !== action.payload),\r\n pageSavedItems: [...state.pageSavedItems, action.payload]\r\n }\r\n case \"UPDATE_ALL_PAGES\":\r\n return {\r\n ...state,\r\n pages: state.pages.map(page => {\r\n if (action.payload.entityPermission === \"Read only\" && (page.subPageType === \"New Record\" || page.subPageType === \"Edit Record\")) {\r\n return {\r\n ...page,\r\n access: false\r\n }\r\n }\r\n return {\r\n ...page,\r\n ...action.payload.properties\r\n }\r\n })\r\n }\r\n case \"UPDATE_PAGES\":\r\n return {\r\n ...state,\r\n pages: state.pages.map(page => {\r\n if (page.id === action.payload.id) {\r\n return {\r\n ...page,\r\n ...action.payload.properties\r\n }\r\n }\r\n return page\r\n })\r\n }\r\n case \"SET_OTHER_RIGHTS\":\r\n return {\r\n ...state,\r\n ...action.payload\r\n }\r\n case \"SET_OTHER_RIGHTS_LOADER\":\r\n return {\r\n ...state,\r\n loadingOtherRights: action.payload\r\n }\r\n case \"OTHER_ADD_TO_INPROGRESS\":\r\n return {\r\n ...state,\r\n otherRightsInProgressItems: [...state.otherRightsInProgressItems, action.payload],\r\n otherRightsSavedItems: state.otherRightsSavedItems.filter(item => item !== action.payload)\r\n }\r\n case \"OTHER_MOVE_TO_SAVE\":\r\n return {\r\n ...state,\r\n otherRightsInProgressItems: state.otherRightsInProgressItems.filter(item => item !== action.payload),\r\n otherRightsSavedItems: [...state.otherRightsSavedItems, action.payload]\r\n }\r\n case \"UPDATE_LIST_RIGHTS\":\r\n return {\r\n ...state,\r\n listData: { ...state.listData, ...action.payload }\r\n }\r\n case \"UPDATE_CHARTS_RIGHTS\":\r\n return {\r\n ...state,\r\n chartsData: { ...state.chartsData, ...action.payload }\r\n }\r\n case \"UPDATE_ALL_OTHER_RIGHTS\":\r\n return {\r\n ...state,\r\n listData: { ...state.listData, access: action.payload, manage: action.payload },\r\n chartsData: { ...state.chartsData, access: action.payload, manage: action.payload }\r\n }\r\n default:\r\n return state\r\n }\r\n}","import React from \"react\";\r\nimport { RoleReducer } from \"./RoleReducer\";\r\n\r\nconst initialValue = {\r\n loading: true,\r\n loadingEntities: true,\r\n loadingAttributes: true,\r\n loadingPages: true,\r\n loadingOtherRights: true,\r\n data: [],\r\n entities: [],\r\n attributes: [],\r\n pages: [],\r\n listData: {},\r\n chartsData: {},\r\n selectedRole: {},\r\n selectedEntity: {},\r\n selectedAttribute: {},\r\n selectedPage: {},\r\n inProgressItems: [],\r\n savedItems: [],\r\n entityInProgressItems: [],\r\n entitySavedItems: [],\r\n attributeInProgressItems: [],\r\n attributeSavedItems: [],\r\n pageInProgressItems: [],\r\n pageSavedItems: [],\r\n otherRightsInProgressItems:[],\r\n otherRightsSavedItems:[],\r\n selectedEntityRightsTab: 0,\r\n showCreateRoleDialog: false,\r\n showDeleteRoleDialog: false,\r\n processingRole: false,\r\n toUpdateRole: {},\r\n toDeleteRole: {},\r\n nameError: { isValid: true, message: \"\" },\r\n panes: [\r\n { size: \"50%\", min: \"15%\", collapsible: false },\r\n { min: \"50%\", collapsible: false }\r\n ]\r\n}\r\n\r\nexport const RoleContext = React.createContext(initialValue)\r\n\r\nexport const RoleContextProvider = ({ children, value = {} }) => {\r\n\r\n const [state, dispatch] = React.useReducer(RoleReducer, { ...initialValue, ...value })\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}","import React from 'react';\r\nimport { Button } from '@progress/kendo-react-buttons';\r\n\r\nexport const InProgressComponent = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const SavingComponent = () => {\r\n return (\r\n \r\n \r\n )\r\n}","export const accessMap = [\r\n {\r\n key: \"Full access\",\r\n text: \"Full access\",\r\n entity: {\r\n create: true,\r\n read: true,\r\n update: true,\r\n delete: true,\r\n accessLists: true,\r\n\t\t\tmanageLists: true,\r\n accessCharts: true,\r\n manageCharts: true\r\n },\r\n attribute: \"Edit\"\r\n },\r\n {\r\n key: \"Read only\",\r\n text: \"Read only\",\r\n entity: {\r\n create: false,\r\n read: true,\r\n update: false,\r\n delete: false,\r\n accessLists: true,\r\n\t\t\tmanageLists: false,\r\n accessCharts: true,\r\n manageCharts: false\r\n },\r\n attribute: \"Readonly\"\r\n },\r\n {\r\n key: \"No access\",\r\n text: \"No access\",\r\n entity: {\r\n create: false,\r\n read: false,\r\n update: false,\r\n delete: false,\r\n accessLists: false,\r\n manageLists: false,\r\n accessCharts: false,\r\n manageCharts: false\r\n },\r\n attribute: \"Hidden\"\r\n }\r\n]","import React, { Component, useContext } from \"react\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport { RoleContext } from \"./Context/RoleContext\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { SavingComponent, InProgressComponent } from \"./SavingComponent\";\r\nimport { accessMap } from \"./accessMap\";\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\"\r\nimport WorkspaceAppModelContext from \"../../Context/Workspace/WorkspaceAppModelContext\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getEntities, updateEntity } from \"../../API/Entity/Entity\";\r\n\r\nfunction EntityNameCell(props) {\r\n\r\n const navigate = useNavigate();\r\n const { mutators } = useContext(WorkspaceAppModelContext);\r\n const { organization } = useContext(GlobalContext).state;\r\n\r\n function navigateToEntity() {\r\n if (mutators) {\r\n mutators.setSelectedTab(0);\r\n mutators.setSelectedEntity(props.dataItem);\r\n } else {\r\n navigate(`/${organization.orgName}/${props.projectName}/Entities/${props.dataItem.sysName}`)\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {props.dataItem.name}\r\n \r\n \r\n )\r\n}\r\n\r\nclass EntityRights extends Component {\r\n\r\n static contextType = RoleContext\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n selectedRole: {},\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n const { dispatch } = this.context\r\n let entities = await this.getEntity()\r\n dispatch({ type: \"SET_ENTITIES\", payload: entities })\r\n dispatch({ type: \"SET_ENTITY_LOADER\", payload: false })\r\n if (entities.length > 0) {\r\n this.selectItem(entities[0])\r\n }\r\n }\r\n\r\n componentDidUpdate = async (props) => {\r\n const { dispatch } = this.context\r\n if (props.selectedRole._id && props.selectedRole._id !== this.props.selectedRole._id) {\r\n let entities = await this.getEntity()\r\n dispatch({ type: \"SET_ENTITIES\", payload: entities })\r\n dispatch({ type: \"SET_ENTITY_LOADER\", payload: false })\r\n if (entities.length > 0) {\r\n this.selectItem(entities[0])\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { state } = this.context\r\n const { t } = this.props\r\n if (state.loadingEntities) {\r\n return \r\n }\r\n return (\r\n
    \r\n ({\r\n ...item,\r\n selected: item._id === state.selectedEntity._id\r\n }))}\r\n onRowClick={(e) => this.selectItem(e.dataItem)}\r\n style={{ maxHeight: \"100%\" }}\r\n selectedField=\"selected\"\r\n >\r\n \r\n (\r\n \r\n )}\r\n />\r\n (\r\n \r\n \r\n {value => (\r\n this.handlePermission(e, props.dataItem)}\r\n data={this.getAccessDataMap()}\r\n value={this.getAccessValue(props.dataItem) || \"\"}\r\n textField={\"text\"}\r\n />\r\n )}\r\n \r\n \r\n )}\r\n />\r\n (\r\n \r\n {state.entityInProgressItems.includes(props.dataItem._id) && }\r\n {state.entitySavedItems.includes(props.dataItem._id) && }\r\n \r\n )}\r\n />\r\n \r\n
    \r\n )\r\n }\r\n\r\n getEntity = async () => {\r\n let entities = await getEntities(this.props.projectId)\r\n if (entities.length > 0) {\r\n entities = entities.sort((a, b) => a.order - b.order)\r\n for (let i = 0; i < entities.length; i++) {\r\n entities[i].indexId = i + 1\r\n }\r\n } else {\r\n entities = []\r\n }\r\n return entities\r\n }\r\n\r\n selectItem = (dataItem) => {\r\n const { dispatch } = this.context\r\n dispatch({ type: \"SET_SELECTED_ENTITY\", payload: dataItem })\r\n }\r\n\r\n getAccessDataMap = () => {\r\n const { t } = this.props\r\n const accessMapData = accessMap.map(item => {\r\n const key = item.key.toLowerCase().split(\" \").join(\"_\")\r\n const text = t(\"dropdown_values.\" + key)\r\n return {\r\n ...item,\r\n text\r\n }\r\n })\r\n return accessMapData\r\n }\r\n\r\n getAccessValue = (dataItem) => {\r\n const { selectedRole } = this.context.state\r\n const accessValueData = dataItem.roleRights[selectedRole._id]\r\n if (!accessValueData) {\r\n return this.getAccessValueMap(accessMap[2])\r\n }\r\n if (\r\n (\r\n accessValueData.create &&\r\n accessValueData.read &&\r\n accessValueData.update &&\r\n accessValueData.delete\r\n ) ||\r\n dataItem?.isUserEntity\r\n ) {\r\n return this.getAccessValueMap(accessMap[0])\r\n } else if (\r\n !accessValueData.create &&\r\n accessValueData.read &&\r\n !accessValueData.update &&\r\n !accessValueData.delete\r\n ) {\r\n return this.getAccessValueMap(accessMap[1])\r\n } else {\r\n return this.getAccessValueMap(accessMap[2])\r\n }\r\n }\r\n\r\n getAccessValueMap(accessMapData) {\r\n const { t } = this.props;\r\n const key = accessMapData.key.toLowerCase().split(\" \").join(\"_\");\r\n const text = t(\"dropdown_values.\" + key);\r\n return {\r\n ...accessMapData,\r\n text\r\n };\r\n }\r\n\r\n handlePermission = async (event, dataItem) => {\r\n const { selectedRole } = this.context.state\r\n const { dispatch } = this.context\r\n const permission = accessMap.find(item => item.key === event.value.key)\r\n dispatch({ type: \"ENTITY_ADD_TO_INPROGRESS\", payload: dataItem._id })\r\n let { roleRights } = dataItem\r\n roleRights[selectedRole._id] = {\r\n ...roleRights[selectedRole._id],\r\n ...permission.entity\r\n }\r\n await updateEntity(dataItem._id, { roleRights: roleRights })\r\n\r\n if (permission.key === \"Full access\") {\r\n await this.handleFullAccessPermission(dataItem)\r\n }\r\n if (permission.key === \"Read only\") {\r\n await this.handleReadonlyPermission(dataItem)\r\n }\r\n if (permission.key === \"No access\") {\r\n await this.handleNoAccessPermission(dataItem)\r\n }\r\n dispatch({ type: \"UPDATE_ENTITIES\", payload: { _id: dataItem._id, properties: dataItem } })\r\n dispatch({ type: \"ENTITY_MOVE_TO_SAVE\", payload: dataItem._id })\r\n this.selectItem({ ...dataItem, ...permission.entity })\r\n }\r\n\r\n handleFullAccessPermission = async (element) => {\r\n const { dispatch, state } = this.context\r\n const { selectedRole } = state\r\n await Promise.all([\r\n this.UpdateAttributesBasedonEntityRight(element._id, \"Edit\"),\r\n this.UpdatePagesBasedonEntityRight(element._id, true)\r\n ])\r\n dispatch({ type: \"UPDATE_ALL_ATTRIBUTES\", payload: { entityPermission: \"Full access\", properties: { permission: \"Edit\", roleId: selectedRole._id } } })\r\n dispatch({ type: \"UPDATE_ALL_PAGES\", payload: { entityPermission: \"Full access\", properties: { access: true } } })\r\n dispatch({ type: \"UPDATE_ALL_OTHER_RIGHTS\", payload: true })\r\n }\r\n\r\n handleReadonlyPermission = async (element) => {\r\n const { dispatch, state } = this.context\r\n const { selectedRole } = state\r\n await Promise.all([\r\n this.UpdateAttributesBasedonEntityRight(element._id, \"Readonly\"),\r\n this.UpdatePagesBasedonEntityRight(element._id, true)\r\n ])\r\n\r\n await this.UpdateSpecificPageBasedonEntityRight(element._id, false, \"New Record\")\r\n await this.UpdateSpecificPageBasedonEntityRight(element._id, false, \"Edit Record\")\r\n\r\n dispatch({ type: \"UPDATE_ALL_ATTRIBUTES\", payload: { entityPermission: \"Read only\", properties: { permission: \"Readonly\", roleId: selectedRole._id } } })\r\n dispatch({ type: \"UPDATE_ALL_PAGES\", payload: { entityPermission: \"Read only\", properties: { access: true } } })\r\n dispatch({ type: \"UPDATE_ALL_OTHER_RIGHTS\", payload: true })\r\n }\r\n\r\n handleNoAccessPermission = async (element) => {\r\n const { dispatch, state } = this.context\r\n const { selectedRole } = state\r\n await Promise.all([\r\n this.UpdateAttributesBasedonEntityRight(element._id, \"Hidden\"),\r\n this.UpdatePagesBasedonEntityRight(element._id, false)\r\n ])\r\n dispatch({ type: \"UPDATE_ALL_ATTRIBUTES\", payload: { entityPermission: \"No access\", properties: { permission: \"Hidden\", roleId: selectedRole._id } } })\r\n dispatch({ type: \"UPDATE_ALL_PAGES\", payload: { entityPermission: \"No access\", properties: { access: false } } })\r\n dispatch({ type: \"UPDATE_ALL_OTHER_RIGHTS\", payload: false })\r\n }\r\n\r\n UpdateAttributesBasedonEntityRight = async (entityid, attributeValue) => {\r\n const { selectedRole } = this.context.state\r\n await callApiWithAuthorization(\"/api/v0/updateAttributesBasedonEntityRight\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n roleId: selectedRole._id,\r\n entityId: entityid,\r\n attributeValue: attributeValue\r\n })\r\n })\r\n }\r\n\r\n UpdatePagesBasedonEntityRight = async (entityid, pageValue) => {\r\n const { selectedRole } = this.context.state\r\n await callApiWithAuthorization(\"/api/v0/updatePagesBasedonEntityRight\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n roleId: selectedRole._id,\r\n entityId: entityid,\r\n pageValue: pageValue\r\n })\r\n })\r\n }\r\n\r\n UpdateSpecificPageBasedonEntityRight = async (entityid, pageValue, subPageType) => {\r\n const { selectedRole } = this.context.state\r\n await callApiWithAuthorization(\"/api/v0/updateSpecificPageBasedonEntityRight\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n roleId: selectedRole._id,\r\n entityId: entityid,\r\n pageValue: pageValue,\r\n subPageType: subPageType\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport default withTranslation([\r\n \"role/objects_rights\",\r\n], {\r\n withRef: true,\r\n})(EntityRights);","import React, { Component, useContext } from 'react'\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport Loader from '../Shared/Loader/loader';\r\nimport AttributeTypes from '../Attributes/AttributeTypes';\r\nimport { RoleContext } from './Context/RoleContext';\r\nimport { accessMap } from './accessMap';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { SavingComponent, InProgressComponent } from \"./SavingComponent\";\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\"\r\nimport WorkspaceAppModelContext from '../../Context/Workspace/WorkspaceAppModelContext';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { getAttributes, updateAttribute } from '../../API/Attribute/Attribute';\r\n\r\nfunction AttributeNameCell(props) {\r\n\r\n const navigate = useNavigate();\r\n const { mutators } = useContext(WorkspaceAppModelContext);\r\n\r\n function navigateToEntity() {\r\n if (mutators) {\r\n mutators.setSelectedTab(0);\r\n mutators.setSelectedEntity(props.entity.endNode);\r\n mutators.setSelectedAttribute(props.dataItem);\r\n } else {\r\n navigate(`/${props.organizationName}/${props.projectName}/Entities/${props.entity.endNode.sysName}/Attributes/${props.dataItem.sysName}`)\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {props.dataItem.attributeName}\r\n \r\n \r\n )\r\n}\r\n\r\nclass AttributeRights extends Component {\r\n\r\n DataTypes = AttributeTypes.Types\r\n static contextType = RoleContext\r\n constructor(props) {\r\n super(props)\r\n this.state = {}\r\n }\r\n\r\n componentDidMount = async () => {\r\n const { dispatch } = this.context\r\n let attributes = await this.getData()\r\n dispatch({ type: \"SET_ATTRIBUTES\", payload: attributes })\r\n dispatch({ type: \"SET_ATTRIBUTE_LOADER\", payload: false })\r\n if (attributes.length > 0) {\r\n this.selectItem(attributes[0])\r\n }\r\n }\r\n\r\n componentDidUpdate = async (props) => {\r\n if (props.selectedEntity._id && props.selectedEntity._id !== this.props.selectedEntity._id) {\r\n const { dispatch } = this.context\r\n let attributes = await this.getData()\r\n dispatch({ type: \"SET_ATTRIBUTES\", payload: attributes })\r\n dispatch({ type: \"SET_ATTRIBUTE_LOADER\", payload: false })\r\n if (attributes.length > 0) {\r\n this.selectItem(attributes[0])\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { state } = this.context\r\n const { t } = this.props\r\n if (state.loadingAttributes) return \r\n return (\r\n
    \r\n ({\r\n ...item,\r\n selected: item._id === state.selectedAttribute._id\r\n }))}\r\n onRowClick={(e) => this.selectItem(e.dataItem)}\r\n selectedField=\"selected\"\r\n >\r\n \r\n (\r\n \r\n )}\r\n />\r\n {/* (\r\n \r\n {t(\"attribute_type_label.\" + props.dataItem.attributeType.toLowerCase().split(\" \").join(\"_\"), { ns: \"attribute/attribute_type\" })}\r\n \r\n )}\r\n /> */}\r\n (\r\n \r\n {t(\"grid.header.permission\", { ns: \"role/properties_rights\" })}\r\n \r\n \r\n \r\n \r\n )}\r\n cell={(props) => (\r\n \r\n \r\n {value => (\r\n this.handlePermission(props.dataItem, dataItem)}\r\n data={this.getAccessData(props.dataItem)}\r\n value={this.getAccessValue(props.dataItem)}\r\n textField={\"text\"}\r\n />\r\n )}\r\n\r\n \r\n \r\n )}\r\n />\r\n (\r\n \r\n {state.attributeInProgressItems.includes(props.dataItem._id) && }\r\n {state.attributeSavedItems.includes(props.dataItem._id) && }\r\n \r\n )}\r\n />\r\n \r\n
    \r\n )\r\n }\r\n\r\n getData = async () => {\r\n let attributeRelations = await getAttributes(this.props.selectedEntity._id)\r\n let SystemAttr = attributeRelations.filter(attr => attr.isSystemAttribute)\r\n let NormalAttr = attributeRelations.filter(attr => !attr.isSystemAttribute)\r\n\r\n attributeRelations = [...NormalAttr, ...SystemAttr]\r\n\r\n attributeRelations.forEach((attr, index) => {\r\n attr.indexId = index + 1\r\n attr.typeText = this.DataTypes.find(type => type.value === attr.attributeType)?.text\r\n if (attr.attributeType === \"Entity Lookup\") {\r\n attr.typeText = \"Referenced Property\"\r\n }\r\n })\r\n return attributeRelations\r\n }\r\n\r\n getAccessData = (attribute) => {\r\n const { state } = this.context\r\n const { selectedRole, selectedEntity } = state\r\n\r\n const entityConfig = selectedEntity.roleRights[selectedRole._id]\r\n if (\r\n entityConfig.create &&\r\n entityConfig.read &&\r\n entityConfig.update &&\r\n entityConfig.delete\r\n ) {\r\n if (attribute.isSystemAttribute) {\r\n const filteredAccessMap = accessMap.filter(options => options.key !== \"Full access\")\r\n return this.getAccessDataMap(filteredAccessMap)\r\n } else {\r\n return this.getAccessDataMap(accessMap)\r\n }\r\n } else if (\r\n entityConfig.create &&\r\n entityConfig.read &&\r\n entityConfig.update &&\r\n entityConfig.delete\r\n ) {\r\n const filteredAccessMap = accessMap.filter(options => options.key !== \"Full access\")\r\n return this.getAccessDataMap(filteredAccessMap)\r\n } else {\r\n const filteredAccessMap = accessMap.filter(options => options.key === \"No access\")\r\n return this.getAccessDataMap(filteredAccessMap)\r\n }\r\n }\r\n\r\n getAccessDataMap = (data) => {\r\n const { t } = this.props\r\n return data.map(item => {\r\n const key = item.key.toLowerCase().split(\" \").join(\"_\")\r\n const text = t(\"dropdown_values.\" + key)\r\n return {\r\n ...item,\r\n text\r\n }\r\n })\r\n }\r\n\r\n getAccessValue = (attribute) => {\r\n const { selectedRole } = this.context.state\r\n if (!selectedRole) return accessMap[2]\r\n const attributeConfig = attribute.roleRights[selectedRole._id]\r\n if (!attributeConfig) return accessMap[2]\r\n let permission = accessMap.find(item => item.attribute === attributeConfig.permission)\r\n permission = this.getAccessValueMap(permission)\r\n return permission\r\n }\r\n\r\n getAccessValueMap = (accessMapValue) => {\r\n const { t } = this.props\r\n const key = accessMapValue.key.toLowerCase().split(\" \").join(\"_\")\r\n const text = t(\"dropdown_values.\" + key)\r\n return {\r\n ...accessMapValue,\r\n text\r\n }\r\n }\r\n\r\n selectItem = (dataItem) => {\r\n const { dispatch } = this.context\r\n dispatch({ type: \"SET_SELECTED_ATTRIBUTE\", payload: dataItem })\r\n }\r\n\r\n handlePermission = async (attribute, dataItem) => {\r\n const { state, dispatch } = this.context\r\n const { selectedRole } = state\r\n const permission = dataItem.value\r\n const { roleRights } = attribute\r\n roleRights[selectedRole._id].permission = permission.attribute\r\n attribute.roleRights = roleRights\r\n dispatch({ type: \"ATTRIBUTE_ADD_TO_INPROGRESS\", payload: attribute._id })\r\n updateAttribute(attribute._id, { roleRights })\r\n dispatch({ type: \"UPDATE_ATTRIBUTES\", payload: { _id: attribute._id, properties: attribute } })\r\n dispatch({ type: \"ATTRIBUTE_MOVE_TO_SAVE\", payload: attribute._id })\r\n this.selectItem(attribute)\r\n }\r\n}\r\n\r\nexport default withTranslation([\r\n \"role/properties_rights\",\r\n \"attribute/attribute_type\",\r\n], {\r\n withRef: true,\r\n})(AttributeRights);\r\n","import React, { Component } from 'react'\r\nimport { Switch } from '@progress/kendo-react-inputs';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport Loader from '../Shared/Loader/loader';\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport { RoleContext } from './Context/RoleContext';\r\nimport { SavingComponent, InProgressComponent } from \"./SavingComponent\";\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\"\r\nimport { withTranslation } from 'react-i18next';\r\n\r\nclass PageRights extends Component {\r\n\r\n static contextType = RoleContext\r\n\r\n constructor(props) {\r\n super(props)\r\n }\r\n\r\n componentDidMount = async () => {\r\n const { dispatch } = this.context\r\n let pages = await this.getPages()\r\n dispatch({ type: \"SET_PAGES\", payload: pages })\r\n dispatch({ type: \"SET_PAGE_LOADER\", payload: false })\r\n if (pages.length > 0) {\r\n this.selectItem(pages[0])\r\n }\r\n }\r\n\r\n componentDidUpdate = async (props) => {\r\n if (props.selectedEntity && props.selectedEntity._id !== this.props.selectedEntity._id) {\r\n const { dispatch } = this.context\r\n let pages = await this.getPages()\r\n dispatch({ type: \"SET_PAGES\", payload: pages })\r\n dispatch({ type: \"SET_PAGE_LOADER\", payload: false })\r\n if (pages.length > 0) {\r\n this.selectItem(pages[0])\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { state } = this.context\r\n const { selectedEntity } = state\r\n const { t } = this.props\r\n if (state.loadingPages) return \r\n return (\r\n
    \r\n {\r\n state.pages.length === 0 ?\r\n \r\n :\r\n \r\n {value => (\r\n ({\r\n ...item,\r\n selected: item.id === state.selectedPage.id\r\n }))}\r\n onRowClick={(e) => this.selectItem(e.dataItem)}\r\n style={{ maxHeight: '100%' }}\r\n scrollable=\"true\"\r\n selectedField=\"selected\"\r\n >\r\n \r\n (\r\n \r\n \r\n {props.dataItem.pageName}\r\n \r\n \r\n )}\r\n />\r\n (\r\n \r\n this.handleAccess(props.dataItem, e)}\r\n />\r\n \r\n )}\r\n />\r\n (\r\n \r\n {state.pageInProgressItems.includes(props.dataItem.id) && }\r\n {state.pageSavedItems.includes(props.dataItem.id) && }\r\n \r\n )}\r\n />\r\n \r\n )}\r\n \r\n }\r\n
    \r\n )\r\n }\r\n\r\n getPages = async () => {\r\n const { selectedEntity, selectedRole } = this.context.state\r\n let request = await callApiWithAuthorization(\"/api/v0/entity/\" + selectedEntity._id + \"/role/\" + selectedRole._id + \"/pageRole\")\r\n let pages = await request.json()\r\n pages = pages.sort((a, b) => a.order - b.order)\r\n pages.forEach((page, index) => page.indexId = index + 1)\r\n pages = pages.filter(page => page.subPageType !== \"List\")\r\n return pages\r\n }\r\n\r\n selectItem = (dataItem) => {\r\n const { dispatch } = this.context\r\n dispatch({ type: \"SET_SELECTED_PAGE\", payload: dataItem })\r\n }\r\n\r\n ShouldAccessDisabled = (page) => {\r\n const { state } = this.context\r\n const { selectedEntity, selectedRole } = state\r\n const entityRights = selectedEntity.roleRights[selectedRole._id]\r\n if (state.pageInProgressItems.includes(page.id)) {\r\n return true\r\n }\r\n if (\r\n entityRights.create &&\r\n entityRights.read &&\r\n entityRights.update &&\r\n entityRights.delete\r\n ) {\r\n return false\r\n } else if (\r\n !entityRights.create &&\r\n entityRights.read &&\r\n !entityRights.update &&\r\n !entityRights.delete\r\n ) {\r\n if (page.pageName === \"New Record\" || page.pageName === \"Edit Record\") {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else if (\r\n !entityRights.create &&\r\n !entityRights.read &&\r\n !entityRights.update &&\r\n !entityRights.delete\r\n ) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n handleAccess = async (page, dataItem) => {\r\n const { state, dispatch } = this.context\r\n const { selectedRole } = state\r\n dispatch({ type: \"PAGE_ADD_TO_INPROGRESS\", payload: page.id })\r\n const request = await callApiWithAuthorization(\"/api/v0/role/\" + selectedRole._id + \"/page/\" + page.id, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n access: dataItem.value\r\n })\r\n })\r\n const response = await request.json();\r\n dispatch({ type: \"UPDATE_PAGES\", payload: { id: page.id, properties: { access: dataItem.value } } })\r\n dispatch({ type: \"PAGE_MOVE_TO_SAVE\", payload: page.id })\r\n this.selectItem({ ...page, access: dataItem.value })\r\n }\r\n}\r\n\r\nexport default withTranslation([\r\n \"role/display_pages_rights\",\r\n], {\r\n withRef: true,\r\n})(PageRights);\r\n","import React, { Component } from 'react'\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { InProgressComponent, SavingComponent } from './SavingComponent';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { accessMap } from './accessMap';\r\nimport { RoleContext } from './Context/RoleContext';\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\"\r\nimport { withTranslation } from 'react-i18next';\r\nimport { updateEntity } from \"../../API/Entity/Entity\"\r\n\r\nclass OthersRights extends Component {\r\n\r\n static contextType = RoleContext\r\n\r\n constructor(props) {\r\n super(props)\r\n }\r\n\r\n componentDidMount = async () => {\r\n const { dispatch } = this.context;\r\n const { listData, chartsData } = this.getData();\r\n dispatch({ type: \"\" })\r\n dispatch({ type: \"SET_OTHER_RIGHTS\", payload: { listData, chartsData } })\r\n dispatch({ type: \"SET_OTHER_RIGHTS_LOADER\", payload: false })\r\n }\r\n\r\n componentDidUpdate = async (props) => {\r\n if (props.selectedEntity && props.selectedEntity._id !== this.props.selectedEntity._id) {\r\n const { dispatch } = this.context;\r\n const { listData, chartsData } = this.getData();\r\n dispatch({ type: \"\" })\r\n dispatch({ type: \"SET_OTHER_RIGHTS\", payload: { listData, chartsData } })\r\n dispatch({ type: \"SET_OTHER_RIGHTS_LOADER\", payload: false })\r\n }\r\n }\r\n\r\n render() {\r\n const { state } = this.context\r\n const { t } = this.props\r\n if (state.loadingOtherRights) return \r\n return (\r\n \r\n {value => (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"list_rights.title\")}\r\n \r\n

    \r\n {t(\"list_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {state.otherRightsInProgressItems.includes(state.listData.id) && }\r\n {state.otherRightsSavedItems.includes(state.listData.id) && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"charts_rights.title\")}\r\n \r\n

    \r\n {t(\"charts_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {state.otherRightsInProgressItems.includes(state.chartsData.id) && }\r\n {state.otherRightsSavedItems.includes(state.chartsData.id) && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n\r\n getData = () => {\r\n const { selectedRole, selectedEntity } = this.context.state\r\n const { accessLists, accessCharts, manageLists, manageCharts } = selectedEntity.roleRights[selectedRole._id];\r\n const listData = {\r\n access: accessLists,\r\n manage: manageLists,\r\n id: \"list-data-\" + this.props.selectedEntity._id\r\n };\r\n const chartsData = {\r\n access: accessCharts,\r\n manage: manageCharts,\r\n id: \"charts-data-\" + this.props.selectedEntity._id\r\n };\r\n return {\r\n listData,\r\n chartsData\r\n }\r\n }\r\n\r\n getAccessDataMap = () => {\r\n const { t } = this.props\r\n const accessMapData = accessMap.map(item => {\r\n const key = item.key.toLowerCase().split(\" \").join(\"_\")\r\n const text = t(\"dropdown_values.\" + key)\r\n return {\r\n ...item,\r\n text\r\n }\r\n })\r\n return accessMapData\r\n }\r\n\r\n getAccessValue = ({ access, manage }) => {\r\n if (access && manage) {\r\n return this.getAccessValueMap(accessMap[0])\r\n } else if (access && !manage) {\r\n return this.getAccessValueMap(accessMap[1])\r\n } else {\r\n return this.getAccessValueMap(accessMap[2])\r\n }\r\n }\r\n\r\n getAccessValueMap(accessMapData) {\r\n const { t } = this.props;\r\n const key = accessMapData.key.toLowerCase().split(\" \").join(\"_\");\r\n const text = t(\"dropdown_values.\" + key);\r\n return {\r\n ...accessMapData,\r\n text\r\n };\r\n }\r\n\r\n handleListRights = async (event) => {\r\n const { state, dispatch } = this.context\r\n const { selectedRole, selectedEntity } = state\r\n dispatch({ type: \"OTHER_ADD_TO_INPROGRESS\", payload: state.listData.id })\r\n const permission = accessMap.find(item => item.key === event.value.key);\r\n let { roleRights } = selectedEntity\r\n roleRights[selectedRole._id] = {\r\n ...roleRights[selectedRole._id],\r\n accessLists: permission.entity.accessLists,\r\n manageLists: permission.entity.manageLists\r\n }\r\n await updateEntity(selectedEntity._id, { roleRights })\r\n dispatch({ type: \"UPDATE_LIST_RIGHTS\", payload: { access: permission.entity.accessLists, manage: permission.entity.manageLists } })\r\n dispatch({ type: \"OTHER_MOVE_TO_SAVE\", payload: state.listData.id })\r\n }\r\n\r\n handleChartsRights = async (event) => {\r\n const { state, dispatch } = this.context\r\n const { selectedRole, selectedEntity } = state\r\n dispatch({ type: \"OTHER_ADD_TO_INPROGRESS\", payload: state.chartsData.id })\r\n const permission = accessMap.find(item => item.key === event.value.key);\r\n let { roleRights } = selectedEntity\r\n roleRights[selectedRole._id] = {\r\n ...roleRights[selectedRole._id],\r\n accessCharts: permission.entity.accessCharts,\r\n manageCharts: permission.entity.manageCharts\r\n }\r\n await updateEntity(selectedEntity._id, { roleRights })\r\n dispatch({ type: \"UPDATE_CHARTS_RIGHTS\", payload: { access: permission.entity.accessCharts, manage: permission.entity.manageCharts } })\r\n dispatch({ type: \"OTHER_MOVE_TO_SAVE\", payload: state.chartsData.id })\r\n }\r\n}\r\n\r\nexport default withTranslation([\r\n \"role/others_rights\",\r\n], {\r\n withRef: true,\r\n})(OthersRights);\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport AttributeRights from \"./AttributeRights\";\r\nimport PageRights from \"./PageRights\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport OthersRights from \"./OthersRights\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { RoleContext } from \"./Context/RoleContext\";\r\nimport useInternalUserCheck from \"../../Hooks/Misc/useInternalUserCheck\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\";\r\n\r\nfunction RightsBasedOnEntity(props) {\r\n\tconst { state, dispatch } = useContext(RoleContext);\r\n\tconst { organization, user } = useContext(GlobalContext).state;\r\n\tconst isInternalUser = useInternalUserCheck(user.email);\r\n\tconst handleTabs = (e) => {\r\n\t\tdispatch({ type: \"SET_SELECTED_ENTITY_RIGHTS_TAB\", payload: e.selected });\r\n\t};\r\n\r\n\tconst { t, i18n } = useTranslation([\r\n\t\t\"role/common\"\r\n\t], {\r\n\t\tuseSuspense: false\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\t// i18n.changeLanguage(organization.platformLanguage)\r\n\t}, [])\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{isInternalUser && state.advancedMode && (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t{isInternalUser && state.advancedMode && (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default RightsBasedOnEntity;\r\n","import React, { Fragment } from 'react'\r\nimport { Switch } from '@progress/kendo-react-inputs';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { InProgressComponent, SavingComponent } from './SavingComponent';\r\nimport { useContext } from 'react';\r\nimport { RoleContext } from './Context/RoleContext';\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\"\r\nimport useInternalUserCheck from '../../Hooks/Misc/useInternalUserCheck';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { updateRole } from '../../API/Role/Role';\r\n\r\nexport const GeneralRights = (props) => {\r\n debugger\r\n const { state, dispatch } = useContext(RoleContext)\r\n const { subscription, user } = useContext(GlobalContext).state\r\n const isInternalUser = useInternalUserCheck(user.email)\r\n\r\n const { t, i18n } = useTranslation([\r\n \"role/general_rights\"\r\n ], {\r\n useSuspense: false\r\n });\r\n\r\n const Rights = [\r\n {\r\n text: t(\"dropdown_values.manage\"),\r\n value: \"Manage\"\r\n },\r\n {\r\n text: t(\"dropdown_values.access\"),\r\n value: \"Access\"\r\n },\r\n {\r\n text: t(\"dropdown_values.no_access\"),\r\n value: \"No access\"\r\n }\r\n ]\r\n\r\n const handleChange = async (field, value) => {\r\n let role = { ...state.selectedRole }\r\n dispatch({ type: \"ADD_TO_INPROGRESS\", payload: field })\r\n await updateRole(role._id, { [field]: value })\r\n dispatch({ type: \"UPDATE_ROLES\", payload: { _id: role._id, properties: { [field]: value } } })\r\n dispatch({ type: \"MOVE_TO_SAVE\", payload: field })\r\n }\r\n\r\n const handleCheckboxChange = async (e) => {\r\n handleChange(e.target.name, e.value)\r\n }\r\n\r\n const handleDropdownChange = async (e) => {\r\n handleChange(e.target.name, e.target.value.value)\r\n }\r\n\r\n function getRightValueObjectFromString(string) {\r\n return Rights.find(x => x.value === string);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {t(\"rights_in_production.title\")}

    \r\n

    {t(\"rights_in_production.description\")}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.manage_user.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.manage_user.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"manageUsers\") && }\r\n {state.savedItems.includes(\"manageUsers\") && }\r\n
    \r\n
    \r\n {subscription.showPlanning &&\r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.provide_feedback.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.provide_feedback.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"provideFeedback\") && }\r\n {state.savedItems.includes(\"provideFeedback\") && }\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.edit_app.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.edit_app.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"configureApp\") && }\r\n {state.savedItems.includes(\"configureApp\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.app_general_settings.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.app_general_settings.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"appGeneralSettings\") && }\r\n {state.savedItems.includes(\"appGeneralSettings\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.view_app_as_other_roles.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.view_app_as_other_roles.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"viewAppasOtherRolesinPublish\") && }\r\n {state.savedItems.includes(\"viewAppasOtherRolesinPublish\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.import_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.import_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"importRights\") && }\r\n {state.savedItems.includes(\"importRights\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.data_access_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.data_access_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"dataAccessRights\") && }\r\n {state.savedItems.includes(\"dataAccessRights\") && }\r\n
    \r\n
    \r\n {subscription.showApiPerApp &&\r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.api_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.api_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"apiRights\") && }\r\n {state.savedItems.includes(\"apiRights\") && }\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.lookup_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.lookup_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"lookupRights\") && }\r\n {state.savedItems.includes(\"lookupRights\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.dashboard_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.dashboard_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"dashboardingRights\") && }\r\n {state.savedItems.includes(\"dashboardingRights\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.reporting_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.reporting_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"reportingRights\") && }\r\n {state.savedItems.includes(\"reportingRights\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.notification_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.notification_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"notificationRights\") && }\r\n {state.savedItems.includes(\"notificationRights\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.approval_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.approval_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"allowTaskWorkflowManagement\") && }\r\n {state.savedItems.includes(\"allowTaskWorkflowManagement\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.internal_workflow_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.internal_workflow_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"internalWorkflowRights\") && }\r\n {state.savedItems.includes(\"internalWorkflowRights\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_production.shared_form_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_production.shared_form_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"sharedFormRights\") && }\r\n {state.savedItems.includes(\"sharedFormRights\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {isInternalUser && state.advancedMode &&\r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n {t(\"rights_in_preview.title\")}\r\n

    \r\n

    \r\n {t(\"rights_in_preview.description\")}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_preview.edit_app.title\")}\r\n \r\n

    \r\n {t(\"rights_in_preview.edit_app.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"configureAppinPreview\") && }\r\n {state.savedItems.includes(\"configureAppinPreview\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_preview.view_app_as_other_roles.title\")}\r\n \r\n

    \r\n {t(\"rights_in_preview.view_app_as_other_roles.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"viewAppasOtherRoles\") && }\r\n {state.savedItems.includes(\"viewAppasOtherRoles\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"rights_in_preview.import_rights.title\")}\r\n \r\n

    \r\n {t(\"rights_in_preview.import_rights.description\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {state.inProgressItems.includes(\"importRightsinPreview\") && }\r\n {state.savedItems.includes(\"importRightsinPreview\") && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n )\r\n}","import React, { Component } from \"react\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport EntityRights from \"./EntityRights\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport RightsBasedOnEntity from \"./RightsBasedOnEntity\";\r\nimport { GeneralRights } from \"./GeneralRights\";\r\nimport { RoleContext } from \"./Context/RoleContext\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\n\r\nclass Rights extends Component {\r\n\tstatic contextType = RoleContext\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tselected: 0,\r\n\t\t\tpanes: [\r\n\t\t\t\t{ size: \"100%\", min: \"40%\", collapsible: false },\r\n\t\t\t\t{ min: \"0%\", collapsible: false }\r\n\t\t\t]\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { t } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{this.context.state.selectedEntity._id && this.state.selected === 1 && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\thandleTabs = (e) => {\r\n\t\tlet panes\r\n\t\tif (e.selected === 0 || e.selected === 2) {\r\n\t\t\tpanes = [\r\n\t\t\t\t{ size: \"100%\", min: \"60%\", collapsible: false },\r\n\t\t\t\t{ min: \"0%\", collapsible: false }\r\n\t\t\t]\r\n\t\t} else {\r\n\t\t\tpanes = [\r\n\t\t\t\t{ size: \"48%\", min: \"52%\", collapsible: false },\r\n\t\t\t\t{ min: \"20%\", collapsible: false }\r\n\t\t\t]\r\n\t\t}\r\n\t\tthis.setState({ panes: panes, selected: e.selected })\r\n\t}\r\n\r\n\tonSplitterSizeChange = (e) => {\r\n\t\tthis.setState({ panes: e.newState })\r\n\t}\r\n}\r\n\r\nexport default withTranslation([\r\n\t\"role/common\"\r\n], {\r\n\twithRef: true,\r\n})(Rights);\r\n","import React, { useEffect, useContext, useRef } from \"react\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport Rights from \"./Rights\";\r\nimport { PageContainer, Content, Header } from \"../Drawer/PageContainer\";\r\nimport RemoveDialog from \"../Shared/Remove/RemoveDialog\";\r\nimport ErrorMessage from \"../Shared/Error/ErrorMessage\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\"\r\nimport { RoleContext } from \"./Context/RoleContext\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport { GlobalContext } from \"../../Renderers/GlobalContext\"\r\nimport { removeSpecialCharacters } from \"../Entities/utils\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { CheckForInternalUser } from \"../Helpers/miscellaneous\";\r\nimport { createRole, getProjectRoles, updateRole } from \"../../API/Role/Role\";\r\n\r\nclass DragCell extends React.Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t {\r\n\t\t\t\t\tDragCell.reorder(this.props.dataItem)\r\n\t\t\t\t\te.preventDefault()\r\n\t\t\t\t\te.dataTransfer.dropEffect = \"copy\"\r\n\t\t\t\t}}\r\n\t\t\t\tonDragEnd={(e) => {\r\n\t\t\t\t\te.preventDefault()\r\n\t\t\t\t\tDragCell.endDrag(this.props.dataItem)\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tDragCell.dragStart(this.props.dataItem)\r\n\t\t\t\t\t\te.dataTransfer.setData(\"dragging\", \"\")\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{this.props.dataItem.indexId}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n}\r\n\r\nconst Roles = (props) => {\r\n\r\n\tconst { state, dispatch } = useContext(RoleContext)\r\n\tconst { subscription, organization, user } = useContext(GlobalContext).state\r\n\r\n\tlet isInternalUser = CheckForInternalUser(user.email)\r\n\r\n\tconst createRoleButton = useRef()\r\n\tconst createRoleandNewButton = useRef()\r\n\tconst roleNameInput = useRef()\r\n\r\n\tconst { t, i18n } = useTranslation([\r\n\t\t\"role/common\",\r\n\t\t\"role/role_dialog\",\r\n\t\t\"role/delete_dialog\",\r\n\t], {\r\n\t\tuseSuspense: false\r\n\t})\r\n\r\n\tuseEffect(() => {\r\n\t\t// i18n.changeLanguage(organization.platformLanguage)\r\n\t\tgetRoles()\r\n\t}, [])\r\n\r\n\tconst getRoles = async () => {\r\n\t\tlet roles = await getProjectRoles(props.project._id)\r\n\t\tfor (let i = 0; i < roles.length; i++) {\r\n\t\t\troles[i].indexId = i + 1;\r\n\t\t}\r\n\t\tdispatch({\r\n\t\t\ttype: \"SET_INTIAL_DATA\", payload: {\r\n\t\t\t\tdata: roles,\r\n\t\t\t\tloading: false,\r\n\t\t\t\tadvancedMode: props.project.developerMode,\r\n\t\t\t\tselectedRole: roles.length > 0 ? props.roleId ? roles.find(role => role._id === props.roleId) : roles[0] : {},\r\n\t\t\t\tpanes: roles.length > 0 ?\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{ size: \"20%\", min: \"15%\", collapsible: false },\r\n\t\t\t\t\t\t{ min: \"70%\", collapsible: false }\r\n\t\t\t\t\t]\r\n\t\t\t\t\t:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{ size: \"100%\", min: \"15%\", collapsible: false },\r\n\t\t\t\t\t\t{ min: \"0%\", collapsible: false }\r\n\t\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tconst selectItem = (dataItem) => {\r\n\t\tif (state.selectedRole._id !== dataItem._id) {\r\n\t\t\tdispatch({ type: \"SET_SELECTED_ROLE\", payload: dataItem })\r\n\t\t}\r\n\t}\r\n\r\n\tconst setUpdateItem = (dataItem) => {\r\n\t\tselectItem(dataItem)\r\n\t\tdispatch({ type: \"SET_UPDATING_ROlE\", payload: dataItem })\r\n\t}\r\n\r\n\tconst DeleteConfirmation = (data) => {\r\n\t\tdispatch({ type: \"TOGGLE_DELETE_ROLE_DIALOG\" })\r\n\t\tdispatch({ type: \"SET_DELETING_ROlE\", payload: data })\r\n\t}\r\n\r\n\tconst handleChangeRoleName = (event) => {\r\n\t\tlet { nameError } = state;\r\n\t\tlet roleName = event.target.value.trim()\r\n\t\tif (roleName === \"\") {\r\n\t\t\tnameError.isValid = false\r\n\t\t\tnameError.message = t(\"errors.name_required\", { ns: \"role/role_dialog\" })\r\n\t\t} else if (roleName.match(/^\\d/)) {\r\n\t\t\tnameError.isValid = false\r\n\t\t\tnameError.message = t(\"errors.name_starts_with_number\", { ns: \"role/role_dialog\" })\r\n\t\t} else {\r\n\t\t\tlet exists = state.data.find((x) => (\r\n\t\t\t\tremoveSpecialCharacters(x.roleName.trim().toLowerCase()) === removeSpecialCharacters(roleName.toLowerCase())\r\n\t\t\t));\r\n\t\t\tif (exists) {\r\n\t\t\t\tnameError.isValid = false\r\n\t\t\t\tnameError.message = t(\"errors.name_already_exists\", { ns: \"role/role_dialog\" })\r\n\t\t\t} else {\r\n\t\t\t\tnameError.isValid = true\r\n\t\t\t\tnameError.message = \"\"\r\n\t\t\t}\r\n\t\t}\r\n\t\tdispatch({\r\n\t\t\ttype: \"HANDLE_ROLE_NAME_CHANGE\",\r\n\t\t\tpayload: {\r\n\t\t\t\troleName: event.target.value,\r\n\t\t\t\tnameError: nameError\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tconst onCreate = async (e, keepFormVisible = false) => {\r\n\t\te.preventDefault()\r\n\t\tcreateRoleButton.current.disabled = true\r\n\t\tcreateRoleandNewButton.current.disabled = true\r\n\r\n\t\tdispatch({ type: \"SET_LOADER\", payload: true })\r\n\r\n\t\tlet order = state.data.length > 0 ? parseInt(state.data[state.data.length - 1][\"order\"]) : 0\r\n\r\n\t\tlet result = await createRole(props.project._id, {\r\n\t\t\troleName: state.roleName.trim(),\r\n\t\t\torder: order + 10000000000,\r\n\t\t\tmanageUsers: false,\r\n\t\t\tprovideFeedback: true,\r\n\t\t\tconfigureApp: false,\r\n\t\t\tappGeneralSettings: false,\r\n\t\t\tviewAppasOtherRolesinPublish: false,\r\n\t\t\tlookupRights: \"Access\",\r\n\t\t\tdashboardingRights: \"Access\",\r\n\t\t\treportingRights: \"Access\",\r\n\t\t\tviewAppasOtherRoles: false,\r\n\t\t\tconfigureAppinPreview: false,\r\n\t\t\timportRights: false,\r\n\t\t\tdataAccessRights: false,\r\n\t\t\timportRightsinPreview: false,\r\n\t\t\tnotificationRights: \"Access\",\r\n\t\t\tsharedFormRights: \"No access\",\r\n\t\t\tapiRights: false,\r\n\t\t\tallowTaskWorkflowManagement: \"Access\",\r\n\t\t\tinternalWorkflowRights: \"Access\",\r\n\t\t})\r\n\r\n\t\tvar roleData = state.data\r\n\t\tresult.indexId = roleData.length + 1\r\n\t\troleData.push(result)\r\n\r\n\t\tdispatch({\r\n\t\t\ttype: \"ADD_ROLE\",\r\n\t\t\tpayload: {\r\n\t\t\t\tdata: roleData,\r\n\t\t\t\tshowCreateRoleDialog: keepFormVisible,\r\n\t\t\t\troleName: \"\",\r\n\t\t\t\tpanes: [\r\n\t\t\t\t\t{ size: \"20%\", min: \"15%\", collapsible: false },\r\n\t\t\t\t\t{ min: \"70%\", collapsible: false },\r\n\t\t\t\t],\r\n\t\t\t\ttoUpdateRole: {},\r\n\t\t\t\ttoDeleteRole: {},\r\n\t\t\t\tnameError: { isValid: true, message: \"\" },\r\n\t\t\t\tprocessingRole: false\r\n\t\t\t}\r\n\t\t})\r\n\t\tselectItem(result)\r\n\t}\r\n\r\n\tconst CreateAndNew = async (event) => {\r\n\t\tawait onCreate(event, true)\r\n\t\troleNameInput.current.focus()\r\n\t}\r\n\r\n\tconst onUpdate = async (e) => {\r\n\t\te.preventDefault()\r\n\t\tcreateRoleButton.current.disabled = true\r\n\t\tdispatch({ type: \"SET_LOADER\", payload: true })\r\n\r\n\t\tawait updateRole(state.toUpdateRole._id, { roleName: state.roleName })\r\n\r\n\t\tlet data = state.data\r\n\t\tdata.find((x) => x._id === state.toUpdateRole._id).roleName = state.roleName\r\n\t\tlet element = data.find((x) => x._id === state.toUpdateRole._id)\r\n\t\tselectItem(element)\r\n\t\tdispatch({\r\n\t\t\ttype: \"UPDATE_ROLE\",\r\n\t\t\tpayload: {\r\n\t\t\t\tprocessingRole: false,\r\n\t\t\t\tdata: data,\r\n\t\t\t\ttoUpdateRole: {},\r\n\t\t\t\tshowCreateRoleDialog: false\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tconst deleteRole = async (e) => {\r\n\t\te.preventDefault()\r\n\t\te.target.disabled = true\r\n\t\tlet roleId = state.toDeleteRole._id\r\n\r\n\t\tdispatch({ type: \"SET_LOADER\", payload: true })\r\n\r\n\t\tawait callApiWithAuthorization(\"/api/v0/project/\" + props.project._id + \"/role/\" + roleId, {\r\n\t\t\tmethod: \"DELETE\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet data = [...state.data]\r\n\t\tlet index = data.findIndex((p) => p._id === roleId)\r\n\t\tif (index >= 0) { data.splice(index, 1) }\r\n\t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\tdata[i].indexId = i + 1\r\n\t\t}\r\n\t\tlet toGet = 0\r\n\t\tdispatch({\r\n\t\t\ttype: \"DELETE_ROLE\",\r\n\t\t\tpayload: {\r\n\t\t\t\tdata: data,\r\n\t\t\t\tshowDeleteRoleDialog: false,\r\n\t\t\t\tprocessingRole: false\r\n\t\t\t}\r\n\t\t})\r\n\t\tif (index === 0) {\r\n\t\t\tif (data.length > 0) {\r\n\t\t\t\tselectItem(data[toGet])\r\n\t\t\t} else {\r\n\t\t\t\tselectItem({})\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: \"HANDLE_SPLITTER_CHANGE\",\r\n\t\t\t\t\tpayload: [\r\n\t\t\t\t\t\t{ size: \"100%\", min: \"15%\", collapsible: false },\r\n\t\t\t\t\t\t{ min: \"0%\", collapsible: false }\r\n\t\t\t\t\t]\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttoGet = index - 1;\r\n\t\t\tif (state.selectedRole._id === roleId) {\r\n\t\t\t\tselectItem(data[toGet])\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst reorder = (dataItem) => {\r\n\t\tif (this.state.activeItem._id === dataItem._id) {\r\n\t\t\tif (\r\n\t\t\t\tthis.state.activeItemIndex !== this.state.draggedOverItemIndex\r\n\t\t\t) {\r\n\t\t\t\tthis.setState({ draggedOverItemIndex: -1 });\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tactiveItem: this.state.activeItem,\r\n\t\t\tdraggedOverItemIndex: dataItem.index,\r\n\t\t});\r\n\t}\r\n\r\n\tconst updateOrder = (id, orderToUpdate) => {\r\n\t\tupdateRole(id, { order: orderToUpdate })\r\n\t}\r\n\r\n\tconst endDrag = (dataItem) => {\r\n\t\tlet { activeItemIndex, draggedOverItemIndex } = this.state;\r\n\t\tif (draggedOverItemIndex === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet reorderedData = state.data.slice();\r\n\t\treorderedData.splice(activeItemIndex, 1);\r\n\t\treorderedData.splice(draggedOverItemIndex, 0, this.state.activeItem);\r\n\t\tlet index = draggedOverItemIndex;\r\n\r\n\t\tlet newOrder;\r\n\r\n\t\tif (reorderedData.length > 2) {\r\n\t\t\tif (index === reorderedData.length - 1) {\r\n\t\t\t\tnewOrder =\r\n\t\t\t\t\tparseInt(reorderedData[index - 1][\"order\"]) + 10000000000;\r\n\t\t\t\t////console.log(index, newOrder);\r\n\t\t\t\treorderedData[index][\"order\"] = newOrder;\r\n\t\t\t\tupdateOrder(reorderedData[index]._id, newOrder);\r\n\t\t\t} else if (index === 0) {\r\n\t\t\t\tnewOrder = parseInt(reorderedData[1][\"order\"]);\r\n\t\t\t\tlet prevElementOrder = parseInt(reorderedData[2][\"order\"]);\r\n\t\t\t\tlet orderToSet = (prevElementOrder + newOrder) / 2;\r\n\t\t\t\treorderedData[index][\"order\"] = newOrder;\r\n\t\t\t\treorderedData[1][\"order\"] = orderToSet;\r\n\t\t\t\tupdateOrder(reorderedData[index]._id, newOrder);\r\n\t\t\t\tupdateOrder(reorderedData[1]._id, orderToSet);\r\n\t\t\t\t////console.log(prevElementOrder, orderToSet, index);\r\n\t\t\t} else {\r\n\t\t\t\tlet prevItemOrder = parseInt(reorderedData[index - 1][\"order\"]);\r\n\t\t\t\tlet nextItemOrder = parseInt(reorderedData[index + 1][\"order\"]);\r\n\t\t\t\tnewOrder = (prevItemOrder + nextItemOrder) / 2;\r\n\t\t\t\treorderedData[index][\"order\"] = newOrder;\r\n\t\t\t\tupdateOrder(reorderedData[index]._id, newOrder);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet firstOrder = reorderedData[0][\"order\"];\r\n\t\t\tlet secondOrder = reorderedData[1][\"order\"];\r\n\r\n\t\t\treorderedData[0][\"order\"] = secondOrder;\r\n\t\t\treorderedData[1][\"order\"] = firstOrder;\r\n\r\n\t\t\tupdateOrder(reorderedData[0]._id, secondOrder);\r\n\t\t\tupdateOrder(reorderedData[1]._id, firstOrder);\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < reorderedData.length; i++) {\r\n\t\t\treorderedData[i].indexId = i + 1;\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tdata: reorderedData,\r\n\t\t\tselectedRole: this.state.oldSelectedRole,\r\n\t\t});\r\n\t}\r\n\r\n\tconst dragStart = (dataItem) => {\r\n\t\tdebugger\r\n\t\tlet { state } = this.context\r\n\t\tvar oldSelectedRole = state.selectedRole\r\n\t\tthis.setState({\r\n\t\t\tdata: state.data,\r\n\t\t\tactiveItem: dataItem,\r\n\t\t\toldSelectedRole: oldSelectedRole,\r\n\t\t\tselectedRole: dataItem,\r\n\t\t\tactiveItemIndex: dataItem.index\r\n\t\t})\r\n\t}\r\n\r\n\tif (state.loading) {\r\n\t\treturn \r\n\t}\r\n\treturn (\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t{subscription.rolesPermission === \"Full access\" ?\r\n\t\t\t\t\t dispatch({ type: \"TOGGLE_CREATE_ROLE_DIALOG\" })}\r\n\t\t\t\t\t\tshowHelpCenter={(isInternalUser && props.project.developerMode) ? true : false}\r\n\t\t\t\t\t\tuser={user}\r\n\t\t\t\t\t\thelpCenterFor={\"Roles\"}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{subscription.rolesPermission === \"Editable\" ?\r\n\t\t\t\t\t\t\t\tt(\"header.warning_with_subscription_roles_permission_editable\")\r\n\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\tt(\"header.warning_with_subscription_roles_permission_read_only\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t dispatch({ type: \"HANDLE_SPLITTER_CHANGE\", payload: e.newState })}\r\n\t\t\t\t\tclassName=\"no-scroll w-100\"\r\n\t\t\t\t\tpanes={state.panes}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{state.showDeleteRoleDialog && (\r\n\t\t\t\t\t\t\t\t dispatch({ type: \"TOGGLE_DELETE_ROLE_DIALOG\" })}\r\n\t\t\t\t\t\t\t\t\tonDelete={deleteRole}\r\n\t\t\t\t\t\t\t\t\tdeleteButtonText={t(\"buttons.delete_button_label\", { ns: \"role/delete_dialog\" })}\r\n\t\t\t\t\t\t\t\t\tcancelButtonText={t(\"buttons.cancel_button_label\", { ns: \"role/delete_dialog\" })}\r\n\t\t\t\t\t\t\t\t\tmessage={\r\n\t\t\t\t\t\t\t\t\t\tt(\"warning\", {\r\n\t\t\t\t\t\t\t\t\t\t\tns: \"role/delete_dialog\",\r\n\t\t\t\t\t\t\t\t\t\t\troleName: state.data.find((x) => x._id === state.toDeleteRole._id).roleName\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tTitle={t(\"delete_title\", { ns: \"role/delete_dialog\" })}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{state.showCreateRoleDialog && (\r\n\t\t\t\t\t\t\t\t dispatch({ type: \"TOGGLE_CREATE_ROLE_DIALOG\" })}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    {t(\"name_field_label\", { ns: \"role/role_dialog\" })}
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{state.processingRole && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t dispatch({ type: \"TOGGLE_CREATE_ROLE_DIALOG\" })}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{t(\"buttons.cancel_button_label\", { ns: \"role/role_dialog\" })}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{!state.toUpdateRole._id && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"buttons.create_and_new_button_label\", { ns: \"role/role_dialog\" })}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{state.toUpdateRole._id ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tt(\"buttons.update_button_label\", { ns: \"role/role_dialog\" })\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tt(\"buttons.create_button_label\", { ns: \"role/role_dialog\" })\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{state.processingRole && }\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t ({\r\n\t\t\t\t\t\t\t\t\t\t\t...item,\r\n\t\t\t\t\t\t\t\t\t\t\tselected: item._id === state.selectedRole._id,\r\n\t\t\t\t\t\t\t\t\t\t\tisHovered: index === state.draggedOverItemIndex,\r\n\t\t\t\t\t\t\t\t\t\t\tindex,\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\tonRowClick={state.inProgressItems.length !== 0 ? null : (e) => { selectItem(e.dataItem) }}\r\n\t\t\t\t\t\t\t\t\tstyle={{ maxHeight: \"100%\", height: \"100%\" }}\r\n\t\t\t\t\t\t\t\t\tscrollable=\"true\"\r\n\t\t\t\t\t\t\t\t\tselectedField=\"selected\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t { selectItem(props.dataItem) }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{props.dataItem.roleName}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{props.dataItem._id === state.selectedRole._id && state.inProgressItems.length !== 0 && }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{(props.dataItem.selected && props.dataItem.isDefaultRole !== true) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subscription.rolesPermission !== \"Read only\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t setUpdateItem(props.dataItem)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t DeleteConfirmation(props.dataItem)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{state.selectedRole._id !== undefined && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n}\r\n\r\nexport default Roles;\r\n","import React from \"react\";\r\nimport { PageContainer, Content, Header } from \"../Drawer/PageContainer\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { getCompressedJson, getRawJson } from \"../../API/Export/ExportApi\";\r\nimport { getAzureUser } from \"../../API/User/User\";\r\nimport { getProject } from \"../../API/Project/project\";\r\n\r\nexport class ExportContent extends React.Component {\r\n\r\n static contextType = MsalContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: {\r\n ProjectName: \"\",\r\n ProjectId: \"\",\r\n },\r\n len: 0,\r\n call: 0,\r\n };\r\n }\r\n\r\n getJson = async (InstanceType, forImport) => {\r\n const { context } = this;\r\n let user = await getAzureUser(context);\r\n const userId = user.oid\r\n\r\n const project = await getProject(this.props.projectId);\r\n\r\n const instance = project.instances.find(\r\n (instance) => instance.instanceType === InstanceType\r\n );\r\n\r\n const [json, compressedJson] = await Promise.all([\r\n getRawJson(\r\n this.props.projectId,\r\n this.props.organisationId,\r\n userId,\r\n instance._id,\r\n InstanceType === \"Preview\",\r\n forImport\r\n ),\r\n getCompressedJson(\r\n this.props.projectId,\r\n this.props.organisationId,\r\n userId,\r\n instance._id,\r\n InstanceType === \"Preview\",\r\n forImport\r\n ),\r\n ]);\r\n const a = document.createElement(\"a\");\r\n const blob = new Blob([JSON.stringify(json)], {\r\n type: \"application/json\",\r\n });\r\n a.href = URL.createObjectURL(blob);\r\n a.download =\r\n \"Designer_\" +\r\n json.ProjectLabel.replace(/\\s/g, \"_\") +\r\n \"-\" +\r\n json.ProjectId +\r\n \".json\";\r\n a.click();\r\n\r\n const an = document.createElement(\"a\");\r\n an.href = URL.createObjectURL(compressedJson);\r\n an.download =\r\n \"Designer_\" +\r\n json.ProjectLabel.replace(/\\s/g, \"_\") +\r\n \"-\" +\r\n json.ProjectId +\r\n \".gz\";\r\n an.click();\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    Export for App Workspace
    \r\n this.getJson(\"Preview\", false)}\r\n >\r\n Preview Data\r\n \r\n \r\n this.getJson(\"Production\", false)\r\n }\r\n >\r\n Publish Data\r\n \r\n
    \r\n
    \r\n
    Export for Import
    \r\n this.getJson(\"Preview\", true)}\r\n >\r\n Preview Data\r\n \r\n \r\n this.getJson(\"Production\", true)\r\n }\r\n >\r\n Publish Data\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import lzutf8 from 'lzutf8';\r\n\r\nexport function decompressArtifacts(artifacts) {\r\n return JSON.parse(lzutf8.decompress(lzutf8.decodeBase64(artifacts)));\r\n}\r\n\r\nexport function compressArtifacts(artifacts) {\r\n return lzutf8.encodeBase64(lzutf8.compress(JSON.stringify(artifacts)));\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\n\r\nimport { Content, Header, PageContainer } from '../Drawer/PageContainer';\r\nimport Alice from \"../Display/Alice\"\r\n\r\nimport { callApiWithAuthorization } from '../../API/CallApi';\r\nimport { getProject, updateProject } from '../../API/Project/project';\r\nimport { compressArtifacts, decompressArtifacts } from './utils';\r\n\r\nfunction Artifacts({ projectId }) {\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [instances, setInstances] = useState([]);\r\n const [error, setError] = useState(null);\r\n\r\n const [selectedInstance, setSelectedInstance] = useState({});\r\n\r\n const [isDeleteArtifactsVisible, setIsDeleteArtifactsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n getProject(projectId)\r\n .then(setData)\r\n .catch(err => setError(err.message))\r\n .finally(() => setLoading(false))\r\n });\r\n\r\n function setData(project) {\r\n if (project.instances.length > 0) {\r\n handleInstanceSelection(project.instances[0]);\r\n } else {\r\n setSelectedInstance({});\r\n }\r\n\r\n setInstances(project.instances)\r\n }\r\n \r\n //#region select instance dropdown\r\n function handleSelectedInstance(event) {\r\n handleInstanceSelection(event.target.value);\r\n }\r\n\r\n function handleInstanceSelection(instance) {\r\n const decompressedArtifacts = instance.artifacts ? decompressArtifacts(instance.artifacts) : [];\r\n setSelectedInstance({\r\n ...instance,\r\n artifacts: decompressedArtifacts\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region deleteArtifacts\r\n function toggleDeleteDialog() {\r\n setIsDeleteArtifactsVisible(!isDeleteArtifactsVisible);\r\n }\r\n\r\n function deleteAllArtifacts() {\r\n //\r\n }\r\n //#endregion\r\n\r\n //#region get artifacts from runtime\r\n async function getArtifactsFromRuntime() {\r\n try {\r\n debugger;\r\n const getArtifactsRequest = await fetch(process.env.REACT_APP_RUNTIME_API_URL + \"/api/ui/GetArtifacts\", {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"appid\": selectedInstance._id\r\n }\r\n });\r\n\r\n const artifacts = await getArtifactsRequest.json();\r\n\r\n const compressedArtifacts = compressArtifacts(artifacts.data[0]);\r\n\r\n const newInstancesData = instances.map(instance => {\r\n if (instance._id === selectedInstance._id) {\r\n return {\r\n ...instance,\r\n artifacts: compressedArtifacts\r\n }\r\n }\r\n return instance;\r\n })\r\n\r\n await updateProject(projectId, { instances: newInstancesData });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n //#endregion\r\n\r\n return (\r\n \r\n {\r\n isDeleteArtifactsVisible &&\r\n \r\n

    \r\n   \r\n Are you sure you want to delete all the last synced artifacts?\r\n

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n \r\n \r\n Sync Artifacts\r\n \r\n
    \r\n \r\n {\r\n (\r\n selectedInstance.artifacts === undefined ||\r\n selectedInstance.artifacts === null ||\r\n selectedInstance.artifacts.length === 0\r\n ) &&\r\n \r\n No artifacts are available at this moment\r\n
    Setup a service on Runtime and than try to synchronize here
    \r\n
    \r\n }\r\n {\r\n selectedInstance.artifacts?.length > 0 &&\r\n <>\r\n
    \r\n
    \r\n {\r\n selectedInstance.artifacts.lastSyncedAt ?\r\n <>\r\n Last Synced from {this.state.lastSyncedInstance.instanceName}:\r\n  \r\n {this.state.artifact.lastUpdatedOn.toString()}\r\n \r\n :\r\n \"Please sync instance at least once\"\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n loading ?\r\n // \r\n <>\r\n :\r\n ({ ...artifact, _id: i + 1 }))}>\r\n \r\n (\r\n List View\r\n )} />\r\n \r\n \r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n Delete all synchronized artifacts\r\n \r\n
    \r\n \r\n }\r\n
    \r\n
    \r\n )\r\n \r\n}\r\n\r\nexport default Artifacts;","export const PRODUCTION_INSTANCE_TYPE = \"Production\";\r\nexport const TEST_INSTANCE_TYPE = \"Test\";\r\nexport const DEV_INSTANCE_TYPE = \"Development\";","import { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { useState } from \"react\";\r\nimport { DEV_INSTANCE_TYPE, PRODUCTION_INSTANCE_TYPE, TEST_INSTANCE_TYPE } from \"./CONSTANTS\";\r\nimport { hasSpecialCharacters } from \"../../Helpers/miscellaneous\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n\r\n/**\r\n * Function representing a create instance dialog.\r\n * \r\n * @param {Object} props - The properties object.\r\n * @param {(name: string) => boolean} props.isNameInUse - Function that takes a string parameter (name) and returns a boolean indicating if the name is in use.\r\n * @param {Function} props.onCreate - Callback function invoked when an instance is created.\r\n * @param {Function} props.onCancel - Callback function invoked when the creation process is canceled.\r\n * @returns {JSX.Element} - The JSX element representing the create instance dialog.\r\n */\r\nfunction CreateInstanceDialog({ isNameInUse, onCreate, onCancel }) {\r\n\r\n const instanceTypes = [\r\n PRODUCTION_INSTANCE_TYPE, TEST_INSTANCE_TYPE, DEV_INSTANCE_TYPE\r\n ]\r\n\r\n const [state, setState] = useState({\r\n instanceName: \"\",\r\n instanceType: instanceTypes[0],\r\n description: \"\"\r\n });\r\n const [errors, setErrors] = useState({ instanceName: \"\" });\r\n\r\n function handleChange(e) {\r\n const errors = handleErrors(e.target.name, e.target.value);\r\n setState({ ...state, [e.target.name]: e.target.value });\r\n setErrors(errors);\r\n }\r\n\r\n function handleCancel() {\r\n onCancel();\r\n }\r\n\r\n function handleErrors(name, value) {\r\n const errors = {\r\n instanceName: \"\"\r\n };\r\n switch (name) {\r\n case \"instanceName\":\r\n if (isNameInUse(value)) {\r\n errors.instanceName = \"Name is already in use\";\r\n }\r\n if (hasSpecialCharacters(value)) {\r\n errors.instanceName = \"Name cannot contain special characters\";\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return errors;\r\n }\r\n\r\n function handleSubmit(event) {\r\n // event.preventDefault();\r\n event.target.disabled = true;\r\n onCreate({ ...state, isActive: true });\r\n }\r\n\r\n function isFormInvalid() {\r\n return state.instanceName.trim().length === 0 || errors.instanceName.length > 0;\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 Create\r\n \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nCreateInstanceDialog.defaultProps = {\r\n isNameInUse: () => { },\r\n onCreate: () => { }\r\n}\r\n\r\nexport default CreateInstanceDialog;","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function getInstances(projectId) {\r\n const request = await callApiWithAuthorization(`/api/v0/project/${projectId}/instances`);\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function createInstance(subscriptionId, projectId, properties) {\r\n const request = await callApiWithAuthorization('/api/v0/project/' + projectId + '/instance', {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n subscriptionId,\r\n properties\r\n })\r\n })\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updateInstanceAfterPublishData(instanceId, userId) {\r\n const request = await callApiWithAuthorization('/api/v0/instance/' + instanceId + '/update-published-data', {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n userId\r\n })\r\n });\r\n const response = await request.json();\r\n return response;\r\n}","import { Grid, GridColumn } from \"@progress/kendo-react-grid\";\r\nimport { Menu, MenuItem } from \"@progress/kendo-react-layout\";\r\nimport { copyToClipboard } from \"../../Helpers/miscellaneous\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\n\r\n/**\r\n * Function representing an instances grid.\r\n * \r\n * @param {Object} props - The properties object.\r\n * @param {Array} props.instances - The instances to be displayed in the grid.\r\n * @param {Function} props.onEdit - Callback function invoked when an instance is edited.\r\n * @param {Function} props.onDisable - Callback function invoked when an instance is disabled.\r\n * @param {Function} props.onEnable - Callback function invoked when an instance is enabled.\r\n * @param {Function} props.onDelete - Callback function invoked when an instance is deleted.\r\n * @returns {JSX.Element} - The JSX element representing the instances grid.\r\n * @see {@link InstancesGrid.test.jsx} for tests related to this component.\r\n */\r\nfunction InstancesGrid({ instances, onCopy, onEdit, onDisable, onEnable, onDelete }) {\r\n\r\n const organizationUrl = usePropsStoreValue(\"organizationUrl\");\r\n const projectName = usePropsStoreValue(\"projectName\");\r\n\r\n function handleEdit(_id) {\r\n onEdit(_id);\r\n }\r\n\r\n function handleDelete(_id) {\r\n onDelete(_id);\r\n }\r\n\r\n function handleDisable(_id) {\r\n onDisable(_id);\r\n }\r\n\r\n function handleEnable(_id) {\r\n onEnable(_id);\r\n }\r\n\r\n function getInstanceUrl(instanceId) {\r\n return `${process.env.REACT_APP_RUNTIME_URL}/${organizationUrl}/${projectName}_${instanceId.slice(0, 5)}`;\r\n }\r\n\r\n async function handleCopy(_id) {\r\n await copyToClipboard(getInstanceUrl(_id));\r\n // in onCopy no _id is required because we have to show a toast\r\n onCopy();\r\n }\r\n\r\n function handleVisit(_id) {\r\n debugger\r\n window.open(getInstanceUrl(_id), \"_blank\");\r\n }\r\n\r\n function shouldDisableBeDisabled() {\r\n return instances.length === 1 || instances.filter(i => i.isActive).length === 1;\r\n }\r\n\r\n return (\r\n \r\n (\r\n \r\n {props.dataIndex + 1}\r\n \r\n )} />\r\n (\r\n \r\n {props.dataItem[props.field]}\r\n {\r\n !props.dataItem.isActive &&\r\n Disabled\r\n }\r\n \r\n )}\r\n />\r\n \r\n {\r\n return (\r\n \r\n {new Date(props.dataItem.updatedDate).toLocaleString()}\r\n \r\n )\r\n }} />\r\n {/* */}\r\n \r\n (\r\n handleEdit(props.dataItem._id)}\r\n onVisit={e => handleVisit(props.dataItem._id)}\r\n onCopy={e => handleCopy(props.dataItem._id)}\r\n onDisable={e => handleDisable(props.dataItem._id)}\r\n onDelete={e => handleDelete(props.dataItem._id)}\r\n onEnable={e => handleEnable(props.dataItem._id)}\r\n disableItemDisabled={shouldDisableBeDisabled()}\r\n />\r\n )} />\r\n \r\n )\r\n}\r\n\r\nfunction ActionCell({ isActive, onVisit, onEdit, onCopy, onDisable, onDelete, onEnable, disableItemDisabled = false }) {\r\n return (\r\n \r\n e.item.data()}\r\n className=\"no-dropdown-in-menu three-dots\"\r\n >\r\n { }}\r\n linkRender={props => (\r\n \r\n )}\r\n >\r\n \r\n \r\n \r\n {\r\n isActive ?\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 InstancesGrid;","/**\r\n * @function sortInstancesByInstanceTypeAndUpdatedOn\r\n * @description Sorts instances by instance type and updated on\r\n * @param {Array} instances - Array of instances\r\n * @returns {Array} - Sorted array of instances\r\n * @example\r\n */\r\nexport function sortInstancesByInstanceTypeAndUpdatedOn(instances) {\r\n return instances.sort((a, b) => {\r\n if (a.instanceType === b.instanceType) {\r\n // date is static to make most recent first\r\n // as updated on is empty string if never updated / new instance\r\n const aUpdatedOn = a.updatedOn ? new Date(a.updatedOn) : new Date(\"1970-01-01T00:00:00.000Z\");\r\n const bUpdatedOn = b.updatedOn ? new Date(b.updatedOn) : new Date(\"1970-01-01T00:00:00.000Z\");\r\n if (aUpdatedOn > bUpdatedOn) {\r\n return -1;\r\n }\r\n if (aUpdatedOn < bUpdatedOn) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n // Production > Test > Development\r\n if (a.instanceType === \"Production\") {\r\n return -1;\r\n }\r\n if (b.instanceType === \"Production\") {\r\n return 1;\r\n }\r\n if (a.instanceType === \"Test\") {\r\n return -1;\r\n }\r\n if (b.instanceType === \"Test\") {\r\n return 1;\r\n }\r\n if (a.instanceType === \"Development\") {\r\n return -1;\r\n }\r\n if (b.instanceType === \"Development\") {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n}","import { useState } from \"react\";\r\nimport { hasSpecialCharacters } from \"../../Helpers/miscellaneous\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { PRODUCTION_INSTANCE_TYPE } from \"../CreateInstanceDialog/CONSTANTS\";\r\n\r\n/**\r\n * Function representing an update instance dialog.\r\n * \r\n * @param {Object} props - The properties object.\r\n * @param {instanceTypes.Instance} props.instance - The instance to be updated.\r\n * @param {(name: string) => boolean} props.isNameInUse - Function that takes a string parameter (name) and returns a boolean indicating if the name is in use.\r\n * @param {Function} props.onUpdate - Callback function invoked when an update is performed.\r\n * @param {Function} props.onCancel - Callback function invoked when the update process is canceled.\r\n * @returns {JSX.Element} - The JSX element representing the update instance dialog.\r\n */\r\nfunction UpdateInstanceDialog({ instance, isNameInUse, onUpdate, onCancel }) {\r\n const [state, setState] = useState({\r\n instanceName: instance.instanceName,\r\n description: instance.description,\r\n });\r\n const [errors, setErrors] = useState({ instanceName: \"\" });\r\n\r\n function handleChange(e) {\r\n const errors = handleErrors(e.target.name, e.target.value);\r\n setState({ ...state, [e.target.name]: e.target.value });\r\n setErrors(errors);\r\n }\r\n\r\n function handleCancel() {\r\n onCancel();\r\n }\r\n\r\n function handleErrors(name, value) {\r\n const errors = {\r\n instanceName: \"\"\r\n };\r\n switch (name) {\r\n case \"instanceName\":\r\n if (value.trim().toLowerCase() !== instance.instanceName.trim().toLowerCase() && isNameInUse(value)) {\r\n errors.instanceName = \"Name is already in use\";\r\n }\r\n if (hasSpecialCharacters(value)) {\r\n errors.instanceName = \"Name cannot contain special characters\";\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return errors;\r\n }\r\n\r\n function isFormChanged() {\r\n return (\r\n state.instanceName?.trim() !== instance.instanceName?.trim() ||\r\n state.description?.trim() !== instance.description?.trim()\r\n );\r\n }\r\n\r\n function shouldDisableUpdateButton() {\r\n return (\r\n state.instanceName.trim().length === 0 ||\r\n errors.instanceName.trim().length > 0 ||\r\n !isFormChanged()\r\n );\r\n }\r\n\r\n function handleSubmit(event) {\r\n // event.preventDefault();\r\n onUpdate({ ...state });\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 Update\r\n \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nUpdateInstanceDialog.defaultProps = {\r\n instance: {\r\n instanceName: \"\",\r\n description: \"\",\r\n instanceType: PRODUCTION_INSTANCE_TYPE\r\n },\r\n isNameInUse: () => { },\r\n onUpdate: () => { }\r\n}\r\n\r\nexport default UpdateInstanceDialog;","import { useEffect, useState, useContext } from \"react\";\r\nimport CreateInstanceDialog from \"../CreateInstanceDialog/CreateInstanceDialog\";\r\nimport { createInstance } from \"../../../API/Instance/Instance\";\r\nimport InstancesGrid from \"../InstancesGrid/InstancesGrid\";\r\nimport { updateNode } from \"../../Helpers/Nodes\";\r\nimport RemoveDialog from \"../../Shared/Remove/RemoveDialog\";\r\nimport { disableInstanceOnRuntime, enableInstanceOnRuntime } from \"../../Helpers/Runtime/runtime\";\r\nimport { usePropsStoreValue } from \"../../../Hooks/PropStore/usePropsStore\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport Loader from \"../../Shared/Loader/loader\";\r\nimport { sortInstancesByInstanceTypeAndUpdatedOn } from \"./utils\";\r\nimport { Content, Header } from \"../../Drawer/PageContainer\";\r\nimport Upgarde from \"../../Shared/Subscription/Upgrade\";\r\nimport UpdateInstanceDialog from \"../UpdateInstanceDialog/UpdateInstanceDialog\";\r\nimport { GlobalContext } from \"../../../Renderers/GlobalContext\";\r\nimport { updateProject, updateProjectInstance } from \"../../../API/Project/project\";\r\n\r\n/**\r\n * Function representing an instance manager.\r\n * \r\n * @param {Object} props - The properties object.\r\n * @param {Object} props.project - The properties project including instances.\r\n * @returns {JSX.Element} - The JSX element representing the instance manager.\r\n * @see {@link InstanceManager.test.jsx} for tests related to this component.\r\n */\r\nfunction InstanceManager({ project }) {\r\n\r\n const msalContext = useMsal();\r\n\r\n const { subscription, organization, user } = useContext(GlobalContext).state;\r\n\r\n // top-level props\r\n const organizationId = usePropsStoreValue(\"organizationId\");\r\n const projectName = usePropsStoreValue(\"projectName\");\r\n\r\n let clearToastTimeout, clearUpgradeDialogTimeout;\r\n\r\n // grid states\r\n const [instances, setInstances] = useState([]);\r\n\r\n // create instance dialog states\r\n const [showCreateInstanceDialog, setShowCreateInstanceDialog] = useState(false);\r\n\r\n // delete instance dialog states\r\n const [showDeleteInstanceDialog, setShowDeleteInstanceDialog] = useState(false);\r\n const [idOfInstanceToDelete, setIdOfInstanceToDelete] = useState(null);\r\n\r\n // disable instance dialog states\r\n const [showDisableInstanceDialog, setShowDisableInstanceDialog] = useState(false);\r\n const [idOfInstanceToDisable, setIdOfInstanceToDisable] = useState(null);\r\n\r\n // copy toast states\r\n const [showCopyToast, setShowCopyToast] = useState(false);\r\n\r\n // edit instance dialog states\r\n const [showEditDialog, setShowEditDialog] = useState(false);\r\n // index of instance to edit is stored to easily pass instance to edit dialog\r\n const [indexOfInstanceToEdit, setIndexOfInstanceToEdit] = useState(null);\r\n\r\n const [showLoader, setShowLoader] = useState(false);\r\n\r\n // upgrade dialog states\r\n const [showUpgradeDialog, setShowUpgradeDialog] = useState(false);\r\n\r\n useEffect(() => {\r\n setInstances(sortInstancesByInstanceTypeAndUpdatedOn(project.instances))\r\n setShowLoader(false);\r\n }, [])\r\n\r\n function toggleCreateInstanceDialog() {\r\n setShowCreateInstanceDialog(!showCreateInstanceDialog);\r\n }\r\n\r\n function isNameInUse(name) {\r\n return instances.find(instance => instance.instanceName.trim().toLowerCase() === name.trim().toLowerCase());\r\n }\r\n\r\n function toggleLoader() {\r\n setShowLoader(value => !value);\r\n }\r\n\r\n async function handleCreate(instanceDetails) {\r\n toggleLoader();\r\n const instanceResponse = await createInstance(subscription._id, project._id, instanceDetails);\r\n if (instanceResponse.limitReached) {\r\n toggleUpgradeDialog();\r\n } else {\r\n const newInstances = [...instances, instanceResponse];\r\n setInstances(\r\n sortInstancesByInstanceTypeAndUpdatedOn(newInstances)\r\n );\r\n toggleCreateInstanceDialog();\r\n }\r\n toggleLoader();\r\n }\r\n\r\n function toggleUpgradeDialog() {\r\n setShowUpgradeDialog(!showUpgradeDialog);\r\n }\r\n\r\n function toggleEditDialog() {\r\n setShowEditDialog(!showEditDialog);\r\n }\r\n\r\n function handleEditClick(_id) {\r\n const index = instances.findIndex(instance => instance._id === _id);\r\n setIndexOfInstanceToEdit(index);\r\n toggleEditDialog();\r\n }\r\n\r\n async function handleUpdate(instanceDetails) {\r\n toggleLoader();\r\n let allInstances = [...instances];\r\n let savingInstance = allInstances[indexOfInstanceToEdit];\r\n let savingDetails = {\r\n instanceName: instanceDetails.instanceName,\r\n description: instanceDetails.description\r\n }\r\n await updateProjectInstance(project._id, savingInstance._id, savingDetails);\r\n allInstances[indexOfInstanceToEdit] = {\r\n ...allInstances[indexOfInstanceToEdit],\r\n ...savingDetails\r\n }\r\n setInstances(sortInstancesByInstanceTypeAndUpdatedOn(allInstances));\r\n toggleEditDialog();\r\n toggleLoader();\r\n }\r\n\r\n function toggleDeleteDialog() {\r\n setShowDeleteInstanceDialog(!showDeleteInstanceDialog);\r\n }\r\n\r\n function handleDeleteClick(instanceId) {\r\n setIdOfInstanceToDelete(instanceId);\r\n toggleDeleteDialog();\r\n }\r\n\r\n async function deleteInstance() {\r\n toggleLoader();\r\n const updateProjectInstances = project.instances.filter(instance => instance._id !== idOfInstanceToDelete);\r\n await updateProject(project._id, { instances: updateProjectInstances });\r\n setInstances(instances.filter(instance => instance._id !== idOfInstanceToDelete));\r\n toggleDeleteDialog();\r\n toggleLoader();\r\n }\r\n\r\n function toggleDisableDialog() {\r\n setShowDisableInstanceDialog(!showDisableInstanceDialog);\r\n }\r\n\r\n function handleDisableClick(instanceId) {\r\n setIdOfInstanceToDisable(instanceId);\r\n toggleDisableDialog();\r\n }\r\n\r\n async function disableInstance() {\r\n toggleLoader();\r\n const instanceToDisable = instances.find(instance => instance._id === idOfInstanceToDisable);\r\n const idToDisable = instanceToDisable.appId || idOfInstanceToDisable;\r\n await disableInstanceOnRuntime(\r\n msalContext, organizationId, projectName, idToDisable\r\n )\r\n await updateNode(\"Instance\", idOfInstanceToDisable, { isActive: false });\r\n setInstances(instances.map(instance => {\r\n if (instance._id === idOfInstanceToDisable) {\r\n return {\r\n ...instance,\r\n isActive: false\r\n }\r\n }\r\n return instance;\r\n }));\r\n toggleDisableDialog();\r\n toggleLoader();\r\n }\r\n\r\n async function handleEnableClick(instanceId) {\r\n await updateNode(\"Instance\", instanceId, { isActive: true });\r\n await enableInstanceOnRuntime(\r\n msalContext, organizationId, projectName, instanceId\r\n )\r\n setInstances(instances.map(instance => {\r\n if (instance._id === instanceId) {\r\n return {\r\n ...instance,\r\n isActive: true\r\n }\r\n }\r\n return instance;\r\n }));\r\n }\r\n\r\n // this is explicitly set to false because the timeout is executed\r\n // when the value of showCopyToast is false (initially, on mount)\r\n // so in this case, defining a toggleCopyToast() will not work\r\n function handleCopy() {\r\n setShowCopyToast(true);\r\n if (clearToastTimeout) {\r\n clearTimeout(clearToastTimeout);\r\n }\r\n clearToastTimeout = setTimeout(() => {\r\n setShowCopyToast(false);\r\n }, 2000);\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n \r\n {\r\n showLoader && \r\n }\r\n {\r\n showCreateInstanceDialog &&\r\n \r\n }\r\n {\r\n showDeleteInstanceDialog &&\r\n \r\n }\r\n {\r\n showDisableInstanceDialog &&\r\n \r\n }\r\n {\r\n showUpgradeDialog &&\r\n \r\n }\r\n {\r\n showCopyToast &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n  \r\n URL copied\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n {\r\n showEditDialog &&\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 InstanceManager;","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Button } from '@progress/kendo-react-buttons';\r\nimport { Window } from '@progress/kendo-react-dialogs';\r\nimport { Upload } from '@progress/kendo-react-upload';\r\nimport { TabStrip, TabStripTab } from '@progress/kendo-react-layout';\r\nimport { EditorUtils } from '@progress/kendo-react-editor';\r\nimport { UploadFiletoDirectory } from '../../Helpers/DateLakeStorage'\r\n\r\nexport class InsertImageDialog extends React.Component {\r\n\r\n state = {\r\n selected: 0,\r\n files: [],\r\n organizationId: \"\",\r\n projectId: \"\"\r\n };\r\n\r\n src = null;\r\n altText = null;\r\n title = null;\r\n width = null;\r\n height = null;\r\n\r\n onTabSelect = event => this.setState({ selected: event.selected, files: [] });\r\n\r\n onClose = () => this.props.onClose.call(undefined);\r\n\r\n onAddFiles = (event) => {\r\n this.setState({\r\n files: event.newState,\r\n organizationId: this.props.organizationId,\r\n projectId: this.props.projectId\r\n })\r\n }\r\n\r\n onInsert = async () => {\r\n const { view, imageNode } = this.props;\r\n const { files } = this.state;\r\n const nodes = view.state.schema.nodes;\r\n const nodeType = nodes[imageNode];\r\n const data = {\r\n src: this.src ? this.src.value : null,\r\n title: this.title ? this.title.value : null,\r\n alt: this.altText ? this.altText.value : null,\r\n width: this.width ? this.width.value : null,\r\n height: this.height ? this.height.value : null\r\n };\r\n\r\n const attrs = Object.keys(data)\r\n .filter(key => data[key] !== null && data[key] !== '')\r\n .reduce((acc, curr) => Object.assign(acc, { [curr]: data[curr] }), {});\r\n\r\n if (files.length) {\r\n const data = new FormData();\r\n let fileName = files[0].name.split('.jpg' || '.png' || '.jpeg' || '.ico' || '.pdf' || '.docx' || '.doc' || '.txt' || \".ppt\" || \".pptx\" || \".mp4\" || \".bmp\" || '.gif')[0] + '_' + new Date().getTime() + files[0].extension\r\n data.append(`file`, files[0].getRawFile(), fileName);\r\n\r\n let path = this.state.organizationId + \"/\" + this.state.projectId + \"/PlanningImages\"\r\n data.append(\"path\", path)\r\n\r\n const response = await UploadFiletoDirectory(data)\r\n\r\n attrs.src = `${process.env.REACT_APP_DATALAKESTORAGE_URL}/${process.env.REACT_APP_DATALAKESTORAGE_CONTAINER}/${this.state.organizationId}/${this.state.projectId}/PlanningImages/${fileName}`\r\n\r\n const newImage = nodeType.createAndFill(attrs);\r\n EditorUtils.insertNode(view, newImage, true);\r\n view.focus();\r\n this.onClose();\r\n\r\n } else {\r\n const newImage = nodeType.createAndFill(attrs);\r\n EditorUtils.insertNode(view, newImage, true);\r\n view.focus();\r\n this.onClose();\r\n }\r\n }\r\n\r\n render() {\r\n const { view, imageNode } = this.props;\r\n const state = view && view.state;\r\n let attrs = {};\r\n\r\n if (state && state.selection.node &&\r\n state.selection.node.type === state.schema.nodes[imageNode]) {\r\n attrs = state.selection.node.attrs;\r\n }\r\n\r\n const fields = (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n this.altText = e}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.title = e}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.width = e}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.height = e}\r\n />\r\n
    \r\n \r\n );\r\n\r\n const buttons = (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n\r\n return ReactDOM.createPortal(\r\n (\r\n \r\n \r\n {Object.entries(attrs).length === 0 && \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {fields}\r\n {buttons}\r\n
    \r\n
    }\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.src = e}\r\n autoFocus={true}\r\n />\r\n
    \r\n {fields}\r\n {buttons}\r\n
    \r\n
    \r\n \r\n \r\n \r\n ),\r\n document.body);\r\n }\r\n}","import * as React from 'react';\r\nimport { Button } from '@progress/kendo-react-buttons';\r\nimport { EditorUtils, EditorToolsSettings } from '@progress/kendo-react-editor';\r\nimport { InsertImageDialog } from './insertImageDialog.jsx';\r\nconst imageSettings = EditorToolsSettings.image;\r\n\r\nlet organizationId = \"\"\r\nlet projectId = \"\"\r\n\r\nexport class InsertImage extends React.Component {\r\n\r\n state = { openedDialog: false }\r\n toggleDialog = () => this.setState({ openedDialog: !this.state.openedDialog })\r\n\r\n render() {\r\n const { view } = this.props;\r\n const state = view && view.state;\r\n const nodeType = state ? state.schema.nodes[imageSettings.node] : undefined;\r\n\r\n return (\r\n <>\r\n e.preventDefault()}\r\n onPointerDown={e => e.preventDefault()}\r\n title=\"Insert Image\"\r\n {...imageSettings.props}\r\n />\r\n {this.state.openedDialog && view && (\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport const setOrganizationId = (value) => {\r\n organizationId = value\r\n}\r\n\r\nexport const setProjectId = (value) => {\r\n projectId = value\r\n}","import { Editor } from './Editor';\nimport { EditorTools } from './tools/main';\nimport { EditorToolsSettings } from './config/toolsSettings';\nimport { EditorUtils } from './utils';\nimport { EditorDialogs } from './dialogs/main';\nimport { \n// prosemirror-state\nSelection, SelectionRange, TextSelection, NodeSelection, AllSelection, EditorState, Plugin, PluginKey, Transaction, \n// prosemirror-view\nDecoration, DecorationSet, EditorView, \n// prosemirror-model\nNode, ResolvedPos, NodeRange, Fragment, Slice, ReplaceError, Mark, Schema, NodeType, MarkType, ContentMatch, DOMParser, DOMSerializer, \n// prosemirror-transform\nTransform, Step, StepResult, joinPoint, canJoin, canSplit, insertPoint, dropPoint, liftTarget, findWrapping, StepMap, MapResult, Mapping, AddMarkStep, RemoveMarkStep, ReplaceStep, ReplaceAroundStep, replaceStep, \n// prosemirror-commands\ndeleteSelection, joinBackward, selectNodeBackward, joinForward, selectNodeForward, joinUp, joinDown, lift, newlineInCode, exitCode, createParagraphNear, liftEmptyBlock, splitBlock, splitBlockKeepMarks, selectParentNode, selectAll, wrapIn, setBlockType, toggleMark, autoJoin, chainCommands, pcBaseKeymap, macBaseKeymap, baseKeymap, \n// prosemirror-history\nhistory, undo, redo, undoDepth, redoDepth, \n// prosemirror-inputrules\nInputRule, inputRules, undoInputRule, emDash, ellipsis, openDoubleQuote, closeDoubleQuote, openSingleQuote, closeSingleQuote, smartQuotes, wrappingInputRule, textblockTypeInputRule, \n// prosemirror-keymap\nkeymap, keydownHandler, \n// prosemirror-schema-list\norderedList, bulletList, listItem, addListNodes, wrapInList, splitListItem, liftListItem, sinkListItem, \n// prosemirror-dropcursor\ndropCursor, \n// prosemirror-gapcursor\ngapCursor, \n// prosemirror-tables\ntableEditing, fixTables, fixTablesKey, cellAround, isInTable, selectionCell, moveCellForward, inSameTable, findCell, colCount, nextCell, removeColSpan, addColSpan, columnIsHeader, tableNodes, tableNodeTypes, CellSelection, TableMap, tableEditingKey, columnResizing, columnResizingPluginKey, updateColumnsOnResize, selectedRect, addColumn, addColumnBefore, addColumnAfter, deleteColumn, rowIsHeader, addRow, addRowBefore, addRowAfter, deleteRow, mergeCells, splitCell, splitCellWithType, setCellAttr, toggleHeader, toggleHeaderRow, toggleHeaderColumn, toggleHeaderCell, goToNextCell, deleteTable } from '@progress/kendo-editor-common';\n/**\n * An object containing the content of ProseMirror packages used at the Editor component.\n *\n * \"prosemirror-state\",\n * \"prosemirror-view\",\n * \"prosemirror-model\",\n * \"prosemirror-transform\",\n * \"prosemirror-commands\",\n * \"prosemirror-keymap\",\n * \"prosemirror-tables\",\n * \"prosemirror-schema-list\",\n * \"prosemirror-history\",\n * \"prosemirror-inputrules\",\n * \"prosemirror-dropcursor\",\n * \"prosemirror-gapcursor\"\n */\nexport var ProseMirror = {\n // prosemirror-state\n Selection: Selection,\n SelectionRange: SelectionRange,\n TextSelection: TextSelection,\n NodeSelection: NodeSelection,\n AllSelection: AllSelection,\n EditorState: EditorState,\n Plugin: Plugin,\n PluginKey: PluginKey,\n Transaction: Transaction,\n // prosemirror-view\n Decoration: Decoration,\n DecorationSet: DecorationSet,\n EditorView: EditorView,\n // prosemirror-model\n Node: Node,\n ResolvedPos: ResolvedPos,\n NodeRange: NodeRange,\n Fragment: Fragment,\n Slice: Slice,\n ReplaceError: ReplaceError,\n Mark: Mark,\n Schema: Schema,\n NodeType: NodeType,\n MarkType: MarkType,\n ContentMatch: ContentMatch,\n DOMParser: DOMParser,\n DOMSerializer: DOMSerializer,\n // prosemirror-transform\n Transform: Transform,\n Step: Step,\n StepResult: StepResult,\n joinPoint: joinPoint,\n canJoin: canJoin,\n canSplit: canSplit,\n insertPoint: insertPoint,\n dropPoint: dropPoint,\n liftTarget: liftTarget,\n findWrapping: findWrapping,\n StepMap: StepMap,\n MapResult: MapResult,\n Mapping: Mapping,\n AddMarkStep: AddMarkStep,\n RemoveMarkStep: RemoveMarkStep,\n ReplaceStep: ReplaceStep,\n ReplaceAroundStep: ReplaceAroundStep,\n replaceStep: replaceStep,\n // prosemirror-commands\n deleteSelection: deleteSelection,\n joinBackward: joinBackward,\n selectNodeBackward: selectNodeBackward,\n joinForward: joinForward,\n selectNodeForward: selectNodeForward,\n joinUp: joinUp,\n joinDown: joinDown,\n lift: lift,\n newlineInCode: newlineInCode,\n exitCode: exitCode,\n createParagraphNear: createParagraphNear,\n liftEmptyBlock: liftEmptyBlock,\n splitBlock: splitBlock,\n splitBlockKeepMarks: splitBlockKeepMarks,\n selectParentNode: selectParentNode,\n selectAll: selectAll,\n wrapIn: wrapIn,\n setBlockType: setBlockType,\n toggleMark: toggleMark,\n autoJoin: autoJoin,\n chainCommands: chainCommands,\n pcBaseKeymap: pcBaseKeymap,\n macBaseKeymap: macBaseKeymap,\n baseKeymap: baseKeymap,\n // prosemirror-history\n history: history,\n undo: undo,\n redo: redo,\n undoDepth: undoDepth,\n redoDepth: redoDepth,\n // prosemirror-inputrules\n InputRule: InputRule,\n inputRules: inputRules,\n undoInputRule: undoInputRule,\n emDash: emDash,\n ellipsis: ellipsis,\n openDoubleQuote: openDoubleQuote,\n closeDoubleQuote: closeDoubleQuote,\n openSingleQuote: openSingleQuote,\n closeSingleQuote: closeSingleQuote,\n smartQuotes: smartQuotes,\n wrappingInputRule: wrappingInputRule,\n textblockTypeInputRule: textblockTypeInputRule,\n // prosemirror-keymap\n keymap: keymap,\n keydownHandler: keydownHandler,\n // prosemirror-schema-list\n orderedList: orderedList,\n bulletList: bulletList,\n listItem: listItem,\n addListNodes: addListNodes,\n wrapInList: wrapInList,\n splitListItem: splitListItem,\n liftListItem: liftListItem,\n sinkListItem: sinkListItem,\n // prosemirror-dropcursor\n dropCursor: dropCursor,\n // prosemirror-gapcursor\n gapCursor: gapCursor,\n // prosemirror-tables\n tableEditing: tableEditing,\n fixTables: fixTables,\n fixTablesKey: fixTablesKey,\n cellAround: cellAround,\n isInTable: isInTable,\n selectionCell: selectionCell,\n moveCellForward: moveCellForward,\n inSameTable: inSameTable,\n findCell: findCell,\n colCount: colCount,\n nextCell: nextCell,\n removeColSpan: removeColSpan,\n addColSpan: addColSpan,\n columnIsHeader: columnIsHeader,\n tableNodes: tableNodes,\n tableNodeTypes: tableNodeTypes,\n CellSelection: CellSelection,\n TableMap: TableMap,\n tableEditingKey: tableEditingKey,\n columnResizing: columnResizing,\n columnResizingPluginKey: columnResizingPluginKey,\n updateColumnsOnResize: updateColumnsOnResize,\n selectedRect: selectedRect,\n addColumn: addColumn,\n addColumnBefore: addColumnBefore,\n addColumnAfter: addColumnAfter,\n deleteColumn: deleteColumn,\n rowIsHeader: rowIsHeader,\n addRow: addRow,\n addRowBefore: addRowBefore,\n addRowAfter: addRowAfter,\n deleteRow: deleteRow,\n mergeCells: mergeCells,\n splitCell: splitCell,\n splitCellWithType: splitCellWithType,\n setCellAttr: setCellAttr,\n toggleHeader: toggleHeader,\n toggleHeaderRow: toggleHeaderRow,\n toggleHeaderColumn: toggleHeaderColumn,\n toggleHeaderCell: toggleHeaderCell,\n goToNextCell: goToNextCell,\n deleteTable: deleteTable\n};\nexport { Editor, EditorTools, EditorToolsSettings, EditorUtils, EditorDialogs };\n","import { ProseMirror } from '@progress/kendo-react-editor';\r\n\r\nexport const insertImagePlugin = (onInsert) => new ProseMirror.Plugin({\r\n props: {\r\n handleDOMEvents: {\r\n paste: (view, event) => insertImages(view, event, onInsert),\r\n drop: (view, event) => insertImages(view, event, onInsert)\r\n }\r\n },\r\n key: new ProseMirror.PluginKey('insert-image-plugin')\r\n});\r\n\r\nconst insertImages = (view, event, onInsert) => {\r\n const items = (event.clipboardData && event.clipboardData.items) ||\r\n (event.dataTransfer && event.dataTransfer.items);\r\n if (items) {\r\n const files = [];\r\n let file;\r\n for (let i = 0; i < items.length; i++) {\r\n file = items[i].type.indexOf('image') !== -1 ? items[i].getAsFile() : null;\r\n if (file) {\r\n files.push(file);\r\n }\r\n }\r\n\r\n if (files.length) {\r\n event.preventDefault();\r\n }\r\n\r\n return onInsert({ view, files, event });\r\n }\r\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 ejInst.element = wrapper;\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n span = this.element.querySelector('span.e-btn-icon');\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(true)\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 { ChildProperty, extend, deleteObject, Property, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup, blankIcon) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (blankIcon) {\n var menuItem = [].slice.call(popup.getElementsByClassName('e-item'));\n menuItem.forEach(function (li) {\n if (li.style.paddingLeft || li.style.paddingRight) {\n li.removeAttribute('style');\n }\n });\n }\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (isNullOrUndefined(iconLi)) {\n return;\n }\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Event, NotifyPropertyChanges, detach, Property, EventHandler, isRippleEnabled, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, getUniqueID, rippleEffect, getComponent } from '@syncfusion/ej2-base';\nimport { attributes, Component, closest, select, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { classList, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { upDownKeyHandler } from './../common/common';\nimport { getModel, Item, setBlankIconStyle } from './../common/common';\nvar classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else if (this.createPopupOnClick && !this.isPopupCreated) {\n this.createPopup();\n this.openPopUp();\n }\n else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n this.dropDown.element.setAttribute('role', 'dialog');\n this.dropDown.element.setAttribute('aria-label', 'dropdown menu');\n if (!isNullOrUndefined(this.popupContent)) {\n this.popupContent.style.display = '';\n }\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['type'] = 'button',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n if (this.createPopupOnClick && !this.isColorPicker() && !isNullOrUndefined(this.popupContent)) {\n return this.popupContent;\n }\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? { 'role': 'separator', 'tabindex': '-1', 'aria-label': 'separator', 'aria-hidden': 'true' } : { 'role': 'menuitem', 'tabindex': '-1', 'aria-label': tempItem },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (this.enableHtmlSanitizer) {\n li.textContent = item.url ? '' : tempItem;\n }\n else {\n li.innerHTML = item.url ? '' : tempItem;\n }\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n var beforeDisabled = item.disabled;\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n var afterDisabled = eventArgs.item.disabled;\n if (beforeDisabled !== afterDisabled) {\n if (eventArgs.item.disabled) {\n li.classList.add('e-disabled');\n }\n else {\n li.classList.remove('e-disabled');\n }\n }\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-label', this.element.textContent ? this.element.textContent : 'dropdownbutton');\n if ((this.target && !this.isColorPicker() && !this.createPopupOnClick) || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n if (this.target && !this.isColorPicker() && this.createPopupOnClick) {\n this.popupContent = this.getTargetElement();\n this.popupContent.style.display = 'none';\n }\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated && this.dropDown) {\n this.dropDown.element = null;\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (!this.dropDown && this.activeElem[0].classList.contains('e-split-btn')) {\n var dropDownBtn = getComponent(this.activeElem[1], 'dropdown-btn');\n if (dropDownBtn) {\n this.dropDown = dropDownBtn.dropDown;\n }\n }\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n if (!this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n };\n DropDownButton.prototype.windowResize = function () {\n if (!this.canOpen() && this.dropDown) {\n this.dropDown.refreshPosition(this.element);\n }\n };\n DropDownButton.prototype.popupWireEvents = function () {\n if (!this.delegateMousedownHandler) {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n }\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n if (popupElement) {\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n if (this.closeActionEvents) {\n EventHandler.add(popupElement, this.closeActionEvents, this.focusoutHandler, this);\n }\n }\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n DropDownButton.prototype.popupUnWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n if (popupElement && popupElement.parentElement) {\n EventHandler.remove(popupElement, 'click', this.clickHandler);\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n if (this.closeActionEvents) {\n EventHandler.remove(popupElement, this.closeActionEvents, this.focusoutHandler);\n }\n }\n if (isRippleEnabled && this.rippleFn) {\n this.rippleFn();\n }\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode === 13 && this.activeElem[0].classList.contains('e-split-btn')) {\n this.triggerSelect(e);\n this.activeElem[0].focus();\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.focusoutHandler = function (e) {\n if (this.isPopupCreated && !this.canOpen()) {\n var liTarget = e.relatedTarget;\n if (liTarget && liTarget.className.indexOf('e-item') > -1) {\n var li = this.getLI(liTarget);\n if (li) {\n var liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n var item = this.items[liIdx];\n if (item) {\n var selectEventArgs = { element: li, item: item, event: e };\n this.trigger('select', selectEventArgs);\n }\n }\n }\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || (this.target && this.target !== '' && !this.isColorPicker() && !this.createPopupOnClick)) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var li = this.getLI(e.target);\n if (li) {\n this.triggerSelect(e);\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.triggerSelect = function (e) {\n var eventArgs;\n var liIdx;\n var item;\n var li = this.getLI(e.target);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n var isReact = false;\n var popupElem = this.getPopUpElement();\n if (!this.target) {\n this.createItems(true);\n }\n else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n _this.element.setAttribute('aria-owns', _this.getPopUpElement().id);\n if (ul_1) {\n ul_1.focus();\n }\n if (_this.enableRtl && ul_1.parentElement.style.left !== '0px') {\n var wrapperWidth = void 0;\n if (_this.element.parentElement && _this.element.parentElement.classList.contains('e-split-btn-wrapper')) {\n wrapperWidth = _this.element.parentElement.offsetWidth;\n }\n else {\n wrapperWidth = _this.element.offsetWidth;\n }\n var popupRect = ul_1.parentElement.offsetWidth - wrapperWidth;\n var popupLeft = parseFloat(ul_1.parentElement.style.left) - popupRect;\n if (popupLeft < 0) {\n popupLeft = 0;\n }\n ul_1.parentElement.style.left = popupLeft + \"px\";\n }\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var popupElement = _this.getPopUpElement();\n if (popupElement) {\n EventHandler.remove(popupElement, 'keydown', _this.keyBoardHandler);\n }\n _this.popupUnWireEvents();\n var ul_2 = _this.getULElement();\n var selectedLi = void 0;\n if (ul_2) {\n selectedLi = ul_2.querySelector('.e-selected');\n }\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n _this.element.removeAttribute('aria-owns');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target || _this.isColorPicker() || (_this.target && !_this.isColorPicker())) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n }\n else {\n if (ul) {\n ul.focus();\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n if (!this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1 || oldProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n var arrowSpan = this.element.querySelector('span.e-caret');\n newProp.cssClass.indexOf(classNames.VERTICAL) > -1 ? classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right'])\n : classList(arrowSpan, ['e-icon-right'], ['e-icon-bottom']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(true)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Event, remove, addClass, removeClass, detach, getValue, setValue } from '@syncfusion/ej2-base';\nimport { EventHandler, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { attributes, getUniqueID, getInstance, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getModel, Item } from './../common/common';\nimport { DropDownButton } from '../drop-down-button/drop-down-button';\nvar RTL = 'e-rtl';\nvar TAGNAME = 'EJS-SPLITBUTTON';\n/**\n * SplitButton component has primary and secondary button. Primary button is used to select\n * default action and secondary button is used to toggle contextual overlays for displaying list of\n * action items. It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n __extends(SplitButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SplitButtonModel} options - Specifies the splitbutton model\n * @param {string|HTMLButtonElement} element - Specifies the element\n * @hidden\n */\n function SplitButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize Angular support.\n *\n * @private\n * @returns {void}\n */\n SplitButton.prototype.preRender = function () {\n var ele = this.element;\n if (ele.tagName === TAGNAME) {\n var ejInstance = getValue('ej2_instances', ele);\n var btn = this.createElement('button', { attrs: { 'type': 'button' } });\n var wrapper = this.createElement(TAGNAME, { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n btn.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = btn;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.wrapper = wrapper;\n this.element = ele;\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the Component rendering.\n *\n * @returns {void}\n * @private\n */\n SplitButton.prototype.render = function () {\n this.initWrapper();\n this.createPrimaryButton();\n this.renderControl();\n };\n SplitButton.prototype.renderControl = function () {\n this.createSecondaryButton();\n this.setActiveElem([this.element, this.secondaryBtnObj.element]);\n this.setAria();\n this.wireEvents();\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n SplitButton.prototype.addItems = function (items, text) {\n _super.prototype.addItems.call(this, items, text);\n this.secondaryBtnObj.items = this.items;\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n SplitButton.prototype.removeItems = function (items, isUniqueId) {\n _super.prototype.removeItems.call(this, items, isUniqueId);\n this.secondaryBtnObj.items = this.items;\n };\n SplitButton.prototype.initWrapper = function () {\n if (!this.wrapper) {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n }\n this.element.classList.remove('e-' + this.getModuleName());\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n SplitButton.prototype.createPrimaryButton = function () {\n var btnModel = {\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n content: this.content,\n disabled: this.disabled\n };\n this.primaryBtnObj = new Button(btnModel);\n this.primaryBtnObj.createElement = this.createElement;\n this.primaryBtnObj.appendTo(this.element);\n this.element.classList.add('e-' + this.getModuleName());\n this.element.type = 'button';\n this.wrapper.appendChild(this.element);\n };\n SplitButton.prototype.createSecondaryButton = function () {\n var _this = this;\n var btnElem = this.createElement('button', {\n className: 'e-icon-btn',\n attrs: { 'tabindex': '-1' },\n id: this.element.id + '_dropdownbtn'\n });\n this.wrapper.appendChild(btnElem);\n var dropDownBtnModel = {\n cssClass: this.cssClass,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n items: this.items,\n target: this.target,\n createPopupOnClick: this.createPopupOnClick\n };\n dropDownBtnModel.beforeItemRender = function (args) {\n if (_this.createPopupOnClick) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n _this.trigger('beforeItemRender', args);\n };\n dropDownBtnModel.open = function (args) {\n _this.trigger('open', args);\n };\n dropDownBtnModel.close = function (args) {\n _this.trigger('close', args);\n };\n dropDownBtnModel.select = function (args) {\n _this.trigger('select', args);\n };\n dropDownBtnModel.beforeOpen = function (args) {\n if (_this.createPopupOnClick && _this.items.length == 0) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n dropDownBtnModel.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeClose', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n this.secondaryBtnObj = new DropDownButton(dropDownBtnModel);\n this.secondaryBtnObj.createElement = this.createElement;\n this.secondaryBtnObj.appendTo(btnElem);\n if (!this.createPopupOnClick) {\n this.secondaryBtnObj.dropDown.relateTo = this.wrapper;\n this.dropDown = this.secondaryBtnObj.dropDown;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.isPopupCreated = this.secondaryBtnObj.isPopupCreated;\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n if (this.disabled) {\n this.wrapper.classList.add('e-splitbtn-disabled');\n }\n };\n SplitButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-expanded': 'false', 'aria-haspopup': 'true',\n 'aria-label': this.element.textContent ? this.element.textContent + ' splitbutton' : 'splitbutton', 'aria-owns': this.element.id + '_dropdownbtn-popup'\n });\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SplitButton.prototype.getModuleName = function () {\n return 'split-btn';\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @returns {void}\n */\n SplitButton.prototype.toggle = function () {\n this.secondaryBtnObj.toggle();\n };\n SplitButton.prototype.destroy = function () {\n var _this = this;\n var classList = [RTL];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n if (this.element) {\n var element = document.getElementById(this.element.id);\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n }\n else {\n removeClass([this.element], classList);\n ['aria-label', 'aria-haspopup', 'aria-expanded', 'aria-owns', 'type'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n _super.prototype.destroy.call(this);\n if (this.element && !this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.refreshing && this.isAngular) {\n this.element = this.wrapper;\n ['e-control', 'e-split-btn', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n this.wrapper = null;\n };\n SplitButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow',\n enter: 'enter'\n }\n });\n };\n SplitButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n };\n SplitButton.prototype.primaryBtnClickHandler = function () {\n this.trigger('click', { element: this.element });\n };\n SplitButton.prototype.btnKeyBoardHandler = function (e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n case 'enter':\n this.clickHandler(e);\n if (this.getPopUpElement() && !this.getPopUpElement().classList.contains('e-popup-close')) {\n this.element.classList.remove('e-active');\n this.secondaryBtnObj.element.classList.add('e-active');\n }\n else {\n this.secondaryBtnObj.element.classList.remove('e-active');\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SplitButtonModel} newProp - Specifies new properties\n * @param {SplitButtonModel} oldProp - Specifies old properties\n * @returns {void}\n */\n SplitButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var model = ['content', 'iconCss', 'iconPosition', 'cssClass', 'disabled', 'enableRtl'];\n this.primaryBtnObj.setProperties(getModel(newProp, model));\n model = ['beforeOpen', 'beforeItemRender', 'select', 'open',\n 'close', 'cssClass', 'disabled', 'enableRtl', 'createPopupOnClick'];\n if (Object.keys(newProp).indexOf('items') > -1) {\n this.secondaryBtnObj.items = newProp.items;\n this.secondaryBtnObj.dataBind();\n }\n this.secondaryBtnObj.setProperties(getModel(newProp, model));\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n addClass([this.wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.wrapper], RTL);\n }\n else {\n removeClass([this.wrapper], RTL);\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n addClass([this.wrapper], 'e-splitbtn-disabled');\n }\n else {\n removeClass([this.wrapper], 'e-splitbtn-disabled');\n }\n }\n }\n };\n /**\n * Sets the focus to SplitButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n SplitButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], SplitButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], SplitButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Collection([], Item)\n ], SplitButton.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"created\", void 0);\n SplitButton = __decorate([\n NotifyPropertyChanges\n ], SplitButton);\n return SplitButton;\n}(DropDownButton));\nexport { SplitButton };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } 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, destroy as collisionDestroy } 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 (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform != this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue(\"transform\");\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(\",\").map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\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(target);\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 var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\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 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 if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\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 var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\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.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\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 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.addDescribedBy(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.addDescribedBy(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 && (showAnimation.effect == 'None' || showAnimation.effect == 'FadeIn' ||\n (this.isReact && typeof ctrlObj.content != 'string'))) {\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 === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.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' || this.isReact;\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.getBoundingClientRect().left) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.getBoundingClientRect().top) + 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(target);\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 var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\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, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.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.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\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 && this.animation.close.effect == 'None') {\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(event.target);\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 (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.isSticky) {\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 var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', 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 var targetList = [].slice.call(selectAll(this.target, this.element));\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', 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 if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\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 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\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 if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\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 collisionDestroy();\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(true)\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})();\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', 'aria-label': 'hidden', '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 this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\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 if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\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 element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { L10n, Internationalization } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, setStyleAttribute, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, Browser, SanitizeHtmlHelper, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Tooltip, getZindexPartial } from '@syncfusion/ej2-popups';\n/**\n * Configures the ticks data of the Slider.\n */\nvar TicksData = /** @class */ (function (_super) {\n __extends(TicksData, _super);\n function TicksData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('None')\n ], TicksData.prototype, \"placement\", void 0);\n __decorate([\n Property(10)\n ], TicksData.prototype, \"largeStep\", void 0);\n __decorate([\n Property(1)\n ], TicksData.prototype, \"smallStep\", void 0);\n __decorate([\n Property(false)\n ], TicksData.prototype, \"showSmallTicks\", void 0);\n __decorate([\n Property(null)\n ], TicksData.prototype, \"format\", void 0);\n return TicksData;\n}(ChildProperty));\nexport { TicksData };\n/**\n * It illustrates the color track data in slider.\n * {% codeBlock src='slider/colorrange/index.md' %}{% endcodeBlock %}\n */\nvar ColorRangeData = /** @class */ (function (_super) {\n __extends(ColorRangeData, _super);\n function ColorRangeData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"end\", void 0);\n return ColorRangeData;\n}(ChildProperty));\nexport { ColorRangeData };\n/**\n * It illustrates the limit data in slider.\n * {% codeBlock src='slider/limits/index.md' %}{% endcodeBlock %}\n */\nvar LimitData = /** @class */ (function (_super) {\n __extends(LimitData, _super);\n function LimitData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LimitData.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minEnd\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxEnd\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"startHandleFixed\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"endHandleFixed\", void 0);\n return LimitData;\n}(ChildProperty));\nexport { LimitData };\n/**\n * It illustrates the tooltip data in slider.\n */\nvar TooltipData = /** @class */ (function (_super) {\n __extends(TooltipData, _super);\n function TooltipData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipData.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Before')\n ], TooltipData.prototype, \"placement\", void 0);\n __decorate([\n Property('Focus')\n ], TooltipData.prototype, \"showOn\", void 0);\n __decorate([\n Property(false)\n ], TooltipData.prototype, \"isVisible\", void 0);\n __decorate([\n Property(null)\n ], TooltipData.prototype, \"format\", void 0);\n return TooltipData;\n}(ChildProperty));\nexport { TooltipData };\nvar bootstrapTooltipOffset = 6;\nvar bootstrap4TooltipOffset = 3;\nvar classNames = {\n root: 'e-slider',\n rtl: 'e-rtl',\n sliderHiddenInput: 'e-slider-input',\n controlWrapper: 'e-control-wrapper',\n sliderHandle: 'e-handle',\n rangeBar: 'e-range',\n sliderButton: 'e-slider-button',\n firstButton: 'e-first-button',\n secondButton: 'e-second-button',\n scale: 'e-scale',\n tick: 'e-tick',\n large: 'e-large',\n tickValue: 'e-tick-value',\n sliderTooltip: 'e-slider-tooltip',\n sliderHover: 'e-slider-hover',\n sliderFirstHandle: 'e-handle-first',\n sliderSecondHandle: 'e-handle-second',\n sliderDisabled: 'e-disabled',\n sliderContainer: 'e-slider-container',\n horizontalTooltipBefore: 'e-slider-horizontal-before',\n horizontalTooltipAfter: 'e-slider-horizontal-after',\n verticalTooltipBefore: 'e-slider-vertical-before',\n verticalTooltipAfter: 'e-slider-vertical-after',\n materialTooltip: 'e-material-tooltip',\n materialTooltipOpen: 'e-material-tooltip-open',\n materialTooltipActive: 'e-tooltip-active',\n materialSlider: 'e-material-slider',\n sliderTrack: 'e-slider-track',\n sliderHorizantalColor: 'e-slider-horizantal-color',\n sliderVerticalColor: 'e-slider-vertical-color',\n sliderHandleFocused: 'e-handle-focused',\n verticalSlider: 'e-vertical',\n horizontalSlider: 'e-horizontal',\n sliderHandleStart: 'e-handle-start',\n sliderTooltipStart: 'e-material-tooltip-start',\n sliderTabHandle: 'e-tab-handle',\n sliderButtonIcon: 'e-button-icon',\n sliderSmallSize: 'e-small-size',\n sliderTickPosition: 'e-tick-pos',\n sliderFirstTick: 'e-first-tick',\n sliderLastTick: 'e-last-tick',\n sliderButtonClass: 'e-slider-btn',\n sliderTooltipWrapper: 'e-tooltip-wrap',\n sliderTabTrack: 'e-tab-track',\n sliderTabRange: 'e-tab-range',\n sliderActiveHandle: 'e-handle-active',\n sliderMaterialHandle: 'e-material-handle',\n sliderMaterialRange: 'e-material-range',\n sliderMaterialDefault: 'e-material-default',\n materialTooltipShow: 'e-material-tooltip-show',\n materialTooltipHide: 'e-material-tooltip-hide',\n readonly: 'e-read-only',\n limits: 'e-limits',\n limitBarDefault: 'e-limit-bar',\n limitBarFirst: 'e-limit-first',\n limitBarSecond: 'e-limit-second',\n dragHorizontal: 'e-drag-horizontal',\n dragVertical: 'e-drag-vertical'\n};\n/**\n * The Slider component allows the user to select a value or range\n * of values in-between a min and max range, by dragging the handle over the slider bar.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Slider = /** @class */ (function (_super) {\n __extends(Slider, _super);\n function Slider(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.horDir = 'left';\n _this.verDir = 'bottom';\n _this.transition = {\n handle: 'left .4s cubic-bezier(.25, .8, .25, 1), right .4s cubic-bezier(.25, .8, .25, 1), ' +\n 'top .4s cubic-bezier(.25, .8, .25, 1) , bottom .4s cubic-bezier(.25, .8, .25, 1)',\n rangeBar: 'all .4s cubic-bezier(.25, .8, .25, 1)'\n };\n _this.transitionOnMaterialTooltip = {\n handle: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, top 1ms ease-out',\n rangeBar: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, width 1ms ease-out, height 1ms ease-out'\n };\n _this.scaleTransform = 'transform .4s cubic-bezier(.25, .8, .25, 1)';\n _this.customAriaText = null;\n _this.drag = true;\n _this.isDragComplete = false;\n _this.initialTooltip = true;\n return _this;\n }\n Slider.prototype.preRender = function () {\n // eslint-disable-next-line\n var localeText = { incrementTitle: 'Increase', decrementTitle: 'Decrease' };\n this.l10n = new L10n('slider', localeText, this.locale);\n this.isElementFocused = false;\n this.tickElementCollection = [];\n this.tooltipFormatInfo = {};\n this.ticksFormatInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.formChecker();\n };\n Slider.prototype.formChecker = function () {\n var formElement = closest(this.element, 'form');\n if (formElement) {\n this.isForm = true;\n // this condition needs to be checked, if the slider is going to be refreshed by `refresh()`\n // then we need to revert the slider `value` back to `formResetValue` to preserve the initial value\n if (!isNullOrUndefined(this.formResetValue)) {\n this.setProperties({ 'value': this.formResetValue }, true);\n }\n this.formResetValue = this.value;\n if (this.type === 'Range' &&\n (isNullOrUndefined(this.formResetValue) || typeof (this.formResetValue) !== 'object')) {\n this.formResetValue = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n else if (isNullOrUndefined(this.formResetValue)) {\n this.formResetValue = parseFloat(formatUnit(this.min));\n }\n this.formElement = formElement;\n }\n else {\n this.isForm = false;\n }\n };\n Slider.prototype.initCultureFunc = function () {\n this.internationalization = new Internationalization(this.locale);\n };\n Slider.prototype.initCultureInfo = function () {\n this.tooltipFormatInfo.format = (!isNullOrUndefined(this.tooltip.format)) ? this.tooltip.format : null;\n this.ticksFormatInfo.format = (!isNullOrUndefined(this.ticks.format)) ? this.ticks.format : null;\n };\n Slider.prototype.formatString = function (value, formatInfo) {\n var formatValue = null;\n var formatString = null;\n if ((value || value === 0)) {\n formatValue = this.formatNumber(value);\n var numberOfDecimals = this.numberOfDecimals(value);\n formatString = this.internationalization.getNumberFormat(formatInfo)(this.makeRoundNumber(value, numberOfDecimals));\n }\n return { elementVal: formatValue, formatString: formatString };\n };\n Slider.prototype.formatNumber = function (value) {\n var numberOfDecimals = this.numberOfDecimals(value);\n return this.internationalization.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(value);\n };\n Slider.prototype.numberOfDecimals = function (value) {\n var decimalPart = value.toString().split('.')[1];\n var numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n return numberOfDecimals;\n };\n Slider.prototype.makeRoundNumber = function (value, precision) {\n var decimals = precision || 0;\n return Number(value.toFixed(decimals));\n };\n Slider.prototype.fractionalToInteger = function (value) {\n value = (this.numberOfDecimals(value) === 0) ? Number(value).toFixed(this.noOfDecimals) : value;\n var tens = 1;\n for (var i = 0; i < this.noOfDecimals; i++) {\n tens *= 10;\n }\n value = Number((value * tens).toFixed(0));\n return value;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n */\n Slider.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.initRender();\n this.wireEvents();\n this.setZindex();\n this.renderComplete();\n if (this.element.tagName === 'EJS-SLIDER') {\n if (this.getTheme(this.sliderContainer) == 'none') {\n setTimeout(function () {\n _this.refresh();\n }, 0);\n }\n }\n };\n Slider.prototype.initialize = function () {\n addClass([this.element], classNames.root);\n this.setCSSClass();\n };\n Slider.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width) && !isNullOrUndefined(this.sliderContainer)) {\n if (typeof width === 'number') {\n this.sliderContainer.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.sliderContainer.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n Slider.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Slider.prototype.setEnabled = function () {\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.add(classNames.sliderDisabled);\n }\n this.unwireEvents();\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.remove(classNames.sliderDisabled);\n }\n this.wireEvents();\n }\n };\n Slider.prototype.getTheme = function (container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n };\n /**\n * Initialize the rendering\n *\n * @private\n */\n Slider.prototype.initRender = function () {\n this.sliderContainer = this.createElement('div', { className: classNames.sliderContainer + ' ' + classNames.controlWrapper });\n this.element.parentNode.insertBefore(this.sliderContainer, this.element);\n this.sliderContainer.appendChild(this.element);\n this.sliderTrack = this.createElement('div', { className: classNames.sliderTrack });\n this.element.appendChild(this.sliderTrack);\n this.setElementWidth(this.width);\n this.element.tabIndex = -1;\n this.getThemeInitialization();\n this.setHandler();\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setOrientClass();\n this.hiddenInput = (this.createElement('input', {\n attrs: {\n type: 'hidden', value: (isNullOrUndefined(this.value) ? this.min.toString() : this.value.toString()),\n name: this.element.getAttribute('name') || this.element.getAttribute('id') ||\n '_' + (Math.random() * 1000).toFixed(0) + 'slider', class: classNames.sliderHiddenInput\n }\n }));\n this.hiddenInput.tabIndex = -1;\n this.sliderContainer.appendChild(this.hiddenInput);\n if (this.showButtons) {\n this.setButtons();\n }\n this.setEnableRTL();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n else {\n this.value = isNullOrUndefined(this.value) ? parseFloat(formatUnit(this.min.toString())) : this.value;\n }\n this.previousVal = this.type !== 'Range' ? this.checkHandleValue(parseFloat(formatUnit(this.value.toString()))) :\n [this.checkHandleValue(parseFloat(formatUnit(this.value[0].toString()))),\n this.checkHandleValue(parseFloat(formatUnit(this.value[1].toString())))];\n this.previousChanged = this.previousVal;\n if (!isNullOrUndefined(this.element.hasAttribute('name'))) {\n this.element.removeAttribute('name');\n }\n this.setValue();\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n }\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n }\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n if (this.readonly) {\n addClass([this.sliderContainer], [classNames.readonly]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.readonly]);\n }\n };\n Slider.prototype.getThemeInitialization = function () {\n this.isMaterial = this.getTheme(this.sliderContainer) === 'material'\n || this.getTheme(this.sliderContainer) === 'material-dark';\n this.isMaterial3 = this.getTheme(this.sliderContainer) === 'Material3'\n || this.getTheme(this.sliderContainer) === 'Material3-dark';\n this.isBootstrap = this.getTheme(this.sliderContainer) === 'bootstrap'\n || this.getTheme(this.sliderContainer) === 'bootstrap-dark';\n this.isBootstrap4 = this.getTheme(this.sliderContainer) === 'bootstrap4';\n this.isTailwind = this.getTheme(this.sliderContainer) === 'tailwind' || this.getTheme(this.sliderContainer) === 'tailwind-dark';\n this.isBootstrap5 = this.getTheme(this.sliderContainer) === 'bootstrap5';\n this.isFluent = this.getTheme(this.sliderContainer) === 'FluentUI';\n this.isMaterialTooltip = (this.isMaterial || this.isMaterial3) && this.type !== 'Range' && this.tooltip.isVisible;\n };\n Slider.prototype.createRangeBar = function () {\n if (this.type !== 'Default') {\n this.rangeBar = (this.createElement('div', { attrs: { class: classNames.rangeBar } }));\n this.element.appendChild(this.rangeBar);\n if (this.drag && this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n this.rangeBar.classList.add(classNames.dragHorizontal);\n }\n else {\n this.rangeBar.classList.add(classNames.dragVertical);\n }\n }\n }\n };\n Slider.prototype.createLimitBar = function () {\n var firstElementClassName = this.type !== 'Range' ? classNames.limitBarDefault :\n classNames.limitBarFirst;\n firstElementClassName += ' ' + classNames.limits;\n this.limitBarFirst = (this.createElement('div', {\n attrs: { class: firstElementClassName }\n }));\n this.element.appendChild(this.limitBarFirst);\n if (this.type === 'Range') {\n this.limitBarSecond = (this.createElement('div', {\n attrs: {\n class: classNames.limitBarSecond + ' ' + classNames.limits\n }\n }));\n this.element.appendChild(this.limitBarSecond);\n }\n };\n Slider.prototype.setOrientClass = function () {\n if (this.orientation !== 'Vertical') {\n this.sliderContainer.classList.remove(classNames.verticalSlider);\n this.sliderContainer.classList.add(classNames.horizontalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'horizontal');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'horizontal');\n }\n }\n else {\n this.sliderContainer.classList.remove(classNames.horizontalSlider);\n this.sliderContainer.classList.add(classNames.verticalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'vertical');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'vertical');\n }\n }\n };\n Slider.prototype.setAriaAttributes = function (element) {\n var _this = this;\n var min = this.min;\n var max = this.max;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n min = this.customValues[0];\n max = this.customValues[this.customValues.length - 1];\n }\n if (this.type !== 'Range') {\n attributes(element, {\n 'aria-valuemin': min.toString(), 'aria-valuemax': max.toString()\n });\n }\n else {\n var range = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n [[min.toString(), (this.customValues[this.value[1]]).toString()],\n [(this.customValues[this.value[0]]).toString(), max.toString()]] :\n [[min.toString(), this.value[1].toString()], [this.value[0].toString(), max.toString()]];\n range.forEach(function (range, index) {\n var element = index === 0 ? _this.firstHandle : _this.secondHandle;\n if (element) {\n attributes(element, {\n 'aria-valuemin': range[0], 'aria-valuemax': range[1]\n });\n }\n });\n }\n };\n Slider.prototype.createSecondHandle = function () {\n this.secondHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.secondHandle.classList.add(classNames.sliderSecondHandle);\n this.element.appendChild(this.secondHandle);\n };\n Slider.prototype.createFirstHandle = function () {\n this.firstHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.firstHandle.classList.add(classNames.sliderFirstHandle);\n this.element.appendChild(this.firstHandle);\n if (this.isMaterialTooltip) {\n this.materialHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle + ' ' +\n classNames.sliderMaterialHandle\n }\n });\n this.element.appendChild(this.materialHandle);\n }\n };\n Slider.prototype.wireFirstHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.firstHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.firstHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.firstHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.firstHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.firstHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.firstHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.firstHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.wireSecondHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.secondHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.secondHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.secondHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.secondHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.secondHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.secondHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.secondHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.secondHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.handleStart = function () {\n if (this.type !== 'Range') {\n this.firstHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.isMaterialTooltip) {\n this.materialHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.tooltipElement) {\n this.tooltipElement.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderTooltipStart);\n }\n }\n }\n };\n Slider.prototype.transitionEnd = function (e) {\n if (e.propertyName !== 'transform') {\n this.handleStart();\n if (!this.enableAnimation) {\n this.getHandle().style.transition = 'none';\n }\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if ((this.isMaterial || this.isMaterial3) && this.tooltip.isVisible && this.type === 'Default') {\n this.tooltipElement.style.transition = this.transition.handle;\n }\n this.tooltipToggle(this.getHandle());\n this.closeTooltip();\n }\n };\n Slider.prototype.handleFocusOut = function () {\n if (this.firstHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.firstHandle.classList.remove(classNames.sliderHandleFocused);\n }\n if (this.type === 'Range') {\n if (this.secondHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.secondHandle.classList.remove(classNames.sliderHandleFocused);\n }\n }\n };\n Slider.prototype.handleFocus = function (e) {\n this.focusSliderElement();\n this.sliderBarClick(e);\n if (e.currentTarget === this.firstHandle) {\n this.firstHandle.classList.add(classNames.sliderHandleFocused);\n this.firstHandle.classList.add(classNames.sliderTabHandle);\n }\n else {\n this.secondHandle.classList.add(classNames.sliderHandleFocused);\n this.secondHandle.classList.add(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.handleOver = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover') {\n this.tooltipToggle(e.currentTarget);\n }\n if (this.type === 'Default') {\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.handleLeave = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover' &&\n !e.currentTarget.classList.contains(classNames.sliderHandleFocused) &&\n !e.currentTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeTooltip();\n }\n };\n Slider.prototype.setHandler = function () {\n this.createFirstHandle();\n if (this.type === 'Range') {\n this.createSecondHandle();\n }\n };\n Slider.prototype.setEnableRTL = function () {\n this.enableRtl && this.orientation !== 'Vertical' ? addClass([this.sliderContainer], classNames.rtl) :\n removeClass([this.sliderContainer], classNames.rtl);\n var preDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (this.enableRtl) {\n this.horDir = 'right';\n this.verDir = 'bottom';\n }\n else {\n this.horDir = 'left';\n this.verDir = 'bottom';\n }\n var currDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (preDir !== currDir) {\n if (this.orientation === 'Horizontal') {\n setStyleAttribute(this.firstHandle, { 'right': '', 'left': 'auto' });\n if (this.type === 'Range') {\n setStyleAttribute(this.secondHandle, { 'top': '', 'left': 'auto' });\n }\n }\n }\n this.setBarColor();\n };\n Slider.prototype.tooltipValue = function () {\n var _this = this;\n var text;\n var args = {\n value: this.value,\n text: ''\n };\n if (this.initialTooltip) {\n this.initialTooltip = false;\n this.setTooltipContent();\n args.text = text = (typeof (this.tooltipObj.content) === 'function' ? this.tooltipObj.content() : this.tooltipObj.content);\n this.trigger('tooltipChange', args, function (observedArgs) {\n _this.addTooltipClass(observedArgs.text);\n if (text !== observedArgs.text) {\n _this.customAriaText = observedArgs.text;\n if (_this.enableHtmlSanitizer) {\n observedArgs.text = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n observedArgs.text = observedArgs.text.toString();\n }\n var contentTemp = function () {\n return observedArgs.text;\n };\n _this.tooltipObj.content = initializeCSPTemplate(contentTemp);\n _this.setAriaAttrValue(_this.firstHandle);\n if (_this.type === 'Range') {\n _this.setAriaAttrValue(_this.secondHandle);\n }\n }\n });\n if (this.isMaterialTooltip) {\n this.setPreviousVal('change', this.value);\n }\n }\n };\n Slider.prototype.setTooltipContent = function () {\n var content;\n content = this.formatContent(this.tooltipFormatInfo, false);\n var contentTemp = function () {\n return content;\n };\n this.tooltipObj.content = initializeCSPTemplate(contentTemp);\n };\n Slider.prototype.formatContent = function (formatInfo, ariaContent) {\n var content = '';\n var handle1 = this.handleVal1;\n var handle2 = this.handleVal2;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n handle1 = this.customValues[this.handleVal1];\n handle2 = this.customValues[this.handleVal2];\n }\n if (!ariaContent) {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle2, formatInfo)\n .formatString + ' - ' + this.formatString(handle1, formatInfo).formatString) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle1, formatInfo)\n .formatString + ' - ' + this.formatString(handle2, formatInfo).formatString) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(formatInfo.format)) ?\n this.formatString(handle1, formatInfo).formatString : handle1.toString();\n }\n }\n return content;\n }\n else {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle2, formatInfo).elementVal + ' - ' +\n this.formatString(handle1, formatInfo).elementVal) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle1, formatInfo).elementVal + ' - ' +\n this.formatString(handle2, formatInfo).elementVal) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n this.formatString(handle1, formatInfo).elementVal : handle1.toString();\n }\n }\n return content;\n }\n };\n Slider.prototype.addTooltipClass = function (content) {\n if (this.isMaterialTooltip) {\n var count = content.toString().length;\n if (!this.tooltipElement) {\n var cssClass = count > 4 ? classNames.sliderMaterialRange : classNames.sliderMaterialDefault;\n this.tooltipObj.cssClass = classNames.sliderTooltip + ' ' + cssClass;\n }\n else {\n var cssClass = count > 4 ?\n { oldCss: classNames.sliderMaterialDefault, newCss: classNames.sliderMaterialRange } :\n { oldCss: classNames.sliderMaterialRange, newCss: classNames.sliderMaterialDefault };\n this.tooltipElement.classList.remove(cssClass.oldCss);\n if (!this.tooltipElement.classList.contains(cssClass.newCss)) {\n this.tooltipElement.classList.add(cssClass.newCss);\n this.tooltipElement.style.transform = count > 4 ? 'scale(1)' :\n this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n }\n };\n Slider.prototype.tooltipPlacement = function () {\n return this.orientation === 'Horizontal' ? (this.tooltip.placement === 'Before' ? 'TopCenter' : 'BottomCenter') :\n (this.tooltip.placement === 'Before' ? 'LeftCenter' : 'RightCenter');\n };\n Slider.prototype.tooltipBeforeOpen = function (args) {\n this.tooltipElement = args.element;\n if (this.tooltip.cssClass) {\n addClass([this.tooltipElement], this.tooltip.cssClass.split(' ').filter(function (css) { return css; }));\n }\n args.target.removeAttribute('aria-describedby');\n if (this.isMaterialTooltip) {\n this.tooltipElement.firstElementChild.classList.add(classNames.materialTooltipHide);\n this.handleStart();\n this.setTooltipTransform();\n }\n };\n Slider.prototype.tooltipCollision = function (position) {\n if (this.isBootstrap || this.isBootstrap4 || ((this.isMaterial || this.isMaterial3) && !this.isMaterialTooltip)) {\n var tooltipOffsetValue = this.isBootstrap4 ? bootstrap4TooltipOffset : bootstrapTooltipOffset;\n switch (position) {\n case 'TopCenter':\n this.tooltipObj.setProperties({ 'offsetY': -(tooltipOffsetValue) }, false);\n break;\n case 'BottomCenter':\n this.tooltipObj.setProperties({ 'offsetY': tooltipOffsetValue }, false);\n break;\n case 'LeftCenter':\n this.tooltipObj.setProperties({ 'offsetX': -(tooltipOffsetValue) }, false);\n break;\n case 'RightCenter':\n this.tooltipObj.setProperties({ 'offsetX': tooltipOffsetValue }, false);\n break;\n }\n }\n };\n Slider.prototype.materialTooltipEventCallBack = function (event) {\n this.sliderBarClick(event);\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.wireMaterialTooltipEvent = function (destroy) {\n if (this.isMaterialTooltip) {\n if (!destroy) {\n EventHandler.add(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack, this);\n }\n else {\n EventHandler.remove(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack);\n }\n }\n };\n Slider.prototype.tooltipPositionCalculation = function (position) {\n var cssClass;\n switch (position) {\n case 'TopCenter':\n cssClass = classNames.horizontalTooltipBefore;\n break;\n case 'BottomCenter':\n cssClass = classNames.horizontalTooltipAfter;\n break;\n case 'LeftCenter':\n cssClass = classNames.verticalTooltipBefore;\n break;\n case 'RightCenter':\n cssClass = classNames.verticalTooltipAfter;\n break;\n }\n return cssClass;\n };\n Slider.prototype.getTooltipTransformProperties = function (className) {\n var transformProperties;\n if (this.tooltipElement) {\n var position = this.orientation === 'Horizontal' ?\n ((this.tooltipElement.clientHeight + 14) - (this.tooltipElement.clientHeight / 2)) :\n ((this.tooltipElement.clientWidth + 14) - (this.tooltipElement.clientWidth / 2));\n transformProperties = this.orientation === 'Horizontal' ?\n (className === classNames.horizontalTooltipBefore ? { rotate: 'rotate(45deg)', translate: \"translateY(\" + position + \"px)\" } :\n { rotate: 'rotate(225deg)', translate: \"translateY(\" + -(position) + \"px)\" }) :\n (className === classNames.verticalTooltipBefore ? { rotate: 'rotate(-45deg)', translate: \"translateX(\" + position + \"px)\" } :\n { rotate: 'rotate(-225deg)', translate: \"translateX(\" + (-position) + \"px)\" });\n }\n return transformProperties;\n };\n Slider.prototype.openMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n this.refreshTooltip(this.firstHandle);\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n tooltipContentElement.classList.remove(classNames.materialTooltipHide);\n tooltipContentElement.classList.add(classNames.materialTooltipShow);\n this.firstHandle.style.cursor = 'default';\n this.tooltipElement.style.transition = this.scaleTransform;\n this.tooltipElement.classList.add(classNames.materialTooltipOpen);\n this.materialHandle.style.transform = 'scale(0)';\n if (tooltipContentElement.innerText.length > 4) {\n this.tooltipElement.style.transform = 'scale(1)';\n }\n else {\n this.tooltipElement.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n if (this.type === 'Default') {\n setTimeout(function () { if (_this.tooltipElement)\n _this.tooltipElement.style.transition = _this.transition.handle; }, 2500);\n }\n else {\n setTimeout(function () { if (_this.tooltipElement)\n _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n }\n };\n Slider.prototype.closeMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n this.tooltipElement.style.transition = this.scaleTransform;\n tooltipContentElement.classList.remove(classNames.materialTooltipShow);\n tooltipContentElement.classList.add(classNames.materialTooltipHide);\n this.firstHandle.style.cursor = '-webkit-grab';\n this.firstHandle.style.cursor = 'grab';\n if (this.materialHandle) {\n this.materialHandle.style.transform = 'scale(1)';\n }\n this.tooltipElement.classList.remove(classNames.materialTooltipOpen);\n this.setTooltipTransform();\n this.tooltipTarget = undefined;\n setTimeout(function () { if (_this.tooltipElement)\n _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n };\n Slider.prototype.checkTooltipPosition = function (args) {\n var tooltipClass = this.tooltipPositionCalculation(args.collidedPosition);\n if (this.tooltipCollidedPosition === undefined ||\n this.tooltipCollidedPosition !== args.collidedPosition || !args.element.classList.contains(tooltipClass)) {\n if (this.isMaterialTooltip) {\n if (tooltipClass !== undefined) {\n args.element.classList.remove(this.previousTooltipClass);\n args.element.classList.add(tooltipClass);\n this.previousTooltipClass = tooltipClass;\n }\n if (args.element.style.transform && args.element.classList.contains(classNames.materialTooltipOpen) &&\n args.element.firstElementChild.innerText.length <= 4) {\n args.element.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n this.tooltipCollidedPosition = args.collidedPosition;\n }\n if (this.isMaterialTooltip && this.tooltipElement && this.tooltipElement.style.transform.indexOf('translate') !== -1) {\n this.setTooltipTransform();\n }\n };\n Slider.prototype.setTooltipTransform = function () {\n var transformProperties = this.getTooltipTransformProperties(this.previousTooltipClass);\n if (isNullOrUndefined(this.tooltipElement))\n return;\n if (this.tooltipElement.firstElementChild.innerText.length > 4) {\n this.tooltipElement.style.transform = transformProperties.translate + \" scale(0.01)\";\n }\n else {\n this.tooltipElement.style.transform = transformProperties.translate + \" \" + transformProperties.rotate + \" scale(0.01)\";\n }\n };\n Slider.prototype.renderTooltip = function () {\n this.tooltipObj = new Tooltip({\n showTipPointer: this.isBootstrap || this.isMaterial || this.isMaterial3 || this.isBootstrap4 || this.isTailwind || this.isBootstrap5 || this.isFluent,\n cssClass: classNames.sliderTooltip,\n height: (this.isMaterial || this.isMaterial3) ? 30 : 'auto',\n animation: { open: { effect: 'None' }, close: { effect: 'FadeOut', duration: 500 } },\n opensOn: 'Custom',\n beforeOpen: this.tooltipBeforeOpen.bind(this),\n beforeCollision: this.checkTooltipPosition.bind(this),\n beforeClose: this.tooltipBeforeClose.bind(this),\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.firstHandle);\n this.initializeTooltipProps();\n };\n Slider.prototype.initializeTooltipProps = function () {\n var tooltipShowOn = (this.tooltip.showOn === 'Auto' ? 'Hover' : this.tooltip.showOn);\n this.setProperties({ tooltip: { showOn: tooltipShowOn } }, true);\n this.tooltipObj.position = this.tooltipPlacement();\n this.tooltipCollision(this.tooltipObj.position);\n [this.firstHandle, this.rangeBar, this.secondHandle].forEach(function (handle) {\n if (!isNullOrUndefined(handle)) {\n handle.style.transition = 'none';\n }\n });\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n this.tooltipValue();\n this.tooltipObj.animation.close.effect = 'None';\n this.tooltipObj.open(this.firstHandle);\n }\n };\n Slider.prototype.tooltipBeforeClose = function () {\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n };\n Slider.prototype.setButtons = function () {\n this.firstBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.firstButton });\n this.firstBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.firstBtn.querySelector('span').classList.add('e-icons');\n }\n this.firstBtn.tabIndex = -1;\n this.secondBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.secondButton });\n this.secondBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.secondBtn.querySelector('span').classList.add('e-icons');\n }\n this.secondBtn.tabIndex = -1;\n this.sliderContainer.classList.add(classNames.sliderButtonClass);\n this.sliderContainer.appendChild(this.firstBtn);\n this.sliderContainer.appendChild(this.secondBtn);\n this.sliderContainer.appendChild(this.element);\n this.buttonTitle();\n };\n Slider.prototype.buttonTitle = function () {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n this.l10n.setLocale(this.locale);\n var decrementTitle = this.l10n.getConstant('decrementTitle');\n var incrementTitle = this.l10n.getConstant('incrementTitle');\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': decrementTitle, title: decrementTitle });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': incrementTitle, title: incrementTitle });\n };\n Slider.prototype.buttonFocusOut = function () {\n if (this.isMaterial || this.isMaterial3) {\n this.getHandle().classList.remove('e-large-thumb-size');\n }\n };\n Slider.prototype.repeatButton = function (args) {\n var hVal = this.handleValueUpdate();\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var value;\n if (args.target.parentElement.classList.contains(classNames.firstButton)\n || args.target.classList.contains(classNames.firstButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if (args.target.parentElement.classList.contains(classNames.secondButton)\n || (args.target.classList.contains(classNames.secondButton))) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n if (value >= this.min && value <= this.max) {\n this.changeHandleValue(value);\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.repeatHandlerMouse = function (args) {\n args.preventDefault();\n if (args.type === ('mousedown') || args.type === ('touchstart')) {\n this.buttonClick(args);\n this.repeatInterval = setInterval(this.repeatButton.bind(this), 180, args);\n }\n };\n Slider.prototype.materialChange = function () {\n if (!this.getHandle().classList.contains('e-large-thumb-size')) {\n this.getHandle().classList.add('e-large-thumb-size');\n }\n };\n Slider.prototype.focusHandle = function () {\n if (!this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.getHandle().classList.add(classNames.sliderTabHandle);\n }\n };\n Slider.prototype.repeatHandlerUp = function (e) {\n this.changeEvent('changed', e);\n this.closeTooltip();\n clearInterval(this.repeatInterval);\n this.getHandle().focus();\n };\n Slider.prototype.customTickCounter = function (bigNum) {\n var tickCount = 4;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n if (bigNum > 4) {\n tickCount = 3;\n }\n if (bigNum > 7) {\n tickCount = 2;\n }\n if (bigNum > 14) {\n tickCount = 1;\n }\n if (bigNum > 28) {\n tickCount = 0;\n }\n }\n return tickCount;\n };\n // tslint:disable-next-line:max-func-body-length\n Slider.prototype.renderScale = function () {\n var liElementPosition = 0;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n var spanText;\n this.noOfDecimals = this.numberOfDecimals(this.step);\n this.ul = this.createElement('ul', {\n className: classNames.scale + ' ' + 'e-' + orien + '-scale ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n this.ul.style.zIndex = '-1';\n if (Browser.isAndroid && orien === 'h') {\n this.ul.classList.add(classNames.sliderTickPosition);\n }\n var smallStep = this.ticks.smallStep;\n if (!this.ticks.showSmallTicks) {\n this.ticks.largeStep > 0 ? (smallStep = this.ticks.largeStep) :\n (smallStep = (parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n }\n else if (smallStep <= 0) {\n smallStep = parseFloat(formatUnit(this.step));\n }\n var min = this.fractionalToInteger(this.min);\n var max = this.fractionalToInteger(this.max);\n var steps = this.fractionalToInteger(smallStep);\n var bigNum = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 && this.customValues.length - 1;\n var customStep = this.customTickCounter(bigNum);\n var count = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n (bigNum * customStep) + bigNum : Math.abs((max - min) / steps);\n this.element.appendChild(this.ul);\n var li;\n var start = parseFloat(this.min.toString());\n if (orien === 'v') {\n start = parseFloat(this.max.toString());\n }\n var left = 0;\n var islargeTick;\n var tickWidth = 100 / count;\n if (tickWidth === Infinity) {\n tickWidth = 5;\n }\n for (var i = 0, y = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n this.customValues.length - 1 : 0, k = 0; i <= count; i++) {\n li = (this.createElement('li', {\n attrs: {\n class: classNames.tick, role: 'presentation', tabIndex: '-1',\n 'aria-hidden': 'true'\n }\n }));\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n islargeTick = i % (customStep + 1) === 0;\n if (islargeTick) {\n if (orien === 'h') {\n start = this.customValues[k];\n k++;\n }\n else {\n start = this.customValues[y];\n y--;\n }\n li.setAttribute('title', start.toString());\n }\n }\n else {\n li.setAttribute('title', start.toString());\n if (this.numberOfDecimals(this.max) === 0 && this.numberOfDecimals(this.min) === 0 &&\n this.numberOfDecimals(this.step) === 0) {\n if (orien === 'h') {\n islargeTick = ((start - parseFloat(this.min.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(start - parseFloat(this.max.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n }\n else {\n var largestep = this.fractionalToInteger(this.ticks.largeStep);\n var startValue = this.fractionalToInteger(start);\n if (orien === 'h') {\n islargeTick = ((startValue - min) % largestep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(startValue - parseFloat(max.toString())) % largestep === 0) ? true : false;\n }\n }\n }\n if (islargeTick) {\n li.classList.add(classNames.large);\n }\n (orien === 'h') ? (li.style.width = tickWidth + '%') : (li.style.height = tickWidth + '%');\n var repeat = islargeTick ? (this.ticks.placement === 'Both' ? 2 : 1) : 0;\n if (islargeTick) {\n for (var j = 0; j < repeat; j++) {\n this.createTick(li, start, tickWidth);\n }\n }\n else if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start);\n }\n this.ul.appendChild(li);\n this.tickElementCollection.push(li);\n var decimalPoints = void 0;\n if (isNullOrUndefined(this.customValues)) {\n if (this.numberOfDecimals(smallStep) > this.numberOfDecimals(start)) {\n decimalPoints = this.numberOfDecimals(smallStep);\n }\n else {\n decimalPoints = this.numberOfDecimals(start);\n }\n if (orien === 'h') {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n if (this.min > this.max) {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n start = this.makeRoundNumber(start - smallStep, decimalPoints);\n }\n }\n left = this.makeRoundNumber(left + smallStep, decimalPoints);\n }\n }\n this.ticksAlignment(orien, tickWidth);\n };\n Slider.prototype.ticksAlignment = function (orien, tickWidth, triggerEvent) {\n if (triggerEvent === void 0) { triggerEvent = true; }\n this.firstChild = this.ul.firstElementChild;\n this.lastChild = this.ul.lastElementChild;\n this.firstChild.classList.add(classNames.sliderFirstTick);\n this.lastChild.classList.add(classNames.sliderLastTick);\n this.sliderContainer.classList.add(classNames.scale + '-' + this.ticks.placement.toLowerCase());\n if (orien === 'h') {\n this.firstChild.style.width = tickWidth / 2 + '%';\n this.lastChild.style.width = tickWidth / 2 + '%';\n }\n else {\n this.firstChild.style.height = tickWidth / 2 + '%';\n this.lastChild.style.height = tickWidth / 2 + '%';\n }\n var eventArgs = { ticksWrapper: this.ul, tickElements: this.tickElementCollection };\n if (triggerEvent) {\n this.trigger('renderedTicks', eventArgs);\n }\n this.scaleAlignment();\n };\n Slider.prototype.createTick = function (li, start, tickWidth) {\n var span = this.createElement('span', {\n className: classNames.tickValue + ' ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n li.appendChild(span);\n if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start, span, tickWidth);\n }\n else {\n if (this.enableHtmlSanitizer) {\n span.innerHTML = SanitizeHtmlHelper.sanitize(start.toString());\n }\n else {\n span.innerHTML = start.toString();\n }\n }\n };\n Slider.prototype.formatTicksValue = function (li, start, spanElement, tickWidth) {\n var _this = this;\n var tickText = this.formatNumber(start);\n var text = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ?\n this.formatString(start, this.ticksFormatInfo).formatString : tickText;\n var eventArgs = { value: start, text: text, tickElement: li };\n this.trigger('renderingTicks', eventArgs, function (observedArgs) {\n li.setAttribute('title', observedArgs.text.toString());\n if (spanElement) {\n if (_this.enableHtmlSanitizer) {\n spanElement.innerHTML = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n spanElement.innerHTML = observedArgs.text.toString();\n }\n }\n });\n };\n Slider.prototype.scaleAlignment = function () {\n this.tickValuePosition();\n var smallTick = 12;\n var largeTick = 20;\n var half = largeTick / 2;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n if (this.orientation === 'Vertical') {\n (this.element.getBoundingClientRect().width <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n else {\n (this.element.getBoundingClientRect().height <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n };\n Slider.prototype.tickValuePosition = function () {\n this.firstChild = this.element.querySelector('ul').children[0];\n var first = this.firstChild.getBoundingClientRect();\n var firstChild;\n var otherChild;\n var smallStep = this.ticks.smallStep;\n var count = Math.abs((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min)))) / smallStep;\n if (this.firstChild.children.length > 0) {\n firstChild = this.firstChild.children[0].getBoundingClientRect();\n }\n var tickElements = [this.sliderContainer.querySelectorAll('.' + classNames.tick + '.' +\n classNames.large + ' .' + classNames.tickValue)];\n var other;\n if (this.ticks.placement === 'Both') {\n other = [].slice.call(tickElements[0], 2);\n }\n else {\n other = [].slice.call(tickElements[0], 1);\n }\n var tickWidth = this.orientation === 'Vertical' ?\n (first.height * 2) : (first.width * 2);\n for (var i = 0; i < this.firstChild.children.length; i++) {\n if (this.orientation === 'Vertical') {\n this.firstChild.children[i].style.top = -(firstChild.height / 2) + 'px';\n }\n else {\n if (!this.enableRtl) {\n this.firstChild.children[i].style.left = -(firstChild.width / 2) + 'px';\n }\n else {\n this.firstChild.children[i].style.left = (tickWidth -\n this.firstChild.children[i].getBoundingClientRect().width) / 2 + 'px';\n }\n }\n }\n for (var i = 0; i < other.length; i++) {\n otherChild = other[i].getBoundingClientRect();\n if (this.orientation === 'Vertical') {\n setStyleAttribute(other[i], { top: (tickWidth - otherChild.height) / 2 + 'px' });\n }\n else {\n setStyleAttribute(other[i], { left: (tickWidth - otherChild.width) / 2 + 'px' });\n }\n }\n if (this.enableRtl && this.lastChild.children.length && count !== 0) {\n this.lastChild.children[0].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n if (this.ticks.placement === 'Both') {\n this.lastChild.children[1].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n }\n }\n if (count === 0) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.left = this.firstHandle.style.left;\n }\n else {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.right = this.firstHandle.style.right;\n this.firstChild.children[0].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n if (this.ticks.placement === 'Both') {\n this.firstChild.children[1].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n }\n }\n }\n if (this.orientation === 'Vertical') {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n }\n }\n };\n Slider.prototype.setAriaAttrValue = function (element) {\n var ariaValueText;\n var isTickFormatted = ((!isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format))) ? true : false;\n var text = !isTickFormatted ?\n this.formatContent(this.ticksFormatInfo, false) : this.formatContent(this.tooltipFormatInfo, false);\n var valuenow = isTickFormatted ? this.formatContent(this.ticksFormatInfo, true) :\n this.formatContent(this.tooltipFormatInfo, true);\n text = (!this.customAriaText) ? (text) : (this.customAriaText);\n if (text.split(' - ').length === 2) {\n ariaValueText = text.split(' - ');\n }\n else {\n ariaValueText = [text, text];\n }\n this.setAriaAttributes(element);\n if (this.type !== 'Range') {\n attributes(element, { 'aria-valuenow': valuenow, 'aria-valuetext': text });\n }\n else {\n // eslint-disable-next-line\n (!this.enableRtl) ? ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] })) :\n ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }));\n }\n };\n Slider.prototype.handleValueUpdate = function () {\n var hVal;\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n hVal = this.handleVal1;\n }\n else {\n hVal = this.handleVal2;\n }\n }\n else {\n hVal = this.handleVal1;\n }\n return hVal;\n };\n Slider.prototype.getLimitCorrectedValues = function (value) {\n if (this.type === 'MinRange' || this.type === 'Default') {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n if (this.activeHandle === 1) {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n value = (this.getLimitValueAndPosition(value, this.limits.maxStart, this.limits.maxEnd))[0];\n }\n }\n return value;\n };\n Slider.prototype.focusSliderElement = function () {\n if (!this.isElementFocused) {\n this.element.focus();\n this.isElementFocused = true;\n }\n };\n Slider.prototype.buttonClick = function (args) {\n this.focusSliderElement();\n var value;\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var hVal = this.handleValueUpdate();\n if ((args.keyCode === 40) || (args.keyCode === 37)\n || args.currentTarget.classList.contains(classNames.firstButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if ((args.keyCode === 38) || (args.keyCode === 39) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n else if ((args.keyCode === 33\n || args.currentTarget.classList.contains(classNames.firstButton))) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true));\n }\n else if ((args.keyCode === 34) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false));\n }\n else if ((args.keyCode === 36)) {\n value = parseFloat(this.min < this.max ? this.min.toString() : this.max.toString());\n }\n else if ((args.keyCode === 35)) {\n value = parseFloat(this.min < this.max ? this.max.toString() : this.min.toString());\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n this.changeHandleValue(value);\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n this.getHandle().focus();\n this.focusHandle();\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.add(this.firstBtn, 'mouseup touchend', this.buttonUp, this);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.add(this.secondBtn, 'mouseup touchend', this.buttonUp, this);\n }\n };\n Slider.prototype.tooltipToggle = function (target) {\n if (this.isMaterialTooltip) {\n // eslint-disable-next-line\n !this.tooltipElement.classList.contains(classNames.materialTooltipOpen) ?\n this.openMaterialTooltip() : this.refreshTooltip(this.firstHandle);\n }\n else {\n // eslint-disable-next-line\n !this.tooltipElement ? this.openTooltip(target) : this.refreshTooltip(target);\n }\n };\n Slider.prototype.buttonUp = function (args) {\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.remove(this.firstBtn, 'mouseup touchend', this.buttonUp);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.remove(this.secondBtn, 'mouseup touchend', this.buttonUp);\n }\n };\n Slider.prototype.setRangeBar = function () {\n if (this.orientation === 'Horizontal' && !isNullOrUndefined(this.rangeBar)) {\n if (this.type === 'MinRange') {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else if (!isNullOrUndefined(this.rangeBar)) {\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px' });\n }\n else {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n };\n Slider.prototype.checkValidValueAndPos = function (value) {\n value = this.checkHandleValue(value);\n value = this.checkHandlePosition(value);\n return value;\n };\n Slider.prototype.setLimitBarPositions = function (fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarFirst.style.left = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n else {\n this.limitBarFirst.style.right = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n }\n else {\n this.limitBarFirst.style.bottom = (this.min < this.max ? fromMinPostion : fromMaxpostion) + 'px';\n this.limitBarFirst.style.height = (this.min < this.max ? (fromMaxpostion - fromMinPostion) : (fromMinPostion - fromMaxpostion)) + 'px';\n }\n if (this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarSecond.style.left = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n else {\n this.limitBarSecond.style.right = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n else {\n this.limitBarSecond.style.bottom = (this.min < this.max ? toMinPostion : toMaxpostion) + 'px';\n this.limitBarSecond.style.height = (this.min < this.max ? (toMaxpostion - toMinPostion) : (toMinPostion - toMaxpostion)) + 'px';\n }\n }\n };\n Slider.prototype.setLimitBar = function () {\n if (this.type === 'Default' || this.type === 'MinRange') {\n var fromPosition = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromPosition = this.checkValidValueAndPos(fromPosition);\n var toPosition = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n toPosition = this.checkValidValueAndPos(toPosition);\n this.setLimitBarPositions(fromPosition, toPosition);\n }\n else if (this.type === 'Range') {\n var fromMinPostion = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMinPostion = this.checkValidValueAndPos(fromMinPostion);\n var fromMaxpostion = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMaxpostion = this.checkValidValueAndPos(fromMaxpostion);\n var toMinPostion = (this.getLimitValueAndPosition(this.limits.maxStart, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMinPostion = this.checkValidValueAndPos(toMinPostion);\n var toMaxpostion = (this.getLimitValueAndPosition(this.limits.maxEnd, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMaxpostion = this.checkValidValueAndPos(toMaxpostion);\n this.setLimitBarPositions(fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion);\n }\n };\n Slider.prototype.getLimitValueAndPosition = function (currentValue, minValue, maxValue, limitBar) {\n if (isNullOrUndefined(minValue)) {\n minValue = this.min < this.max ? this.min : this.max;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = minValue;\n }\n }\n if (isNullOrUndefined(maxValue)) {\n maxValue = this.min < this.max ? this.max : this.min;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = maxValue;\n }\n }\n if (currentValue < minValue) {\n currentValue = minValue;\n }\n if (currentValue > maxValue) {\n currentValue = maxValue;\n }\n return [currentValue, this.checkHandlePosition(currentValue)];\n };\n Slider.prototype.setValue = function () {\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n this.min = 0;\n this.max = this.customValues.length - 1;\n this.setBarColor();\n }\n this.setAriaAttributes(this.firstHandle);\n this.handleVal1 = isNullOrUndefined(this.value) ? this.checkHandleValue(parseFloat(this.min.toString())) :\n this.checkHandleValue(parseFloat(this.value.toString()));\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.preHandlePos1 = this.handlePos1;\n // eslint-disable-next-line\n isNullOrUndefined(this.activeHandle) ? (this.type === 'Range' ? this.activeHandle = 2 : this.activeHandle = 1) :\n // eslint-disable-next-line no-self-assign\n this.activeHandle = this.activeHandle;\n if (this.type === 'Default' || this.type === 'MinRange') {\n if (this.limits.enabled) {\n var values = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values[0];\n this.handlePos1 = values[1];\n this.preHandlePos1 = this.handlePos1;\n }\n this.setHandlePosition(null);\n this.handleStart();\n this.value = this.handleVal1;\n this.setAriaAttrValue(this.firstHandle);\n this.changeEvent('changed', null);\n }\n else {\n this.validateRangeValue();\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n };\n Slider.prototype.rangeValueUpdate = function () {\n if (this.value === null || typeof (this.value) !== 'object') {\n this.value = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n };\n Slider.prototype.validateRangeValue = function () {\n this.rangeValueUpdate();\n this.setRangeValue();\n };\n Slider.prototype.modifyZindex = function () {\n if (this.type === 'Range' && !isNullOrUndefined(this.firstHandle) && !isNullOrUndefined(this.secondHandle)) {\n if (this.activeHandle === 1) {\n this.firstHandle.style.zIndex = (this.zIndex + 4) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 3) + '';\n }\n else {\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n }\n else if (this.isMaterialTooltip && this.tooltipElement) {\n this.tooltipElement.style.zIndex = getZindexPartial(this.element) + '';\n }\n };\n Slider.prototype.setHandlePosition = function (event) {\n var _this = this;\n var handle;\n var pos = (this.activeHandle === 1) ? this.handlePos1 : this.handlePos2;\n if (this.isMaterialTooltip) {\n handle = [this.firstHandle, this.materialHandle];\n }\n else {\n handle = [this.getHandle()];\n }\n this.handleStart();\n handle.forEach(function (handle) {\n if (_this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n _this.enableRtl ? (handle.style.right =\n pos + \"px\") : (handle.style.left = pos + \"px\");\n }\n else {\n handle.style.bottom = pos + \"px\";\n }\n });\n this.changeEvent('change', event);\n };\n Slider.prototype.getHandle = function () {\n return (this.activeHandle === 1) ? this.firstHandle : this.secondHandle;\n };\n Slider.prototype.setRangeValue = function () {\n this.updateRangeValue();\n this.activeHandle = 1;\n this.setHandlePosition(null);\n this.activeHandle = 2;\n this.setHandlePosition(null);\n this.activeHandle = 1;\n };\n Slider.prototype.changeEvent = function (eventName, e) {\n var previous = eventName === 'change' ? this.previousVal : this.previousChanged;\n if (this.type !== 'Range') {\n this.setProperties({ 'value': this.handleVal1 }, true);\n if (previous !== this.value && (!this.isMaterialTooltip || !this.initialTooltip)) {\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.firstHandle);\n }\n else {\n var value = this.value = [this.handleVal1, this.handleVal2];\n this.setProperties({ 'value': value }, true);\n if (previous.length === this.value.length\n && this.value[0] !== previous[0] || this.value[1] !== previous[1]) {\n this.initialTooltip = false;\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.getHandle());\n }\n this.hiddenInput.value = this.value.toString();\n };\n Slider.prototype.changeEventArgs = function (eventName, e) {\n var eventArgs;\n if (this.tooltip.isVisible && this.tooltipObj && this.initialTooltip) {\n this.tooltipValue();\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: (typeof (this.tooltipObj.content) === 'function' ? this.tooltipObj.content() : this.tooltipObj.content), isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n else {\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: isNullOrUndefined(this.ticksFormatInfo.format) ? this.value.toString() :\n (this.type !== 'Range' ? this.formatString(this.value, this.ticksFormatInfo).formatString :\n (this.formatString(this.value[0], this.ticksFormatInfo).formatString + ' - ' +\n this.formatString(this.value[1], this.ticksFormatInfo).formatString)),\n isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n return eventArgs;\n };\n Slider.prototype.setPreviousVal = function (eventName, value) {\n if (eventName === 'change') {\n this.previousVal = value;\n }\n else {\n this.previousChanged = value;\n }\n };\n Slider.prototype.updateRangeValue = function () {\n var values = this.value.toString().split(',').map(Number);\n if ((this.enableRtl && this.orientation !== 'Vertical') || this.rtl) {\n this.value = [values[1], values[0]];\n }\n else {\n this.value = [values[0], values[1]];\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n this.handleVal1 = this.checkHandleValue(this.value[1]);\n this.handleVal2 = this.checkHandleValue(this.value[0]);\n }\n else {\n this.handleVal1 = this.checkHandleValue(this.value[0]);\n this.handleVal2 = this.checkHandleValue(this.value[1]);\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.min < this.max && this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.min > this.max && this.handlePos1 < this.handlePos2) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n this.preHandlePos1 = this.handlePos1;\n this.preHandlePos2 = this.handlePos2;\n if (this.limits.enabled) {\n this.activeHandle = 1;\n var values_1 = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values_1[0];\n this.handlePos1 = values_1[1];\n this.preHandlePos1 = this.handlePos1;\n this.activeHandle = 2;\n values_1 = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = values_1[0];\n this.handlePos2 = values_1[1];\n this.preHandlePos2 = this.handlePos2;\n }\n };\n Slider.prototype.checkHandlePosition = function (value) {\n var pos;\n value = (100 *\n (value - (parseFloat(formatUnit(this.min))))) / ((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (value / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (value / 100);\n }\n if (((parseFloat(formatUnit(this.max))) === (parseFloat(formatUnit(this.min))))) {\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width;\n }\n else {\n pos = this.element.getBoundingClientRect().height;\n }\n }\n return pos;\n };\n Slider.prototype.checkHandleValue = function (value) {\n if (this.min === this.max) {\n return (parseFloat(formatUnit(this.max)));\n }\n var handle = this.tempStartEnd();\n if (value < handle.start) {\n value = handle.start;\n }\n else if (value > handle.end) {\n value = handle.end;\n }\n return value;\n };\n /**\n * It is used to reposition slider.\n *\n * @returns void\n */\n Slider.prototype.reposition = function () {\n var _this = this;\n if (!isNullOrUndefined(this.firstHandle))\n this.firstHandle.style.transition = 'none';\n if (this.type !== 'Default' && !isNullOrUndefined(this.rangeBar)) {\n this.rangeBar.style.transition = 'none';\n }\n if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle)) {\n this.secondHandle.style.transition = 'none';\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.handleVal2) {\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n }\n if (this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n this.enableRtl ? this.firstHandle.style.right =\n this.handlePos1 + \"px\" : this.firstHandle.style.left = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip && !isNullOrUndefined(this.materialHandle)) {\n // eslint-disable-next-line\n this.enableRtl ? this.materialHandle.style.right =\n this.handlePos1 + \"px\" : this.materialHandle.style.left = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange' && !isNullOrUndefined(this.rangeBar)) {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle) && !isNullOrUndefined(this.rangeBar)) {\n // eslint-disable-next-line\n this.enableRtl ? this.secondHandle.style.right =\n this.handlePos2 + \"px\" : this.secondHandle.style.left = this.handlePos2 + \"px\";\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n this.firstHandle.style.bottom = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n this.materialHandle.style.bottom = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n this.secondHandle.style.bottom = this.handlePos2 + \"px\";\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None' && this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n this.handleStart();\n if (!this.tooltip.isVisible) {\n setTimeout(function () {\n if (!isNullOrUndefined(_this.firstHandle))\n _this.firstHandle.style.transition = _this.scaleTransform;\n if (_this.type === 'Range' && !isNullOrUndefined(_this.secondHandle)) {\n _this.secondHandle.style.transition = _this.scaleTransform;\n }\n });\n }\n this.refreshTooltip(this.tooltipTarget);\n this.setBarColor();\n };\n Slider.prototype.changeHandleValue = function (value) {\n var position = null;\n if (this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n this.handleVal1 = this.checkHandleValue(value);\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.type === 'Range' && ((this.handlePos1 > this.handlePos2 && this.min < this.max) || (this.handlePos1 < this.handlePos2 && this.min > this.max))) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.handlePos1 !== this.preHandlePos1) {\n position = this.preHandlePos1 = this.handlePos1;\n }\n }\n this.modifyZindex();\n }\n else {\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n this.handleVal2 = this.checkHandleValue(value);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.type === 'Range' && ((this.handlePos2 < this.handlePos1 && this.min < this.max) || (this.handlePos2 > this.handlePos1 && this.min > this.max))) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n if (this.handlePos2 !== this.preHandlePos2) {\n position = this.preHandlePos2 = this.handlePos2;\n }\n }\n this.modifyZindex();\n }\n if (position !== null) {\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n this.setHandlePosition(null);\n }\n };\n // eslint-disable-next-line\n Slider.prototype.tempStartEnd = function () {\n if (this.min > this.max) {\n return {\n start: this.max,\n end: this.min\n };\n }\n else {\n return {\n start: this.min,\n end: this.max\n };\n }\n };\n // eslint-disable-next-line\n Slider.prototype.xyToPosition = function (position) {\n var pos;\n if (this.min === this.max) {\n return 100;\n }\n if (this.orientation === 'Horizontal') {\n var left = position.x - this.element.getBoundingClientRect().left;\n var num = this.element.offsetWidth / 100;\n this.val = (left / num);\n }\n else {\n var top_1 = position.y - this.element.getBoundingClientRect().top;\n var num = this.element.offsetHeight / 100;\n this.val = 100 - (top_1 / num);\n }\n var val = this.stepValueCalculation(this.val);\n if (val < 0) {\n val = 0;\n }\n else if (val > 100) {\n val = 100;\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n val = 100 - val;\n }\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (val / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (val / 100);\n }\n return pos;\n };\n Slider.prototype.stepValueCalculation = function (value) {\n if (this.step === 0) {\n this.step = 1;\n }\n var percentStep = (parseFloat(formatUnit(this.step))) / ((parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min))) / 100);\n var remain = value % Math.abs(percentStep);\n if (remain !== 0) {\n if ((percentStep / 2) > remain) {\n value -= remain;\n }\n else {\n value += Math.abs(percentStep) - remain;\n }\n }\n return value;\n };\n Slider.prototype.add = function (a, b, addition) {\n var precision;\n var x = Math.pow(10, precision || 3);\n var val;\n if (addition) {\n val = (Math.round(a * x) + Math.round(b * x)) / x;\n }\n else {\n val = (Math.round(a * x) - Math.round(b * x)) / x;\n }\n return val;\n };\n Slider.prototype.positionToValue = function (pos) {\n var val;\n var diff = parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min));\n if (this.orientation === 'Horizontal') {\n val = (pos / this.element.getBoundingClientRect().width) * diff;\n }\n else {\n val = (pos / this.element.getBoundingClientRect().height) * diff;\n }\n var total = this.add(val, parseFloat(this.min.toString()), true);\n return (total);\n };\n Slider.prototype.sliderBarClick = function (evt) {\n evt.preventDefault();\n // eslint-disable-next-line\n var pos;\n if (evt.type === 'mousedown' || evt.type === 'mouseup' || evt.type === 'click') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else if (evt.type === 'touchend' || evt.type === 'touchstart') {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n if (this.type === 'Range' && (this.min < (this.max) && (this.handlePos2 - handlepos) < (handlepos - this.handlePos1) || (this.min > this.max) && (this.handlePos1 - handlepos) > (handlepos - this.handlePos2))) {\n this.activeHandle = 2;\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n }\n this.modifyZindex();\n this.secondHandle.focus();\n }\n else {\n this.activeHandle = 1;\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.modifyZindex();\n this.firstHandle.focus();\n }\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.add(classNames.materialTooltipActive);\n }\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement && this.getHandle() !== focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n var handle = this.activeHandle === 1 ? this.firstHandle : this.secondHandle;\n var behindElement;\n if ((evt.type === 'click' || evt.type === 'mousedown') && evt.target === handle) {\n var eventX = evt.clientX, eventY = evt.clientY;\n behindElement = document.elementFromPoint(eventX, eventY);\n }\n if (evt.target === handle && behindElement != handle) {\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.sliderBarUp(evt);\n this.tooltipToggle(this.getHandle());\n return;\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n var transition = (this.isMaterial || this.isMaterial3) && this.tooltip.isVisible ?\n this.transitionOnMaterialTooltip : this.transition;\n this.getHandle().style.transition = transition.handle;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = transition.rangeBar;\n }\n this.setHandlePosition(evt);\n if (this.isMaterialTooltip) {\n this.initialTooltip = false;\n }\n if (evt.target != handle) {\n this.changeEvent('changed', evt);\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.handleValueAdjust = function (handleValue, assignValue, handleNumber) {\n if (handleNumber === 1) {\n this.handleVal1 = assignValue;\n this.handleVal2 = this.handleVal1 + this.minDiff;\n }\n else if (handleNumber === 2) {\n this.handleVal2 = assignValue;\n this.handleVal1 = this.handleVal2 - this.minDiff;\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n };\n Slider.prototype.dragRangeBarMove = function (event) {\n var _a, _b;\n if (event.type !== 'touchmove') {\n event.preventDefault();\n }\n this.rangeBarDragged = true;\n var pos;\n this.rangeBar.style.transition = 'none';\n this.firstHandle.style.transition = 'none';\n this.secondHandle.style.transition = 'none';\n var xPostion;\n var yPostion;\n if (event.type === 'mousemove') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (!(this.limits.enabled && this.limits.startHandleFixed) && !(this.limits.enabled && this.limits.endHandleFixed)) {\n if (!this.enableRtl) {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion + this.secondPartRemain };\n }\n else {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion + this.secondPartRemain };\n }\n if (this.min > this.max) {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n }\n else {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n }\n if (!this.enableRtl) {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion - this.firstPartRemain };\n }\n else {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion - this.firstPartRemain };\n }\n if (this.min > this.max) {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n }\n else {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n }\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = value[0];\n this.handlePos1 = value[1];\n if (this.handleVal1 === this.limits.minEnd) {\n this.handleValueAdjust(this.handleVal1, this.limits.minEnd, 1);\n }\n if (this.handleVal1 === this.limits.minStart) {\n this.handleValueAdjust(this.handleVal1, this.limits.minStart, 1);\n }\n value = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = value[0];\n this.handlePos2 = value[1];\n if (this.handleVal2 === this.limits.maxStart) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxStart, 2);\n }\n if (this.handleVal2 === this.limits.maxEnd) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxEnd, 2);\n }\n }\n if (this.handleVal2 === (this.min > this.max ? this.min : this.max)) {\n this.handleValueAdjust(this.handleVal2, (this.min > this.max ? this.min : this.max), 2);\n }\n if (this.handleVal1 === (this.min > this.max ? this.max : this.min)) {\n this.handleValueAdjust(this.handleVal1, (this.min > this.max ? this.max : this.min), 1);\n }\n }\n this.activeHandle = 1;\n this.setHandlePosition(event);\n this.activeHandle = 2;\n this.setHandlePosition(event);\n this.tooltipToggle(this.rangeBar);\n this.setRangeBar();\n };\n Slider.prototype.sliderBarUp = function (event) {\n this.changeEvent('changed', event);\n this.handleFocusOut();\n this.firstHandle.classList.remove(classNames.sliderActiveHandle);\n if (this.type === 'Range') {\n this.initialTooltip = false;\n this.secondHandle.classList.remove(classNames.sliderActiveHandle);\n }\n this.closeTooltip();\n if (this.isMaterial || this.isMaterial3) {\n this.getHandle().classList.remove('e-large-thumb-size');\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.remove(classNames.materialTooltipActive);\n }\n }\n EventHandler.remove(document, 'mousemove touchmove', this.sliderBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.sliderBarUp);\n };\n Slider.prototype.sliderBarMove = function (evt) {\n if (evt.type !== 'touchmove') {\n evt.preventDefault();\n }\n var pos;\n if (evt.type === 'mousemove') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n handlepos = Math.round(handlepos);\n if (this.type !== 'Range' && this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var valueAndPostion = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handlepos = valueAndPostion[1];\n handleVal = valueAndPostion[0];\n }\n this.handlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n }\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if ((this.min < this.max && handlepos > this.handlePos2 || (this.min > this.max && handlepos < this.handlePos2))) {\n handlepos = this.handlePos2;\n handleVal = this.handleVal2;\n }\n if (handlepos !== this.preHandlePos1) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n this.activeHandle = 1;\n }\n }\n }\n else if (this.activeHandle === 2) {\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if ((this.min < this.max && handlepos < this.handlePos1) || (this.min > this.max && handlepos > this.handlePos1)) {\n handlepos = this.handlePos1;\n handleVal = this.handleVal1;\n }\n if (handlepos !== this.preHandlePos2) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n this.activeHandle = 2;\n }\n }\n }\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n this.getHandle().style.transition = this.scaleTransform;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n this.setHandlePosition(evt);\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.dragRangeBarUp = function (event) {\n if (!this.rangeBarDragged) {\n this.focusSliderElement();\n this.sliderBarClick(event);\n }\n else {\n this.isDragComplete = true;\n }\n this.changeEvent('changed', event);\n this.closeTooltip();\n EventHandler.remove(document, 'mousemove touchmove', this.dragRangeBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.dragRangeBarUp);\n this.rangeBarDragged = false;\n };\n Slider.prototype.checkRepeatedValue = function (currentValue) {\n if (this.type === 'Range') {\n var previousVal = this.enableRtl && this.orientation !== 'Vertical' ? (this.activeHandle === 1 ?\n this.previousVal[1] : this.previousVal[0]) :\n (this.activeHandle === 1 ? this.previousVal[0] : this.previousVal[1]);\n if (currentValue === previousVal) {\n return 0;\n }\n }\n else {\n if (currentValue === this.previousVal) {\n return 0;\n }\n }\n return 1;\n };\n Slider.prototype.refreshTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj) {\n this.tooltipValue();\n if (target) {\n this.tooltipObj.refresh(target);\n this.tooltipTarget = target;\n }\n }\n };\n Slider.prototype.openTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.open(target);\n this.tooltipTarget = target;\n }\n };\n Slider.prototype.closeTooltip = function () {\n if (this.tooltip.isVisible && this.tooltipObj && this.tooltip.showOn !== 'Always' && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.close();\n this.tooltipTarget = undefined;\n }\n };\n Slider.prototype.keyDown = function (event) {\n switch (event.keyCode) {\n case 37:\n case 38:\n case 39:\n case 40:\n case 33:\n case 34:\n case 36:\n case 35:\n event.preventDefault();\n this.buttonClick(event);\n break;\n }\n };\n Slider.prototype.wireButtonEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.firstBtn, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.secondBtn, 'focusout', this.sliderFocusOut, this);\n }\n else {\n EventHandler.remove(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.firstBtn, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.secondBtn, 'focusout', this.sliderFocusOut);\n }\n };\n Slider.prototype.rangeBarMousedown = function (event) {\n var _a, _b;\n event.preventDefault();\n this.focusSliderElement();\n if (this.type === 'Range' && this.drag && event.target === this.rangeBar) {\n var xPostion = void 0;\n var yPostion = void 0;\n if (event.type === 'mousedown') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else if (event.type === 'touchstart') {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (this.orientation === 'Horizontal') {\n this.firstPartRemain = xPostion - this.rangeBar.getBoundingClientRect().left;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().right - xPostion;\n }\n else {\n this.firstPartRemain = yPostion - this.rangeBar.getBoundingClientRect().top;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().bottom - yPostion;\n }\n this.minDiff = this.handleVal2 - this.handleVal1;\n this.tooltipToggle(this.rangeBar);\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.dragRangeBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.dragRangeBarUp, this);\n }\n };\n Slider.prototype.elementClick = function (event) {\n if (this.isDragComplete) {\n this.isDragComplete = false;\n return;\n }\n event.preventDefault();\n this.focusSliderElement();\n this.sliderBarClick(event);\n this.focusHandle();\n };\n Slider.prototype.wireEvents = function () {\n this.onresize = this.reposition.bind(this);\n window.addEventListener('resize', this.onresize);\n if (this.enabled && !this.readonly) {\n EventHandler.add(this.element, 'click', this.elementClick, this);\n if (this.type === 'Range' && this.drag) {\n EventHandler.add(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown, this);\n }\n EventHandler.add(this.sliderContainer, 'keydown', this.keyDown, this);\n EventHandler.add(this.sliderContainer, 'keyup', this.keyUp, this);\n EventHandler.add(this.element, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover, this);\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n if (this.showButtons) {\n this.wireButtonEvt(false);\n }\n this.wireMaterialTooltipEvent(false);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n };\n Slider.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.elementClick);\n if (this.type === 'Range' && this.drag) {\n EventHandler.remove(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown);\n }\n EventHandler.remove(this.sliderContainer, 'keydown', this.keyDown);\n EventHandler.remove(this.sliderContainer, 'keyup', this.keyUp);\n EventHandler.remove(this.element, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover);\n this.wireFirstHandleEvt(true);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(true);\n }\n if (this.showButtons) {\n this.wireButtonEvt(true);\n }\n this.wireMaterialTooltipEvent(true);\n EventHandler.remove(this.element, 'reset', this.formResetHandler);\n };\n Slider.prototype.formResetHandler = function () {\n this.setProperties({ 'value': this.formResetValue }, true);\n this.setValue();\n };\n Slider.prototype.keyUp = function (event) {\n if (event.keyCode === 9 && event.target.classList.contains(classNames.sliderHandle)) {\n this.focusSliderElement();\n if (!event.target.classList.contains(classNames.sliderTabHandle)) {\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n event.target.classList.add(classNames.sliderTabHandle);\n var parentElement = event.target.parentElement;\n if (parentElement === this.element) {\n parentElement.querySelector('.' + classNames.sliderTrack).classList.add(classNames.sliderTabTrack);\n if (this.type === 'Range' || this.type === 'MinRange') {\n parentElement.querySelector('.' + classNames.rangeBar).classList.add(classNames.sliderTabRange);\n }\n }\n if (this.type === 'Range') {\n (event.target.previousSibling).classList.contains(classNames.sliderHandle) ?\n this.activeHandle = 2 : this.activeHandle = 1;\n }\n this.getHandle().focus();\n this.tooltipToggle(this.getHandle());\n }\n }\n this.closeTooltip();\n this.changeEvent('changed', event);\n };\n Slider.prototype.hover = function (event) {\n if (!isNullOrUndefined(event)) {\n if (event.type === 'mouseover' || event.type === 'touchmove' || event.type === 'mousemove' ||\n event.type === 'pointermove' || event.type === 'touchstart') {\n this.sliderContainer.classList.add(classNames.sliderHover);\n }\n else {\n this.sliderContainer.classList.remove(classNames.sliderHover);\n var curTarget = event.currentTarget;\n if (this.tooltip.isVisible && this.tooltip.showOn !== 'Always' && this.tooltipObj && this.isMaterialTooltip &&\n !curTarget.classList.contains(classNames.sliderHandleFocused) &&\n !curTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeMaterialTooltip();\n }\n }\n }\n };\n Slider.prototype.sliderFocusOut = function (event) {\n if (event.relatedTarget !== this.secondHandle && event.relatedTarget !== this.firstHandle &&\n event.relatedTarget !== this.element && event.relatedTarget !== this.firstBtn && event.relatedTarget !== this.secondBtn) {\n this.closeMaterialTooltip();\n this.closeTooltip();\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n if (this.element.querySelector('.' + classNames.sliderTabTrack)) {\n this.element.querySelector('.' + classNames.sliderTabTrack).classList.remove(classNames.sliderTabTrack);\n if ((this.type === 'Range' || this.type === 'MinRange') &&\n this.element.querySelector('.' + classNames.sliderTabRange)) {\n this.element.querySelector('.' + classNames.sliderTabRange).classList.remove(classNames.sliderTabRange);\n }\n }\n this.hiddenInput.focus();\n this.hiddenInput.blur();\n this.isElementFocused = false;\n }\n };\n Slider.prototype.removeElement = function (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n };\n Slider.prototype.changeSliderType = function (type, args) {\n if (this.isMaterialTooltip && this.materialHandle) {\n this.sliderContainer.classList.remove(classNames.materialSlider);\n this.removeElement(this.materialHandle);\n this.materialHandle = undefined;\n }\n this.removeElement(this.firstHandle);\n this.firstHandle = undefined;\n if (type !== 'Default') {\n if (type === 'Range') {\n this.removeElement(this.secondHandle);\n this.secondHandle = undefined;\n }\n this.removeElement(this.rangeBar);\n this.rangeBar = undefined;\n }\n if (this.tooltip.isVisible && !isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n }\n if (this.limits.enabled) {\n if (type === 'MinRange' || type === 'Default') {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n this.removeElement(this.limitBarFirst);\n this.limitBarFirst = undefined;\n }\n }\n else {\n if (!isNullOrUndefined(this.limitBarSecond)) {\n this.removeElement(this.limitBarSecond);\n this.limitBarSecond = undefined;\n }\n }\n }\n this.activeHandle = 1;\n this.getThemeInitialization();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setHandler();\n this.setOrientClass();\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n this.setValue();\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n this.wireMaterialTooltipEvent(false);\n }\n this.setBarColor();\n if (args !== 'tooltip') {\n this.updateConfig();\n }\n if (this.readonly) {\n this.sliderContainer.classList.remove(classNames.readonly);\n this.setReadOnly();\n }\n };\n Slider.prototype.changeRtl = function () {\n if (!this.enableRtl && this.type === 'Range') {\n this.value = [this.handleVal2, this.handleVal1];\n }\n this.updateConfig();\n if (this.tooltip.isVisible) {\n this.tooltipObj.refresh(this.firstHandle);\n }\n if (this.showButtons) {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': 'Decrease', title: 'Decrease' });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': 'Increase', title: 'Increase' });\n }\n };\n Slider.prototype.changeOrientation = function () {\n this.changeSliderType(this.type, 'null');\n };\n Slider.prototype.updateConfig = function () {\n this.setEnableRTL();\n this.setValue();\n if (this.tooltip.isVisible) {\n this.refreshTooltip(this.tooltipTarget);\n }\n if (this.ticks.placement !== 'None') {\n if (this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n }\n this.limitsPropertyChange();\n };\n Slider.prototype.limitsPropertyChange = function () {\n if (this.limits.enabled) {\n if (isNullOrUndefined(this.limitBarFirst) && this.type !== 'Range') {\n this.createLimitBar();\n }\n if (isNullOrUndefined(this.limitBarFirst) && isNullOrUndefined(this.limitBarSecond) && this.type === 'Range') {\n this.createLimitBar();\n }\n this.setLimitBar();\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n detach(this.limitBarFirst);\n }\n if (!isNullOrUndefined(this.limitBarSecond)) {\n detach(this.limitBarSecond);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Slider.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it removes the attributes and classes.\n *\n * @method destroy\n * @return {void}\n */\n Slider.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n window.removeEventListener('resize', this.onresize);\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n this.firstHandle.removeAttribute('aria-orientation');\n if (this.type === 'Range') {\n this.secondHandle.removeAttribute('aria-orientation');\n }\n this.sliderContainer.parentNode.insertBefore(this.element, this.sliderContainer);\n detach(this.sliderContainer);\n if (this.tooltip.isVisible) {\n this.tooltipObj.destroy();\n }\n this.element.innerHTML = '';\n this.hiddenInput = null;\n this.sliderContainer = null;\n this.sliderTrack = null;\n this.rangeBar = null;\n this.firstHandle = null;\n this.secondHandle = null;\n this.tickElementCollection = null;\n this.ul = null;\n this.firstBtn = null;\n this.secondBtn = null;\n this.materialHandle = null;\n this.tooltipObj = null;\n this.tooltipTarget = null;\n this.limitBarFirst = null;\n this.limitBarSecond = null;\n this.firstChild = null;\n this.lastChild = null;\n this.tooltipElement = null;\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @private\n */\n // tslint:disable-next-line\n Slider.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'value':\n if (newProp && oldProp) {\n var value = isNullOrUndefined(newProp.value) ?\n (this.type === 'Range' ? [this.min, this.max] : this.min) : newProp.value;\n this.setProperties({ 'value': value }, true);\n if (!isNullOrUndefined(oldProp.value) && oldProp.value.toString() !== value.toString()) {\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (this.type === 'Range') {\n if (isNullOrUndefined(newProp.value) || oldProp.value[1] === value[1]) {\n this.activeHandle = 1;\n }\n else {\n this.activeHandle = 2;\n }\n }\n }\n }\n break;\n case 'min':\n case 'step':\n case 'max':\n this.setMinMaxValue();\n break;\n case 'tooltip':\n if (!isNullOrUndefined(newProp.tooltip) && !isNullOrUndefined(oldProp.tooltip)) {\n this.initialTooltip = true;\n this.setTooltip(prop);\n if (!this.showButtons) {\n this.wireEvents();\n }\n }\n break;\n case 'type':\n if (!isNullOrUndefined(oldProp) && Object.keys(oldProp).length\n && !isNullOrUndefined(oldProp.type)) {\n this.changeSliderType(oldProp.type, prop);\n this.setZindex();\n }\n break;\n case 'enableRtl':\n if (oldProp.enableRtl !== newProp.enableRtl && this.orientation !== 'Vertical') {\n this.rtl = oldProp.enableRtl;\n this.changeRtl();\n }\n break;\n case 'limits':\n this.limitsPropertyChange();\n break;\n case 'orientation':\n this.changeOrientation();\n break;\n case 'ticks':\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n break;\n case 'locale':\n if (this.showButtons) {\n this.buttonTitle();\n }\n break;\n case 'showButtons':\n if (newProp.showButtons) {\n this.setButtons();\n this.reposition();\n if (this.enabled && !this.readonly) {\n this.wireButtonEvt(false);\n }\n }\n else {\n if (this.firstBtn && this.secondBtn) {\n this.sliderContainer.removeChild(this.firstBtn);\n this.sliderContainer.removeChild(this.secondBtn);\n this.sliderContainer.classList.remove(classNames.sliderButtonClass);\n this.firstBtn = undefined;\n this.secondBtn = undefined;\n this.reposition();\n }\n }\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'readonly':\n this.setReadOnly();\n break;\n case 'customValues':\n this.setValue();\n this.reposition();\n break;\n case 'colorRange':\n this.reposition();\n break;\n case 'width':\n this.setElementWidth(newProp.width);\n this.setMinMaxValue();\n if (this.limits) {\n this.limitsPropertyChange();\n }\n break;\n }\n }\n };\n Slider.prototype.setReadOnly = function () {\n if (this.readonly) {\n this.unwireEvents();\n this.sliderContainer.classList.add(classNames.readonly);\n }\n else {\n this.wireEvents();\n this.sliderContainer.classList.remove(classNames.readonly);\n }\n };\n Slider.prototype.setMinMaxValue = function () {\n var _this = this;\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n if (this.ul) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n };\n Slider.prototype.setZindex = function () {\n this.zIndex = 6;\n if (!isNullOrUndefined(this.ticks) && this.ticks.placement !== 'None' && !isNullOrUndefined(this.ul) && !isNullOrUndefined(this.element)) {\n this.ul.style.zIndex = (this.zIndex + -7) + '';\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!this.isMaterial && !this.isMaterial3 && !isNullOrUndefined(this.ticks) && this.ticks.placement === 'Both') {\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!isNullOrUndefined(this.firstHandle))\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle)) {\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n };\n Slider.prototype.setTooltip = function (args) {\n this.changeSliderType(this.type, args);\n };\n Slider.prototype.setBarColor = function () {\n var trackPosition;\n var trackClassName;\n var child = this.sliderTrack.lastElementChild;\n while (child) {\n this.sliderTrack.removeChild(child);\n child = this.sliderTrack.lastElementChild;\n }\n for (var i = 0; i < this.colorRange.length; i++) {\n if (!isNullOrUndefined(this.colorRange[i].start) && !isNullOrUndefined(this.colorRange[i].end)) {\n if (this.colorRange[i].end > this.colorRange[i].start) {\n if (this.colorRange[i].start < this.min) {\n this.colorRange[i].start = this.min;\n }\n if (this.colorRange[i].end > this.max) {\n this.colorRange[i].end = this.max;\n }\n var startingPosition = this.checkHandlePosition(this.colorRange[i].start);\n var endPosition = this.checkHandlePosition(this.colorRange[i].end);\n var trackContainer = this.createElement('div');\n trackContainer.style.backgroundColor = this.colorRange[i].color;\n trackContainer.style.border = '1px solid ' + this.colorRange[i].color;\n if (this.orientation === 'Horizontal') {\n trackClassName = classNames.sliderHorizantalColor;\n if (this.enableRtl) {\n if (isNullOrUndefined(this.customValues)) {\n trackPosition = this.checkHandlePosition(this.max) - this.checkHandlePosition(this.colorRange[i].end);\n }\n else {\n trackPosition = this.checkHandlePosition(this.customValues.length - this.colorRange[i].end - 1);\n }\n }\n else {\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n }\n trackContainer.style.width = endPosition - startingPosition + 'px';\n trackContainer.style.left = trackPosition + 'px';\n }\n else {\n trackClassName = classNames.sliderVerticalColor;\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n trackContainer.style.height = endPosition - startingPosition + 'px';\n trackContainer.style.bottom = trackPosition + 'px';\n }\n trackContainer.classList.add(trackClassName);\n this.sliderTrack.appendChild(trackContainer);\n }\n }\n }\n };\n /**\n * Gets the component name\n *\n * @private\n */\n Slider.prototype.getModuleName = function () {\n return 'slider';\n };\n __decorate([\n Property(null)\n ], Slider.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"customValues\", void 0);\n __decorate([\n Property(1)\n ], Slider.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], Slider.prototype, \"min\", void 0);\n __decorate([\n Property(100)\n ], Slider.prototype, \"max\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"readonly\", void 0);\n __decorate([\n Property('Default')\n ], Slider.prototype, \"type\", void 0);\n __decorate([\n Collection([{}], ColorRangeData)\n ], Slider.prototype, \"colorRange\", void 0);\n __decorate([\n Complex({}, TicksData)\n ], Slider.prototype, \"ticks\", void 0);\n __decorate([\n Complex({}, LimitData)\n ], Slider.prototype, \"limits\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, TooltipData)\n ], Slider.prototype, \"tooltip\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"showButtons\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property('Horizontal')\n ], Slider.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Slider.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"changed\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderingTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderedTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"tooltipChange\", void 0);\n Slider = __decorate([\n NotifyPropertyChanges\n ], Slider);\n return Slider;\n}(Component));\nexport { Slider };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable prefer-spread */\nimport { Component, Event, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, closest, detach, EventHandler, getInstance, select, selectAll, formatUnit } from '@syncfusion/ej2-base';\nimport { addClass, attributes, classList, isNullOrUndefined, L10n } from '@syncfusion/ej2-base';\nimport { remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';\nimport { SplitButton, getModel } from '@syncfusion/ej2-splitbuttons';\nimport { Deferred } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, getZindexPartial, Popup, isCollide } from '@syncfusion/ej2-popups';\nimport { Input } from './../input/index';\nimport { NumericTextBox } from './../numerictextbox/index';\nimport { Slider } from './../slider/slider';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar CURRENT = 'e-current';\nvar CONTAINER = 'e-container';\nvar CTRLBTN = 'e-ctrl-btn';\nvar CTRLSWITCH = 'e-switch-ctrl-btn';\nvar DISABLED = 'e-disabled';\nvar FORMATSWITCH = 'e-value-switch-btn';\nvar HANDLER = 'e-handler';\nvar HEX = 'e-hex';\nvar HIDEHEX = 'e-hide-hex-value';\nvar HIDEOPACITY = 'e-hide-opacity';\nvar HIDERGBA = 'e-hide-switchable-value';\nvar HIDEVALUE = 'e-hide-value';\nvar HIDEVALUESWITCH = 'e-hide-valueswitcher';\nvar HSVAREA = 'e-hsv-color';\nvar HSVCONTAINER = 'e-hsv-container';\nvar INPUTWRAPPER = 'e-selected-value';\nvar MODESWITCH = 'e-mode-switch-btn';\nvar NOCOLOR = 'e-nocolor-item';\nvar OPACITY = 'e-opacity-value';\nvar PALETTES = 'e-palette';\nvar PALETTECONTENT = 'e-color-palette';\nvar PICKERCONTENT = 'e-color-picker';\nvar PREVIEW = 'e-preview-container';\nvar PREVIOUS = 'e-previous';\nvar RTL = 'e-rtl';\nvar SHOWVALUE = 'e-show-value';\nvar SELECT = 'e-selected';\nvar SPLITPREVIEW = 'e-split-preview';\nvar TILE = 'e-tile';\nvar presets = {\n default: ['#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#ffeb3b',\n '#ffffff', '#ffebee', '#fce4ec', '#f3e5f5', '#ede7f6', '#e3f2fd', '#e1f5fe', '#e0f7fa', '#e0f2f1', '#fffde7',\n '#f2f2f2', '#ffcdd2', '#f8bbd0', '#e1bee7', '#d1c4e9', '#bbdefb', '#b3e5fc', '#b2ebf2', '#b2dfdb', '#fff9c4',\n '#e6e6e6', '#ef9a9a', '#f48fb1', '#ce93d8', '#b39ddb', '#90caf9', '#81d4fa', '#80deea', '#80cbc4', '#fff59d',\n '#cccccc', '#e57373', '#f06292', '#ba68c8', '#9575cd', '#64b5f6', '#4fc3f7', '#4dd0e1', '#4db6ac', '#fff176',\n '#b3b3b3', '#ef5350', '#ec407a', '#ab47bc', '#7e57c2', '#42a5f5', '#29b6f6', '#26c6da', '#26a69a', '#ffee58',\n '#999999', '#e53935', '#d81b60', '#8e24aa', '#5e35b1', '#1e88e5', '#039be5', '#00acc1', '#00897b', '#fdd835',\n '#808080', '#d32f2f', '#c2185b', '#7b1fa2', '#512da8', '#1976d2', '#0288d1', '#0097a7', '#00796b', '#fbc02d',\n '#666666', '#c62828', '#ad1457', '#6a1b9a', '#4527a0', '#1565c0', '#0277bd', '#00838f', '#00695c', '#f9a825',\n '#4d4d4d', '#b71c1c', '#880e4f', '#4a148c', '#311b92', '#0d47a1', '#01579b', '#006064', '#004d40', '#f57f17']\n};\n/**\n * ColorPicker component is a user interface to select and adjust color values. It provides supports for various\n * color specification like Red Green Blue, Hue Saturation Value and Hex codes.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ColorPicker = /** @class */ (function (_super) {\n __extends(ColorPicker, _super);\n function ColorPicker(options, element) {\n return _super.call(this, options, element) || this;\n }\n ColorPicker.prototype.preRender = function () {\n var ele = this.element;\n this.formElement = closest(this.element, 'form');\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n var localeText = { Apply: 'Apply', Cancel: 'Cancel', ModeSwitcher: 'Switch Mode' };\n this.l10n = new L10n('colorpicker', localeText, this.locale);\n if (ele.getAttribute('ejs-for') && !ele.getAttribute('name')) {\n ele.setAttribute('name', ele.id);\n }\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n ColorPicker.prototype.render = function () {\n this.initWrapper();\n if (this.inline) {\n this.createWidget();\n }\n else {\n this.createSplitBtn();\n }\n if (!this.enableOpacity) {\n addClass([this.container.parentElement], HIDEOPACITY);\n }\n this.renderComplete();\n };\n ColorPicker.prototype.initWrapper = function () {\n var wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(wrapper, this.element);\n wrapper.appendChild(this.element);\n attributes(this.element, { 'tabindex': '-1', 'spellcheck': 'false', 'aria-label': 'colorpicker' });\n this.container = this.createElement('div', { className: CONTAINER });\n this.getWrapper().appendChild(this.container);\n var value = this.value ? this.roundValue(this.value).toLowerCase() : '#008000ff';\n if (this.noColor && this.mode === 'Palette' && this.value === '') {\n value = '';\n }\n var slicedValue = value.slice(0, 7);\n if (isNullOrUndefined(this.initialInputValue)) {\n this.initialInputValue = slicedValue;\n }\n this.element.value = slicedValue;\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': slicedValue }, true);\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.tileRipple = rippleEffect(this.container, { selector: '.' + TILE });\n this.ctrlBtnRipple = rippleEffect(this.container, { selector: '.e-btn' });\n };\n ColorPicker.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n ColorPicker.prototype.createWidget = function () {\n if (this.mode === 'Palette') {\n this.createPalette();\n if (!this.inline) {\n this.firstPaletteFocus();\n }\n }\n else {\n this.createPicker();\n if (!this.inline) {\n this.getDragHandler().focus();\n }\n }\n this.isRgb = true;\n this.createInput();\n this.createCtrlBtn();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.inline && this.disabled) {\n this.toggleDisabled(true);\n }\n if (Browser.isDevice) {\n this.refreshPopupPos();\n }\n };\n ColorPicker.prototype.createSplitBtn = function () {\n var _this = this;\n var splitButton = this.createElement('button', { className: 'e-split-colorpicker' });\n this.getWrapper().appendChild(splitButton);\n this.splitBtn = new SplitButton({\n iconCss: 'e-selected-color',\n target: this.container,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n createPopupOnClick: this.createPopupOnClick,\n open: this.onOpen.bind(this),\n click: function () {\n var ev = new MouseEvent('click', { bubbles: true, cancelable: false });\n _this.trigger('change', {\n currentValue: { hex: _this.value.slice(0, 7), rgba: _this.convertToRgbString(_this.hexToRgb(_this.value)) },\n previousValue: { hex: null, rgba: null }, value: _this.value, event: ev\n });\n }\n });\n this.splitBtn.createElement = this.createElement;\n this.splitBtn.appendTo(splitButton);\n var preview = this.createElement('span', { className: SPLITPREVIEW });\n select('.e-selected-color', splitButton).appendChild(preview);\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n var popupEle = this.getPopupEle();\n addClass([popupEle], 'e-colorpicker-popup');\n if (this.cssClass) {\n addClass([popupEle], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (Browser.isDevice && !this.createPopupOnClick) {\n var popupInst = this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(this.splitBtn.element).toString();\n }\n this.bindCallBackEvent();\n };\n ColorPicker.prototype.onOpen = function () {\n this.trigger('open', { element: this.container });\n if (!Browser.isDevice) {\n var popupInst = this.getPopupInst();\n var collision = isCollide(popupInst.element);\n if (collision.length > 0) {\n popupInst.collision = { X: 'flip', Y: 'fit' };\n popupInst.position = { X: 'right', Y: 'bottom' };\n popupInst.targetType = 'container';\n }\n }\n };\n ColorPicker.prototype.getPopupInst = function () {\n return getInstance(this.getPopupEle(), Popup);\n };\n ColorPicker.prototype.bindCallBackEvent = function () {\n var _this = this;\n this.splitBtn.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observeOpenArgs) {\n if (!observeOpenArgs.cancel) {\n var popupEle = _this.getPopupEle();\n popupEle.style.top = formatUnit(0 + pageYOffset);\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.display = 'block';\n _this.createWidget();\n popupEle.style.display = '';\n if (Browser.isDevice) {\n if (_this.createPopupOnClick) {\n var popupInst = _this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(_this.splitBtn.element).toString();\n }\n _this.modal = _this.createElement('div');\n _this.modal.className = 'e-' + _this.getModuleName() + ' e-modal';\n _this.modal.style.display = 'none';\n document.body.insertBefore(_this.modal, popupEle);\n document.body.className += ' e-colorpicker-overflow';\n _this.modal.style.display = 'block';\n _this.modal.style.zIndex = (Number(popupEle.style.zIndex) - 1).toString();\n }\n }\n args.cancel = observeOpenArgs.cancel;\n callBackPromise.resolve(observeOpenArgs);\n });\n return callBackPromise;\n };\n this.splitBtn.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n if (!isNullOrUndefined(args.event)) {\n var beforeCloseArgs = { element: _this.container, event: args.event, cancel: false };\n _this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n if (Browser.isDevice && args.event.target === _this.modal) {\n observedCloseArgs.cancel = true;\n }\n if (!observedCloseArgs.cancel) {\n _this.onPopupClose();\n }\n args.cancel = observedCloseArgs.cancel;\n callBackPromise.resolve(observedCloseArgs);\n });\n }\n else {\n callBackPromise.resolve(args);\n }\n return callBackPromise;\n };\n };\n ColorPicker.prototype.onPopupClose = function () {\n this.unWireEvents();\n this.destroyOtherComp();\n this.container.style.width = '';\n select('.' + SPLITPREVIEW, this.splitBtn.element).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n this.container.innerHTML = '';\n removeClass([this.container], [PICKERCONTENT, PALETTECONTENT]);\n if (Browser.isDevice && this.modal) {\n removeClass([document.body], 'e-colorpicker-overflow');\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n ColorPicker.prototype.createPalette = function () {\n classList(this.container, [PALETTECONTENT], [PICKERCONTENT]);\n if (this.presetColors) {\n var paletteGroup = this.createElement('div', { className: 'e-custom-palette' });\n this.appendElement(paletteGroup);\n var keys = Object.keys(this.presetColors);\n if (keys.length === 1) {\n this.appendPalette(this.presetColors[keys[0]], keys[0], paletteGroup);\n }\n else {\n for (var i = 0, len = keys.length; i < len; i++) {\n this.appendPalette(this.presetColors[keys[i]], keys[i], paletteGroup);\n }\n }\n if (selectAll('.e-row', paletteGroup).length > 10) {\n addClass([paletteGroup], 'e-palette-group');\n }\n }\n else {\n this.appendPalette(presets.default, 'default');\n }\n if (this.mode === 'Palette' && !this.modeSwitcher && this.noColor) {\n this.setNoColor();\n }\n var width = parseInt(getComputedStyle(this.container).borderBottomWidth, 10);\n this.container.style.width = formatUnit(this.container.children[0].offsetWidth + width + width);\n this.rgb = this.hexToRgb(this.roundValue(this.value));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n };\n ColorPicker.prototype.firstPaletteFocus = function () {\n if (!select('.' + SELECT, this.container.children[0])) {\n selectAll('.' + PALETTES, this.container)[0].focus();\n }\n };\n ColorPicker.prototype.appendPalette = function (colors, key, refEle) {\n var palette = this.createElement('div', { className: PALETTES, attrs: { 'tabindex': '0', 'role': 'grid' } });\n if (refEle) {\n refEle.appendChild(palette);\n }\n else {\n this.appendElement(palette);\n }\n var row;\n var tile;\n var roundedColor;\n for (var i = 0, len = colors.length; i < len; i++) {\n if (i === 0 || i % this.columns === 0) {\n row = this.createElement('div', {\n className: 'e-row', attrs: { 'role': 'row' }\n });\n palette.appendChild(row);\n }\n roundedColor = this.roundValue(colors[i]).toLowerCase();\n tile = this.createElement('span', {\n className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false', 'tabindex': '0' }\n });\n this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });\n row.appendChild(tile);\n if (this.value === roundedColor) {\n this.addTileSelection(tile);\n palette.focus();\n }\n tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));\n }\n };\n ColorPicker.prototype.setNoColor = function () {\n var noColorEle = this.container.querySelector('.e-row').children[0];\n noColorEle.classList.add(NOCOLOR);\n if (!this.value) {\n noColorEle.classList.add(SELECT);\n closest(noColorEle, '.' + PALETTES).focus();\n }\n ['aria-selected', 'aria-label'].forEach(function (attr) { noColorEle.removeAttribute(attr); });\n noColorEle.style.backgroundColor = '';\n };\n ColorPicker.prototype.appendElement = function (ele, insertPos) {\n if (insertPos === void 0) { insertPos = 0; }\n var refEle = this.container.children[insertPos];\n if (refEle) {\n this.container.insertBefore(ele, refEle);\n }\n else {\n this.container.appendChild(ele);\n }\n };\n ColorPicker.prototype.addTileSelection = function (ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n };\n ColorPicker.prototype.createPicker = function () {\n classList(this.container, [PICKERCONTENT], [PALETTECONTENT]);\n var hsvContainer = this.createElement('div', { className: HSVCONTAINER });\n this.appendElement(hsvContainer);\n hsvContainer.appendChild(this.createElement('div', { className: HSVAREA }));\n var dragHandler = this.createElement('span', { className: HANDLER, attrs: { 'tabindex': '0' } });\n hsvContainer.appendChild(dragHandler);\n if (this.value === null || this.value === '') {\n this.value = '#008000ff';\n }\n this.rgb = this.hexToRgb(this.value);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHsvContainerBg();\n this.setHandlerPosition();\n this.createSlider();\n this.createDragTooltip();\n };\n ColorPicker.prototype.setHsvContainerBg = function (h) {\n if (h === void 0) { h = this.hsv[0]; }\n this.getHsvContainer().style.backgroundColor = this.convertToRgbString(this.hsvToRgb(h, 100, 100, 1));\n };\n ColorPicker.prototype.getHsvContainer = function () {\n return select('.' + HSVCONTAINER, this.container);\n };\n ColorPicker.prototype.setHandlerPosition = function () {\n var dragHandler = this.getDragHandler();\n var hsvArea = select('.' + HSVAREA, this.container);\n if (this.enableRtl) {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * Math.abs(100 - this.hsv[1]) / 100);\n }\n else {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit(hsvArea.offsetHeight * (100 - this.hsv[2]) / 100);\n };\n ColorPicker.prototype.createSlider = function () {\n var sliderPreviewWrapper = this.createElement('div', { className: 'e-slider-preview' });\n this.appendElement(sliderPreviewWrapper, 1);\n this.createPreview(sliderPreviewWrapper);\n var sliderWrapper = this.createElement('div', { className: 'e-colorpicker-slider' });\n sliderPreviewWrapper.insertBefore(sliderWrapper, sliderPreviewWrapper.children[0]);\n var slider = this.createElement('div', { className: 'e-hue-slider' });\n sliderWrapper.appendChild(slider);\n this.hueSlider = new Slider({\n value: this.hsv[0],\n min: 0,\n max: 359,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.hueChange.bind(this)\n });\n this.hueSlider.createElement = this.createElement;\n this.hueSlider.appendTo(slider);\n if (this.enableOpacity) {\n slider = this.createElement('div', { className: 'e-opacity-slider' });\n sliderWrapper.appendChild(slider);\n this.createOpacitySlider(slider);\n }\n };\n ColorPicker.prototype.createOpacitySlider = function (slider) {\n this.opacitySlider = new Slider({\n value: this.rgb[3] * 100,\n min: 0,\n max: 100,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.opacityChange.bind(this)\n });\n this.opacitySlider.createElement = this.createElement;\n this.opacitySlider.appendTo(slider);\n var opacityBgTrack = this.createElement('div', { className: 'e-opacity-empty-track' });\n slider.appendChild(opacityBgTrack);\n this.updateOpacitySliderBg();\n };\n ColorPicker.prototype.updateOpacitySliderBg = function () {\n var direction = this.enableRtl ? 'to left' : 'to right';\n var opacityEle = select('.e-opacity-empty-track', this.opacitySlider.element);\n if (opacityEle) {\n opacityEle.style.background =\n 'linear-gradient(' + direction + ', rgba(' + this.rgb.slice(0, 3) + ', 0) 0%, ' +\n this.convertToRgbString(this.rgb.slice(0, 3)) + ' 100%)';\n }\n };\n ColorPicker.prototype.hueChange = function (args) {\n this.hsv[0] = args.value;\n this.setHsvContainerBg();\n this.convertToOtherFormat();\n };\n ColorPicker.prototype.opacityChange = function (args) {\n var value = args.value;\n var pValue = this.rgbToHex(this.rgb);\n this.hsv[3] = value / 100;\n this.rgb[3] = value / 100;\n var cValue = this.rgbToHex(this.rgb);\n this.updateOpacityInput(value);\n var rgb = this.convertToRgbString(this.rgb);\n this.updatePreview(rgb);\n this.triggerEvent(cValue, pValue, rgb);\n };\n ColorPicker.prototype.updateOpacityInput = function (value) {\n if (this.enableOpacity && !this.getWrapper().classList.contains(HIDEVALUE)) {\n var opacityTextBoxInst = getInstance(select('.' + OPACITY, this.container), NumericTextBox);\n opacityTextBoxInst.value = value;\n opacityTextBoxInst.dataBind();\n }\n };\n ColorPicker.prototype.createPreview = function (parentEle) {\n var previewContainer = this.createElement('div', { className: PREVIEW });\n parentEle.appendChild(previewContainer);\n var preview = this.createElement('span', { className: 'e-preview ' + CURRENT });\n previewContainer.appendChild(preview);\n var colorValue = this.convertToRgbString(this.rgb);\n preview.style.backgroundColor = colorValue;\n preview = this.createElement('span', { className: 'e-preview ' + PREVIOUS });\n previewContainer.appendChild(preview);\n preview.style.backgroundColor = colorValue;\n };\n ColorPicker.prototype.isPicker = function () {\n return !this.container.classList.contains(PALETTECONTENT);\n };\n ColorPicker.prototype.getPopupEle = function () {\n return this.container.parentElement;\n };\n ColorPicker.prototype.createNumericInput = function (element, value, label, max) {\n var _this = this;\n var numericInput = new NumericTextBox({\n value: value,\n placeholder: label,\n min: 0,\n max: max,\n format: '###.##',\n showSpinButton: false,\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true,\n change: function (args) {\n if (args.event) {\n _this.inputHandler(args.event);\n }\n }\n });\n numericInput.createElement = this.createElement;\n numericInput.appendTo(element);\n };\n ColorPicker.prototype.createInput = function () {\n var isPicker = this.isPicker();\n var wrapper = this.getWrapper();\n if ((isPicker && !wrapper.classList.contains(HIDEVALUE)) || (!isPicker && wrapper.classList.contains(SHOWVALUE))) {\n var inputWrap = this.createElement('div', { className: INPUTWRAPPER });\n if (isPicker) {\n this.appendElement(inputWrap, 2);\n }\n else {\n this.appendElement(inputWrap, 1);\n }\n var container = this.createElement('div', { className: 'e-input-container' });\n inputWrap.appendChild(container);\n if (!wrapper.classList.contains(HIDEVALUESWITCH)) {\n this.appendValueSwitchBtn(inputWrap);\n }\n if (!wrapper.classList.contains(HIDEHEX)) {\n var hexInput = this.createElement('input', {\n className: HEX,\n attrs: { 'maxlength': '7', 'spellcheck': 'false', 'aria-label': 'HEX' }\n });\n container.appendChild(hexInput);\n Input.createInput({\n element: hexInput,\n floatLabelType: 'Always',\n properties: {\n placeholder: 'HEX',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true\n }\n }, this.createElement);\n Input.setValue(this.value.slice(0, 7), hexInput);\n hexInput.addEventListener('input', this.inputHandler.bind(this));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n var label = void 0;\n var value = void 0;\n if (this.isRgb) {\n label = 'RGB';\n value = this.rgb;\n }\n else {\n label = 'HSV';\n value = this.hsv;\n }\n var clsName = ['rh', 'gs', 'bv'];\n for (var i = 0; i < 3; i++) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: 'e-' + clsName[i] + '-value' })), value[i], label[i], 255);\n }\n if (this.enableOpacity) {\n this.appendOpacityValue(container);\n }\n }\n }\n };\n ColorPicker.prototype.appendOpacityValue = function (container) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: OPACITY })), this.rgb[3] * 100, 'A', 100);\n };\n ColorPicker.prototype.appendValueSwitchBtn = function (targetEle) {\n var valueSwitchBtn = this.createElement('button', {\n className: 'e-icons e-css e-btn e-flat e-icon-btn ' + FORMATSWITCH,\n attrs: { 'title': 'Toggle format' }\n });\n targetEle.appendChild(valueSwitchBtn);\n if (this.isPicker() && !this.getWrapper().classList.contains(HIDERGBA)) {\n valueSwitchBtn.addEventListener('click', this.formatSwitchHandler.bind(this));\n }\n };\n ColorPicker.prototype.createCtrlBtn = function () {\n if (this.modeSwitcher || this.showButtons) {\n this.l10n.setLocale(this.locale);\n var btnWrapper = this.createElement('div', { className: CTRLSWITCH });\n this.container.appendChild(btnWrapper);\n if (this.showButtons) {\n var controlBtnWrapper = this.createElement('div', { className: CTRLBTN });\n btnWrapper.appendChild(controlBtnWrapper);\n var apply = this.l10n.getConstant('Apply');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: apply,\n className: 'e-btn e-css e-flat e-primary e-small ' + APPLY,\n attrs: { 'title': apply }\n }));\n var cancel = this.l10n.getConstant('Cancel');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: cancel,\n className: 'e-btn e-css e-flat e-small ' + CANCEL,\n attrs: { 'title': cancel }\n }));\n }\n if (this.modeSwitcher) {\n this.appendModeSwitchBtn();\n }\n }\n };\n ColorPicker.prototype.appendModeSwitchBtn = function () {\n var modeSwitcher = this.createElement('button', {\n className: 'e-icons e-btn e-flat e-icon-btn ' + MODESWITCH, attrs: { title: this.l10n.getConstant('ModeSwitcher') }\n });\n select('.' + CTRLSWITCH, this.container).insertBefore(modeSwitcher, select('.' + CTRLBTN, this.container));\n };\n ColorPicker.prototype.createDragTooltip = function () {\n var _this = this;\n var tooltip = new Tooltip({\n opensOn: 'Custom',\n showTipPointer: false,\n cssClass: 'e-color-picker-tooltip',\n htmlAttributes: { title: 'tooltip' },\n beforeOpen: function (args) {\n _this.tooltipEle = args.element;\n },\n animation: { open: { effect: 'None' }, close: { effect: 'None' } }\n });\n tooltip.createElement = this.createElement;\n tooltip.appendTo(this.container);\n tooltip.open(this.container);\n this.tooltipEle.style.zIndex = getZindexPartial(this.tooltipEle).toString();\n this.tooltipEle.setAttribute('aria-label', 'colorpicker-tooltip');\n select('.e-tip-content', this.tooltipEle).appendChild(this.createElement('div', { className: 'e-tip-transparent' }));\n };\n ColorPicker.prototype.getTooltipInst = function () {\n return getInstance(this.container, Tooltip);\n };\n ColorPicker.prototype.setTooltipOffset = function (value) {\n this.getTooltipInst().offsetY = value;\n };\n ColorPicker.prototype.toggleDisabled = function (enable) {\n if (enable) {\n this.getWrapper().classList.add(DISABLED);\n }\n else {\n this.getWrapper().classList.remove(DISABLED);\n }\n if (this.showButtons) {\n ([].slice.call(selectAll('.e-btn', this.container))).forEach(function (ele) {\n if (enable) {\n attributes(ele, { 'disabled': '' });\n }\n else {\n ele.removeAttribute('disabled');\n }\n });\n }\n };\n ColorPicker.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n ColorPicker.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n ColorPicker.prototype.updateHsv = function () {\n this.hsv[1] = this.hsv[1] > 100 ? 100 : this.hsv[1];\n this.hsv[2] = this.hsv[2] > 100 ? 100 : this.hsv[2];\n this.setHandlerPosition();\n };\n ColorPicker.prototype.convertToOtherFormat = function (isKey, e) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hsvToRgb.apply(this, this.hsv);\n var cValue = this.rgbToHex(this.rgb);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.updateInput(cValue);\n this.triggerEvent(cValue, pValue, rgba, isKey, e);\n };\n ColorPicker.prototype.updateInput = function (value) {\n var wrapper = this.getWrapper();\n if (!wrapper.classList.contains(HIDEVALUE)) {\n if (!wrapper.classList.contains(HIDEHEX)) {\n Input.setValue(value.substr(0, 7), select('.' + HEX, this.container));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n if (this.isRgb) {\n this.updateValue(this.rgb, false);\n }\n else {\n this.updateValue(this.hsv, false);\n }\n }\n }\n };\n ColorPicker.prototype.updatePreview = function (value) {\n if (this.enableOpacity) {\n this.updateOpacitySliderBg();\n }\n select('.e-tip-transparent', this.tooltipEle).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + PREVIOUS, this.container).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n };\n ColorPicker.prototype.getDragHandler = function () {\n return select('.' + HANDLER, this.container);\n };\n ColorPicker.prototype.removeTileSelection = function () {\n var selectedEle = [].slice.call(selectAll('.' + SELECT, this.container.children[0]));\n selectedEle.forEach(function (ele) {\n ele.classList.remove(SELECT);\n ele.setAttribute('aria-selected', 'false');\n });\n };\n ColorPicker.prototype.convertRgbToNumberArray = function (value) {\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map(function (n, i) {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n };\n /**\n * To get color value in specified type.\n *\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @method getValue\n * @returns {string} - Color value\n */\n ColorPicker.prototype.getValue = function (value, type) {\n if (!value) {\n value = this.value;\n }\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @method toggle\n * @returns {void}\n */\n ColorPicker.prototype.toggle = function () {\n if (this.container.parentElement.classList.contains('e-popup-close')) {\n this.splitBtn.toggle();\n }\n else {\n this.closePopup(null);\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ColorPicker.prototype.getModuleName = function () {\n return 'colorpicker';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ColorPicker.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ColorPicker.prototype.wireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.add(dragHandler, 'keydown', this.pickerKeyDown, this);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.add(ctrlBtn, 'keydown', this.ctrlBtnKeyDown, this);\n }\n EventHandler.add(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown, this);\n if (this.modeSwitcher || this.showButtons) {\n this.addCtrlSwitchEvent();\n }\n EventHandler.add(select('.' + PREVIOUS, this.container), 'click', this.previewHandler, this);\n }\n else {\n EventHandler.add(this.container, 'click', this.paletteClickHandler, this);\n EventHandler.add(this.container, 'keydown', this.paletteKeyDown, this);\n }\n };\n ColorPicker.prototype.formResetHandler = function () {\n this.value = this.initialInputValue;\n attributes(this.element, { 'value': this.initialInputValue });\n };\n ColorPicker.prototype.addCtrlSwitchEvent = function () {\n var ctrlSwitchBtn = select('.' + CTRLSWITCH, this.container);\n if (ctrlSwitchBtn) {\n EventHandler.add(ctrlSwitchBtn, 'click', this.btnClickHandler, this);\n }\n };\n ColorPicker.prototype.ctrlBtnKeyDown = function (e) {\n if (e.keyCode === 13) {\n var applyBtn = select('.' + APPLY, this.container);\n if (applyBtn) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.pickerKeyDown = function (e) {\n switch (e.keyCode) {\n case 39:\n this.handlerDragPosition(1, this.enableRtl ? -1 : 1, e);\n break;\n case 37:\n this.handlerDragPosition(1, this.enableRtl ? 1 : -1, e);\n break;\n case 38:\n this.handlerDragPosition(2, 1, e);\n break;\n case 40:\n this.handlerDragPosition(2, -1, e);\n break;\n case 13: {\n e.preventDefault();\n var cValue = this.rgbToHex(this.rgb);\n this.enterKeyHandler(cValue, e);\n }\n }\n };\n ColorPicker.prototype.enterKeyHandler = function (value, e) {\n this.triggerChangeEvent(value);\n if (!this.inline) {\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.closePopup = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n _this.splitBtn.toggle();\n _this.onPopupClose();\n }\n });\n };\n ColorPicker.prototype.triggerChangeEvent = function (value, e) {\n var hex = value.slice(0, 7);\n this.trigger('change', {\n currentValue: { hex: hex, rgba: this.convertToRgbString(this.rgb) }, event: e,\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) },\n value: this.enableOpacity ? value : hex\n });\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n };\n ColorPicker.prototype.handlerDragPosition = function (prob, value, e) {\n e.preventDefault();\n this.hsv[prob] += value * (e.ctrlKey ? 1 : 3);\n if (this.hsv[prob] < 0) {\n this.hsv[prob] = 0;\n }\n this.updateHsv();\n this.convertToOtherFormat(true, e);\n };\n ColorPicker.prototype.handlerDown = function (e) {\n e.preventDefault();\n if (e.type === 'mousedown') {\n this.clientX = Math.abs(e.pageX - pageXOffset);\n this.clientY = Math.abs(e.pageY - pageYOffset);\n this.setTooltipOffset(8);\n }\n else {\n this.clientX = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n this.clientY = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n this.setTooltipOffset(-8);\n }\n this.setHsv(this.clientX, this.clientY);\n this.getDragHandler().style.transition = 'left .4s cubic-bezier(.25, .8, .25, 1), top .4s cubic-bezier(.25, .8, .25, 1)';\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n this.getDragHandler().focus();\n EventHandler.add(document, 'mousemove touchmove', this.handlerMove, this);\n EventHandler.add(document, 'mouseup touchend', this.handlerEnd, this);\n };\n ColorPicker.prototype.handlerMove = function (e) {\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n var x;\n var y;\n if (e.type === 'mousemove') {\n x = Math.abs(e.pageX - pageXOffset);\n y = Math.abs(e.pageY - pageYOffset);\n }\n else {\n x = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n y = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n }\n this.setHsv(x, y);\n var dragHandler = this.getDragHandler();\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n this.getTooltipInst().refresh(dragHandler);\n if (!this.tooltipEle.style.transform) {\n if (Math.abs(this.clientX - x) > 8 || Math.abs(this.clientY - y) > 8) {\n select('.' + HSVAREA, this.container).style.cursor = 'pointer';\n dragHandler.style.transition = 'none';\n if (!this.inline) {\n this.tooltipEle.style.zIndex = (parseInt(this.getPopupEle().style.zIndex, 10) + 1).toString();\n }\n this.tooltipEle.style.transform = 'rotate(45deg)';\n dragHandler.classList.add('e-hide-handler');\n }\n }\n };\n ColorPicker.prototype.setHsv = function (clientX, clientY) {\n var ele = select('.' + HSVAREA, this.container);\n var position = ele.getBoundingClientRect();\n if (this.enableRtl) {\n clientX = clientX > position.right ? 0 : Math.abs(clientX - position.right);\n }\n else {\n clientX = clientX > position.left ? Math.abs(clientX - position.left) : 0;\n }\n clientY = clientY > position.top ? Math.abs(clientY - position.top) : 0;\n this.hsv[2] = Math.round(Number(100 * (ele.offsetHeight -\n Math.max(0, Math.min(ele.offsetHeight, (clientY - ele.offsetTop)))) / ele.offsetHeight) * 10) / 10;\n this.hsv[1] =\n Math.round(Number(100 * (Math.max(0, Math.min(ele.offsetWidth, (clientX - ele.offsetLeft)))) / ele.offsetWidth) * 10) / 10;\n };\n ColorPicker.prototype.handlerEnd = function (e) {\n if (e.type !== 'touchend') {\n e.preventDefault();\n }\n EventHandler.remove(document, 'mousemove touchmove', this.handlerMove);\n EventHandler.remove(document, 'mouseup touchend', this.handlerEnd);\n var dragHandler = this.getDragHandler();\n select('.' + HSVAREA, this.container).style.cursor = '';\n if (this.tooltipEle.style.transform) {\n this.tooltipEle.style.transform = '';\n dragHandler.classList.remove('e-hide-handler');\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n };\n ColorPicker.prototype.btnClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.' + MODESWITCH)) {\n e.stopPropagation();\n this.switchToPalette();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n }\n };\n ColorPicker.prototype.switchToPalette = function () {\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Palette' });\n this.unWireEvents();\n this.destroyOtherComp();\n detach(select('.e-slider-preview', this.container));\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n detach(this.getHsvContainer());\n this.createPalette();\n this.firstPaletteFocus();\n this.createInput();\n this.refreshPopupPos();\n //for image editor popup position refreshing\n if (this.element.parentElement && this.element.parentElement.parentElement && this.element.parentElement.parentElement.classList.contains('e-ie-ddb-popup')) {\n this.refreshImageEditorPopupPos();\n }\n ;\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Palette' });\n };\n //for image editor popup position refreshing\n ColorPicker.prototype.refreshImageEditorPopupPos = function () {\n if (Browser.isDevice) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n var btnElem = document.querySelector(\"#\" + this.element.parentElement.parentElement.id.split('-popup')[0]);\n if (btnElem) {\n popupEle.parentElement.ej2_instances[0].refreshPosition(btnElem);\n }\n }\n };\n ColorPicker.prototype.refreshPopupPos = function () {\n if (!this.inline) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n this.getPopupInst().refreshPosition(this.splitBtn.element.parentElement);\n }\n };\n ColorPicker.prototype.formatSwitchHandler = function () {\n if (this.isRgb) {\n this.updateValue(this.hsv, true, 3, [360, 100, 100]);\n this.isRgb = false;\n }\n else {\n this.updateValue(this.rgb, true, 2);\n this.isRgb = true;\n }\n };\n ColorPicker.prototype.updateValue = function (value, format, idx, max) {\n var clsName = ['e-rh-value', 'e-gs-value', 'e-bv-value'];\n var inst;\n for (var i = 0, len = clsName.length; i < len; i++) {\n inst = getInstance(select('.' + clsName[i], this.container), NumericTextBox);\n inst.value = Math.round(value[i]);\n if (format) {\n inst.placeholder = clsName[i].substr(idx, 1).toUpperCase();\n inst.max = max ? max[i] : 255;\n }\n inst.dataBind();\n }\n };\n ColorPicker.prototype.previewHandler = function (e) {\n var target = e.target;\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.convertRgbToNumberArray(target.style.backgroundColor);\n if (!this.rgb[3]) {\n this.rgb[3] = 1;\n }\n var cValue = this.rgbToHex(this.rgb);\n var hsv = this.rgbToHsv.apply(this, this.rgb);\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n }\n this.setHsvContainerBg(hsv[0]);\n if (this.enableOpacity && hsv[3] !== this.hsv[3]) {\n this.opacitySlider.setProperties({ 'value': hsv[3] * 100 }, true);\n this.opacitySlider.refresh();\n this.updateOpacitySliderBg();\n }\n this.hsv = hsv;\n this.setHandlerPosition();\n this.updateInput(cValue);\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = this.convertToRgbString(this.rgb);\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), false, e);\n };\n ColorPicker.prototype.paletteClickHandler = function (e) {\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(TILE)) {\n this.removeTileSelection();\n this.addTileSelection(target);\n if (target.classList.contains(NOCOLOR)) {\n this.noColorTile();\n }\n else {\n var cValue = target.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(this.roundValue(cValue));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), false, e);\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n }\n else {\n if (closest(target, '.' + MODESWITCH)) {\n this.switchToPicker();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n else {\n if (this.getWrapper().classList.contains(SHOWVALUE) && closest(target, '.' + FORMATSWITCH)) {\n this.formatSwitchHandler();\n }\n }\n }\n }\n };\n ColorPicker.prototype.noColorTile = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = [];\n this.hsv = [];\n this.triggerEvent('', pValue, '', isKey);\n };\n ColorPicker.prototype.switchToPicker = function () {\n var wrapper = this.getWrapper();\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Picker' });\n this.unWireEvents();\n ([].slice.call(selectAll('.' + PALETTES, this.container))).forEach(function (ele) {\n detach(ele);\n });\n if (wrapper.classList.contains(SHOWVALUE)) {\n detach(select('.' + INPUTWRAPPER, this.container));\n }\n this.container.style.width = '';\n var grpEle = select('.e-custom-palette', this.container);\n if (this.presetColors) {\n remove(grpEle);\n }\n this.createPicker();\n this.getDragHandler().focus();\n this.createInput();\n this.refreshPopupPos();\n //for image editor popup position refreshing\n if (this.element.parentElement && this.element.parentElement.parentElement && this.element.parentElement.parentElement.classList.contains('e-ie-ddb-popup')) {\n this.refreshImageEditorPopupPos();\n }\n ;\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Picker' });\n };\n ColorPicker.prototype.ctrlBtnClick = function (ele, e) {\n if (ele.classList.contains(APPLY)) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue, e);\n }\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n else if (ele.classList.contains(CANCEL)) {\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs);\n }\n };\n ColorPicker.prototype.paletteKeyDown = function (e) {\n var target = e.target;\n if (!target.classList.contains(PALETTES)) {\n return;\n }\n var selectedEle;\n var idx;\n var tiles = [].slice.call(selectAll('.' + TILE, target));\n var prevSelectedEle = (tiles.filter(function (tile) { return tile.classList.contains('e-selected'); })).pop();\n switch (!e.altKey && e.keyCode) {\n case 39:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? -1 : 1)]\n : tiles[this.enableRtl ? tiles.length - 1 : 0];\n this.keySelectionChanges(selectedEle);\n break;\n case 37:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? 1 : -1)]\n : tiles[this.enableRtl ? 0 : tiles.length - 1];\n this.keySelectionChanges(selectedEle);\n break;\n case 38:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, -this.columns) : 0;\n selectedEle = tiles[idx] ? tiles[idx] : tiles[idx - this.columns];\n this.keySelectionChanges(selectedEle);\n break;\n case 40:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, this.columns) : tiles.length - 1;\n if (tiles[idx]) {\n selectedEle = tiles[idx];\n }\n else {\n idx %= tiles.length;\n idx += tiles[tiles.length - 1].parentElement.childElementCount;\n selectedEle = tiles[idx];\n }\n this.keySelectionChanges(selectedEle);\n break;\n case 13:\n e.preventDefault();\n if (prevSelectedEle) {\n var cValue = prevSelectedEle.getAttribute('aria-label');\n this.enterKeyHandler(cValue ? cValue : '', e);\n }\n }\n };\n ColorPicker.prototype.keySelectionChanges = function (newEle) {\n this.removeTileSelection();\n this.addTileSelection(newEle);\n if (newEle.classList.contains(NOCOLOR)) {\n this.noColorTile(true);\n }\n else {\n var cValue = newEle.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(cValue);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);\n }\n };\n ColorPicker.prototype.tilePosition = function (items, element, cIdx) {\n items = Array.prototype.slice.call(items);\n var n = items.length;\n var emptyCount = this.columns - items[n - 1].parentElement.childElementCount;\n var idx = items.indexOf(element);\n idx += cIdx;\n if (idx < 0) {\n idx += n + emptyCount;\n }\n else {\n idx %= n + emptyCount;\n }\n return idx;\n };\n ColorPicker.prototype.inputHandler = function (e) {\n var target = e.target;\n if (!target.value.length) {\n return;\n }\n var hsv;\n var pValue;\n var label = select('.e-float-text', target.parentElement).textContent;\n switch (label) {\n case 'HEX': {\n var value = '';\n if ((target.value[0] === '#' && target.value.length !== 5) || (target.value[0] !== '#' && target.value.length !== 4)) {\n value = this.roundValue(target.value);\n }\n if (value.length === 9) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(value + value.substr(-2));\n this.inputValueChange(this.rgbToHsv.apply(this, this.rgb), pValue, target.value, e);\n }\n else {\n return;\n }\n break;\n }\n case 'R':\n if (this.rgb[0] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[0] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue, null, e);\n }\n break;\n case 'G':\n if (this.rgb[1] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[1] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue, null, e);\n }\n break;\n case 'B':\n if (this.rgb[2] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[2] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue, null, e);\n }\n break;\n case 'H':\n this.hueSlider.value = Number(target.value);\n break;\n case 'S':\n if (this.hsv[1] !== Number(target.value)) {\n this.hsv[1] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n }\n break;\n case 'V':\n if (this.hsv[2] !== Number(target.value)) {\n this.hsv[2] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n }\n break;\n case 'A':\n this.opacitySlider.value = Number(target.value);\n break;\n }\n };\n ColorPicker.prototype.inputValueChange = function (hsv, pValue, value, e) {\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n this.setHsvContainerBg(hsv[0]);\n }\n this.hsv = hsv;\n var cValue = this.rgbToHex(this.rgb);\n this.setHandlerPosition();\n this.updateInput(value ? value : cValue);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.triggerEvent(cValue, pValue, rgba, false, e);\n };\n ColorPicker.prototype.triggerEvent = function (cValue, pValue, rgba, isKey, e) {\n if (isKey === void 0) { isKey = false; }\n var hex = cValue.slice(0, 7);\n if (isNullOrUndefined(e)) {\n e = new MouseEvent('click', { bubbles: true, cancelable: false });\n }\n if (!this.showButtons && !isKey) {\n this.trigger('change', { currentValue: { hex: hex, rgba: rgba }, event: e,\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) }, value: cValue });\n if (this.enableOpacity) {\n this.setProperties({ 'value': cValue }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n }\n else {\n this.trigger('select', {\n currentValue: { hex: hex, rgba: rgba }, event: e,\n previousValue: { hex: pValue.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(pValue)) }\n });\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n ColorPicker.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n ['tabindex', 'spellcheck'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n if (this.inline) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n else {\n if (this.isPopupOpen()) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n this.splitBtn.destroy();\n this.splitBtn = null;\n }\n this.tileRipple();\n this.tileRipple = null;\n this.ctrlBtnRipple();\n this.ctrlBtnRipple = null;\n if (this.element.nextElementSibling) {\n detach(this.element.nextElementSibling);\n }\n if (wrapper) {\n wrapper.parentElement.insertBefore(this.element, wrapper);\n detach(wrapper);\n }\n this.container = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n ColorPicker.prototype.destroyOtherComp = function () {\n if (this.isPicker()) {\n var popup = closest(this.hueSlider.element, '.e-color-picker');\n var numericElemColl = popup.querySelectorAll('.e-numerictextbox');\n for (var i = 0; i < numericElemColl.length; i++) {\n getInstance(numericElemColl[i], NumericTextBox).destroy();\n }\n this.hueSlider.destroy();\n if (this.enableOpacity) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n this.hueSlider = null;\n var tooltipInst = this.getTooltipInst();\n tooltipInst.close();\n tooltipInst.destroy();\n this.tooltipEle = null;\n }\n };\n ColorPicker.prototype.isPopupOpen = function () {\n return this.getPopupEle().classList.contains('e-popup-open');\n };\n ColorPicker.prototype.unWireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.remove(dragHandler, 'keydown', this.pickerKeyDown);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.remove(ctrlBtn, 'keydown', this.ctrlBtnKeyDown);\n }\n EventHandler.remove(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown);\n if (this.modeSwitcher || this.showButtons) {\n EventHandler.remove(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler);\n }\n EventHandler.remove(select('.' + PREVIOUS, this.container), 'click', this.previewHandler);\n }\n else {\n EventHandler.remove(this.container, 'click', this.paletteClickHandler);\n EventHandler.remove(this.container, 'keydown', this.paletteKeyDown);\n }\n };\n ColorPicker.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n ColorPicker.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n ColorPicker.prototype.rgbToHsv = function (r, g, b, opacity) {\n if (this.rgb && !this.rgb.length) {\n return [];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n ColorPicker.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n ColorPicker.prototype.rgbToHex = function (rgb) {\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n };\n ColorPicker.prototype.hex = function (x) {\n return ('0' + x.toString(16)).slice(-2);\n };\n ColorPicker.prototype.changeModeSwitcherProp = function (prop) {\n var ctrlSwitchWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlSwitchWrapper) {\n this.appendModeSwitchBtn();\n }\n else {\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n }\n else {\n if (ctrlSwitchWrapper) {\n if (this.showButtons) {\n detach(select('.' + MODESWITCH, ctrlSwitchWrapper));\n }\n else {\n remove(ctrlSwitchWrapper);\n }\n }\n }\n };\n ColorPicker.prototype.changeShowBtnProps = function (prop) {\n var ctrlBtnWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlBtnWrapper) {\n remove(ctrlBtnWrapper);\n }\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n else {\n if (this.modeSwitcher) {\n detach(select('.' + CTRLBTN, ctrlBtnWrapper));\n }\n else {\n remove(ctrlBtnWrapper);\n }\n }\n };\n ColorPicker.prototype.changeValueProp = function (newProp) {\n if (this.isPicker()) {\n this.rgb = this.hexToRgb(newProp);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHandlerPosition();\n detach(closest(this.hueSlider.element, '.e-slider-preview'));\n this.createSlider();\n this.setHsvContainerBg();\n this.updateInput(newProp);\n if (this.rgb.length === 4) {\n this.updateOpacityInput(this.rgb[3] * 100);\n }\n }\n else {\n this.removeTileSelection();\n var ele = this.container.querySelector('span[aria-label=\"' + this.roundValue(newProp) + '\"]');\n if (ele) {\n this.addTileSelection(ele);\n }\n }\n };\n ColorPicker.prototype.setInputEleProps = function () {\n remove(select('.' + INPUTWRAPPER, this.container));\n this.createInput();\n };\n ColorPicker.prototype.changeDisabledProp = function (newProp) {\n if (this.isPicker()) {\n this.hueSlider.enabled = !newProp;\n this.opacitySlider.enabled = !newProp;\n this.setInputEleProps();\n }\n if (newProp) {\n this.toggleDisabled(true);\n this.unWireEvents();\n }\n else {\n this.toggleDisabled(false);\n this.wireEvents();\n }\n };\n ColorPicker.prototype.changeCssClassProps = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n var popupWrapper = this.getPopupEle();\n if (oldProp) {\n removeClass([wrapper, popupWrapper], oldProp.split(' '));\n }\n if (newProp) {\n addClass([wrapper, popupWrapper], newProp.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n ColorPicker.prototype.changeRtlProps = function (newProp) {\n if (newProp) {\n addClass([this.getWrapper()], 'e-rtl');\n }\n else {\n removeClass([this.getWrapper()], 'e-rtl');\n }\n };\n ColorPicker.prototype.changePaletteProps = function () {\n detach(this.container.children[0]);\n this.container.style.width = '';\n this.createPalette();\n };\n ColorPicker.prototype.changeOpacityProps = function (newProp) {\n var wrapper = this.getWrapper();\n if (newProp) {\n removeClass([this.container.parentElement], HIDEOPACITY);\n this.createOpacitySlider(select('.e-colorpicker-slider', this.container).appendChild(this.createElement('div', { className: 'e-opacity-slider' })));\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n this.appendOpacityValue(select('.e-input-container', this.container));\n }\n }\n else {\n addClass([this.container.parentElement], HIDEOPACITY);\n this.opacitySlider.destroy();\n remove(this.opacitySlider.element);\n this.opacitySlider = null;\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n remove(select('.' + OPACITY, this.container).parentElement);\n }\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ColorPickerModel} newProp - Specifies new properties\n * @param {ColorPickerModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ColorPicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.value)) {\n var value = this.roundValue(newProp.value);\n if (value.length === 9) {\n this.element.value = this.roundValue(value).slice(0, 7);\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n if (preview) {\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(newProp.value));\n }\n }\n else if (this.noColor && this.mode === 'Palette' && this.value === '') {\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n preview.style.backgroundColor = '';\n }\n else {\n this.value = oldProp.value;\n }\n }\n if (!this.inline && isNullOrUndefined(newProp.inline)) {\n var otherCompModel = ['disabled', 'enableRtl'];\n this.splitBtn.setProperties(getModel(newProp, otherCompModel));\n if (!this.isPopupOpen()) {\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n this.changeRtlProps(newProp.enableRtl);\n return;\n }\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'inline':\n if (newProp.inline) {\n this_1.getWrapper().appendChild(this_1.container);\n this_1.splitBtn.destroy();\n detach(this_1.element.nextElementSibling);\n if (!this_1.container.children.length) {\n this_1.createWidget();\n }\n }\n else {\n this_1.destroyOtherComp();\n this_1.unWireEvents();\n this_1.container.innerHTML = '';\n this_1.createSplitBtn();\n }\n break;\n case 'cssClass': {\n this_1.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n var props = newProp.cssClass.split(' ').concat(oldProp.cssClass.split(' '));\n props = props.reduce(function (a, b) { if (a.indexOf(b) < 0) {\n a.push(b);\n } return a; }, []);\n var count_1 = 0;\n props.forEach(function (cls) {\n if (count_1 === 0 &&\n (cls === HIDEVALUE || cls === HIDEVALUESWITCH || cls === SHOWVALUE || cls === HIDEHEX || cls === HIDERGBA)) {\n var inputWrap = select('.' + INPUTWRAPPER, _this.container);\n if (inputWrap) {\n remove(select('.' + INPUTWRAPPER, _this.container));\n }\n _this.createInput();\n count_1++;\n }\n });\n break;\n }\n case 'enableRtl':\n if (this_1.isPicker()) {\n this_1.hueSlider.enableRtl = newProp.enableRtl;\n if (this_1.enableOpacity) {\n this_1.opacitySlider.enableRtl = newProp.enableRtl;\n }\n this_1.setInputEleProps();\n }\n this_1.changeRtlProps(newProp.enableRtl);\n break;\n case 'disabled':\n this_1.changeDisabledProp(newProp.disabled);\n break;\n case 'value':\n if (this_1.value !== oldProp.value) {\n this_1.changeValueProp(newProp.value);\n }\n break;\n case 'showButtons':\n this_1.changeShowBtnProps(newProp.showButtons);\n break;\n case 'mode':\n if (newProp.mode === 'Picker') {\n this_1.switchToPicker();\n }\n else {\n this_1.switchToPalette();\n }\n break;\n case 'modeSwitcher':\n this_1.changeModeSwitcherProp(newProp.modeSwitcher);\n break;\n case 'columns':\n case 'presetColors':\n if (!this_1.isPicker()) {\n this_1.changePaletteProps();\n }\n break;\n case 'noColor':\n if (newProp.noColor) {\n if (this_1.mode === 'Palette' && !this_1.modeSwitcher) {\n this_1.setNoColor();\n }\n }\n else {\n this_1.changePaletteProps();\n }\n break;\n case 'enableOpacity':\n this_1.changeOpacityProps(newProp.enableOpacity);\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n /**\n * Sets the focus to Colorpicker\n * its native method\n *\n * @public\n * @returns {void}\n */\n ColorPicker.prototype.focusIn = function () {\n this.element.parentElement.focus();\n };\n __decorate([\n Property('#008000ff')\n ], ColorPicker.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ColorPicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"disabled\", void 0);\n __decorate([\n Property('Picker')\n ], ColorPicker.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(null)\n ], ColorPicker.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"showButtons\", void 0);\n __decorate([\n Property(10)\n ], ColorPicker.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"inline\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"noColor\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"onModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"created\", void 0);\n ColorPicker = __decorate([\n NotifyPropertyChanges\n ], ColorPicker);\n return ColorPicker;\n}(Component));\nexport { ColorPicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React ColorPicker Component\n * ```html\n * \n * ```\n */\nvar ColorPickerComponent = /** @class */ (function (_super) {\n __extends(ColorPickerComponent, _super);\n function ColorPickerComponent(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 ColorPickerComponent.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 ColorPickerComponent;\n}(ColorPicker));\nexport { ColorPickerComponent };\napplyMixins(ColorPickerComponent, [ComponentBase, React.Component]);\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 spinnerInnerContainer.setAttribute('aria-disabled', 'true');\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","/**\n * Kanban Constants\n */\n// Constants for public events\n/** @private */\nexport var actionBegin = 'actionBegin';\n/** @private */\nexport var actionComplete = 'actionComplete';\n/** @private */\nexport var actionFailure = 'actionFailure';\n/** @private */\nexport var cardClick = 'cardClick';\n/** @private */\nexport var cardDoubleClick = 'cardDoubleClick';\n/** @private */\nexport var cardRendered = 'cardRendered';\n/** @private */\nexport var queryCellInfo = 'queryCellInfo';\n/** @private */\nexport var dataBinding = 'dataBinding';\n/** @private */\nexport var dataBound = 'dataBound';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragStop = 'dragStop';\n/** @private */\nexport var documentClick = 'document-click';\n/** @private */\nexport var dialogOpen = 'dialogOpen';\n/** @private */\nexport var dialogClose = 'dialogClose';\n// Constants for internal events\n/** @private */\nexport var contentReady = 'content-ready';\n/** @private */\nexport var dataReady = 'data-ready';\n/** @private */\nexport var bottomSpace = 25;\n/** @private */\nexport var cardSpace = 16;\n/** @private */\nexport var toggleWidth = 50;\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { extend, isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, UrlAdaptor } from '@syncfusion/ej2-data';\nimport * as events from './constant';\n/**\n * Kanban data module\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n *\n * @param {Kanban} parent Accepts the instance of the Kanban\n */\n function Data(parent) {\n this.initload = false;\n this.dataState = { isPending: false, resolver: null, isDataChanged: false };\n this.parent = parent;\n this.keyField = this.parent.cardSettings.headerField;\n this.dataState = { isDataChanged: false };\n this.isObservable = false;\n this.initDataManager(parent.dataSource, parent.query);\n this.refreshDataManager();\n }\n /**\n * The function used to initialize dataManager` and query\n *\n * @param {Object[] | DataManager} dataSource Accepts the dataSource as collection of objects or Datamanager instance.\n * @param {Query} query Accepts the query to process the data from collections.\n * @returns {void}\n * @private\n */\n Data.prototype.initDataManager = function (dataSource, query) {\n this.dataManager = dataSource instanceof DataManager ? dataSource : new DataManager(dataSource);\n this.query = query instanceof Query ? query : new Query();\n this.kanbanData = new DataManager(this.parent.kanbanData);\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 /**\n * @returns {boolean} returns the column key fields\n * @hidden\n */\n Data.prototype.columnKeyFields = function () {\n var columns = [];\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n if (column.keyField.toString().split(',').length > 1) {\n for (var _b = 0, _c = column.keyField.toString().split(','); _b < _c.length; _b++) {\n var innerColumns = _c[_b];\n columns.push(innerColumns.trim());\n }\n }\n else {\n columns.push(column.keyField.toString());\n }\n }\n return columns;\n };\n /**\n * The function used to generate updated Query from schedule model\n *\n * @param {string} parameter Accepts the parameter that needs to be sent to the service end.\n * @returns {void}\n * @private\n */\n Data.prototype.getQuery = function (parameter) {\n var query = this.query.clone();\n if (this.isRemote() && this.parent.enableVirtualization) {\n var cardHeight = this.parent.cardHeight === 'auto' ? 100 :\n parseInt(formatUnit(this.parent.cardHeight).split('px')[0], 10);\n var take = this.parent.height === 'auto' ? (Math.ceil(window.innerHeight / cardHeight) * 2) :\n (Math.ceil(parseInt(formatUnit(this.parent.height).split('px')[0], 10) / cardHeight) * 2);\n var columns = this.columnKeyFields();\n for (var i = 0; i < columns.length; i++) {\n query.where(this.parent.keyField, 'equal', columns[i]);\n }\n query.take(take);\n if (isNullOrUndefined(parameter)) {\n parameter = 'KanbanVirtualization';\n }\n query.addParams('KanbanVirtualization', parameter);\n }\n return query;\n };\n /**\n * The function used to get dataSource by executing given Query\n *\n * @param {Query} query - A Query that specifies to generate dataSource\n * @returns {void}\n * @private\n */\n Data.prototype.getData = function (query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise({ requestType: '' }, query);\n this.isObservable = true;\n return def.promise;\n }\n return this.dataManager.executeQuery(query);\n };\n Data.prototype.setState = function (state) {\n return this.dataState = 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, index) {\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 === 'cardChanged' || args.requestType === 'cardRemoved' || args.requestType === 'cardCreated') {\n var editArgs_1 = args;\n editArgs_1.promise = deff.promise;\n editArgs_1.state = state;\n editArgs_1.index = index;\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 });\n _this.parent.trigger(events.dataStateChange, state);\n editArgs_1.addedRecords.forEach(function (data) {\n _this.parent.kanbanData.push(data);\n });\n editArgs_1.changedRecords.forEach(function (changedRecord) {\n var cardObj = _this.parent.kanbanData.filter(function (data) {\n return data[_this.parent.cardSettings.headerField] ===\n changedRecord[_this.parent.cardSettings.headerField];\n })[0];\n extend(cardObj, changedRecord);\n });\n editArgs_1.deletedRecords.forEach(function (deletedRecord) {\n var index = _this.parent.kanbanData.findIndex(function (data) {\n return data[_this.parent.cardSettings.headerField] === deletedRecord[_this.parent.cardSettings.headerField];\n });\n _this.parent.kanbanData.splice(index, 1);\n });\n }).catch(function () { _this.parent.hideSpinner(); void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve });\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 * The function used to get the table name from the given Query\n *\n * @returns {string} Returns the table name.\n * @private\n */\n Data.prototype.getTable = function () {\n if (this.parent.query) {\n var query = this.getQuery();\n return query.fromTable;\n }\n else {\n return null;\n }\n };\n /**\n * The function is used to send the request and get response from datamanager\n *\n * @returns {void}\n * @private\n */\n Data.prototype.refreshDataManager = function () {\n var _this = this;\n var dataManager = this.getData(this.getQuery());\n dataManager.then(function (e) {\n return _this.dataManagerSuccess(e);\n }).catch(function (e) { return _this.dataManagerFailure(e); });\n };\n /**\n * The function is used to handle the success response from dataManager\n *\n * @param {ReturnType} e Accepts the dataManager success result\n * @param type\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n Data.prototype.dataManagerSuccess = function (e, type, offlineArgs, index) {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n if (type) {\n this.updateKanbanData(e);\n if (this.parent.enableVirtualization && this.isRemote()) {\n this.parent.virtualLayoutModule.refresh();\n }\n }\n else {\n this.parent.trigger(events.dataBinding, e, function (args) {\n _this.updateKanbanData(args);\n _this.parent.notify(events.dataReady, { processedData: _this.parent.kanbanData });\n _this.parent.trigger(events.dataBound, null, function () { return _this.parent.hideSpinner(); });\n });\n }\n if (this.initload) {\n this.parent.layoutModule.refresh();\n this.parent.renderTemplates();\n }\n this.initload = true;\n };\n /**\n * The function is used to handle the update the column data count for remote, and update kanbanData while perform the CRUD action\n *\n * @param {ReturnType} args Accepts the dataManager success result\n * @returns {void}\n * @private\n */\n Data.prototype.updateKanbanData = function (args) {\n var resultData = extend([], !isNullOrUndefined(args.result.result) ?\n args.result.result : args.result, null, true);\n if (this.isRemote() && this.parent.enableVirtualization && resultData.length > 0\n && !isNullOrUndefined(args.result.count)) {\n var columnsKeyFields = this.columnKeyFields();\n for (var i = 0; i < columnsKeyFields.length; i++) {\n if (args.result.count[i].Key === columnsKeyFields[i]) {\n this.parent.columnDataCount[columnsKeyFields[i]] = args.result.count[i].Value;\n }\n }\n }\n this.parent.kanbanData = resultData;\n };\n /**\n * The function is used to handle the failure response from dataManager\n *\n * @param {ReturnType} e Accepts the dataManager failure result\n * @returns {void}\n * @private\n */\n Data.prototype.dataManagerFailure = function (e) {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.trigger(events.actionFailure, { error: e }, function () { return _this.parent.hideSpinner(); });\n };\n /**\n * The function is used to perform the insert, update, delete and batch actions in datamanager\n *\n * @param {string} updateType Accepts the update type action\n * @param {SaveChanges} params Accepts the savechanges params\n * @param {string} type Accepts the requestType as string\n * @param {Object} data Accepts the data to perform crud action\n * @param {number} index Accepts the index to refresh the data into UI\n * @param {boolean} isDropped Accepts the boolean value based on based if it is dragged and dropped\n * @param {string} dataDropIndexKeyFieldValue Accepts the dropped index key field value card\n * @param {number} draggedKey Accepts the dragged keyfield of the column\n * @param {number} droppedKey Accepts the dropped keyfield of the column\n * @param {number} isMultipleDrag Accepts boolean value based on the multiple drag of the cards\n * @returns {void}\n * @private\n */\n Data.prototype.updateDataManager = function (updateType, params, type, data, index, isDropped, dataDropIndexKeyFieldValue, draggedKey, droppedKey, isMultipleDrag) {\n var _this = this;\n this.parent.showSpinner();\n var promise;\n var actionArgs = {\n requestType: type, cancel: false, addedRecords: params.addedRecords,\n changedRecords: params.changedRecords, deletedRecords: params.deletedRecords\n };\n this.setState({ isDataChanged: true });\n this.eventPromise(actionArgs, this.query, index);\n this.parent.trigger(events.actionComplete, actionArgs, function (offlineArgs) {\n if (!offlineArgs.cancel) {\n switch (updateType) {\n case 'insert':\n promise = _this.dataManager.insert(data, _this.getTable(), _this.getQuery());\n break;\n case 'update':\n if (_this.parent.enableVirtualization && !_this.parent.dataModule.isRemote() && isDropped) {\n promise = _this.dataManager.remove(_this.keyField, data, _this.getTable(), _this.getQuery());\n promise = _this.dataManager.insert(data, _this.getTable(), _this.getQuery(), _this.dataManager.dataSource.json.findIndex(function (data) {\n return data[_this.parent.cardSettings.headerField] === dataDropIndexKeyFieldValue;\n }));\n }\n else {\n promise = _this.dataManager.update(_this.keyField, data, _this.getTable(), _this.getQuery());\n }\n break;\n case 'delete':\n promise = _this.dataManager.remove(_this.keyField, data, _this.getTable(), _this.getQuery());\n break;\n case 'batch':\n if (!_this.parent.dataModule.isRemote() && isDropped && _this.parent.enableVirtualization && data) {\n for (var i = 0; i < data.length; i++) {\n promise = _this.dataManager.remove(_this.keyField, data[i], _this.getTable(), _this.getQuery());\n }\n var currentIndex = _this.dataManager.dataSource.json.findIndex(function (data) {\n return data[_this.parent.cardSettings.headerField] === dataDropIndexKeyFieldValue;\n });\n for (var i = 0; i < data.length; i++, currentIndex++) {\n promise = _this.dataManager.insert(data[i], _this.getTable(), _this.getQuery(), currentIndex);\n }\n }\n else {\n promise = _this.dataManager.saveChanges(params, _this.keyField, _this.getTable(), _this.getQuery());\n }\n break;\n }\n if (_this.dataManager.dataSource.offline) {\n if (!_this.isObservable) {\n _this.kanbanData = _this.dataManager;\n _this.parent.kanbanData = _this.dataManager.dataSource.json;\n index = draggedKey === droppedKey && isMultipleDrag ? index - 1 : index;\n _this.refreshUI(offlineArgs, index, isDropped);\n if (_this.parent.enableVirtualization) {\n _this.parent.virtualLayoutModule.refreshColumnData(draggedKey, droppedKey, offlineArgs.requestType, data[_this.parent.keyField]);\n }\n }\n }\n else {\n promise.then(function (args) {\n if (_this.parent.isDestroyed) {\n return;\n }\n var dataManager = _this.getData(_this.getQuery());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, 'DataSourceChange', offlineArgs, index); }).catch(function (e) { return _this.dataManagerFailure(e); });\n if (offlineArgs.requestType === 'cardCreated') {\n if (!Array.isArray(args)) {\n offlineArgs.addedRecords[0] = extend(offlineArgs.addedRecords[0], args);\n }\n else {\n _this.modifyArrayData(offlineArgs.addedRecords, args);\n }\n }\n else if (offlineArgs.requestType === 'cardChanged') {\n if (!Array.isArray(args)) {\n offlineArgs.changedRecords[0] = extend(offlineArgs.changedRecords[0], args);\n }\n else {\n _this.modifyArrayData(offlineArgs.changedRecords, args);\n }\n }\n else if (offlineArgs.requestType === 'cardRemoved') {\n if (!Array.isArray(args)) {\n offlineArgs.deletedRecords[0] = extend(offlineArgs.deletedRecords[0], args);\n }\n else {\n _this.modifyArrayData(offlineArgs.deletedRecords, args);\n }\n }\n index = draggedKey === droppedKey && isMultipleDrag ? index - 1 : index;\n _this.refreshUI(offlineArgs, index, isDropped);\n if (_this.parent.enableVirtualization) {\n _this.parent.virtualLayoutModule.refreshColumnData(draggedKey, droppedKey, offlineArgs.requestType, data[_this.parent.keyField]);\n }\n }).catch(function (e) {\n _this.dataManagerFailure(e);\n });\n }\n }\n });\n };\n Data.prototype.modifyArrayData = function (onLineData, e) {\n if (onLineData.length === e.length) {\n for (var i = 0; i < e.length; i++) {\n onLineData[i] = extend(onLineData[i], e[i]);\n }\n }\n return onLineData;\n };\n /**\n * The function is used to refresh the UI once the data manager action is completed\n *\n * @param {ActionEventArgs} args Accepts the ActionEventArgs to refresh UI.\n * @param {number} position Accepts the index to refresh UI.\n * @param {boolean} isDropped Accepts the boolean value based on based if it is dragged and dropped\n * @returns {void}\n */\n Data.prototype.refreshUI = function (args, position, isDropped) {\n var _this = this;\n if (this.parent.enableVirtualization) {\n this.parent.virtualLayoutModule.columnData = this.parent.virtualLayoutModule.getColumnCards();\n args.addedRecords.forEach(function (data, index) {\n _this.parent.virtualLayoutModule.renderCardBasedOnIndex(data, position + index, isDropped, args.requestType);\n });\n args.changedRecords.forEach(function (data) {\n _this.parent.virtualLayoutModule.removeCard(data);\n _this.parent.virtualLayoutModule.renderCardBasedOnIndex(data, position, isDropped, args.requestType);\n if (_this.parent.virtualLayoutModule.isSelectedCard) {\n _this.parent.actionModule.SingleCardSelection(data);\n }\n if (_this.parent.sortSettings.field && _this.parent.sortSettings.sortBy === 'Index'\n && _this.parent.sortSettings.direction === 'Descending' && position > 0) {\n --position;\n }\n else {\n position++;\n }\n });\n args.deletedRecords.forEach(function (data) {\n _this.parent.virtualLayoutModule.removeCard(data);\n });\n this.parent.virtualLayoutModule.refresh();\n }\n else {\n this.parent.layoutModule.columnData = this.parent.layoutModule.getColumnCards();\n if (this.parent.swimlaneSettings.keyField) {\n this.parent.layoutModule.kanbanRows = this.parent.layoutModule.getRows();\n this.parent.layoutModule.swimlaneData = this.parent.layoutModule.getSwimlaneCards();\n }\n args.addedRecords.forEach(function (data, index) {\n if (_this.parent.swimlaneSettings.keyField && !data[_this.parent.swimlaneSettings.keyField]) {\n data[_this.parent.swimlaneSettings.keyField] = '';\n }\n _this.parent.layoutModule.renderCardBasedOnIndex(data, position + index);\n });\n args.changedRecords.forEach(function (data) {\n if (_this.parent.swimlaneSettings.keyField && !data[_this.parent.swimlaneSettings.keyField]) {\n data[_this.parent.swimlaneSettings.keyField] = '';\n }\n _this.parent.layoutModule.removeCard(data);\n _this.parent.layoutModule.renderCardBasedOnIndex(data, position);\n if (_this.parent.layoutModule.isSelectedCard) {\n _this.parent.actionModule.SingleCardSelection(data);\n }\n if (_this.parent.sortSettings.field && _this.parent.sortSettings.sortBy === 'Index'\n && _this.parent.sortSettings.direction === 'Descending' && position > 0) {\n --position;\n }\n else {\n position++;\n }\n });\n args.deletedRecords.forEach(function (data) {\n _this.parent.layoutModule.removeCard(data);\n });\n this.parent.layoutModule.refresh();\n }\n this.parent.renderTemplates();\n this.parent.notify(events.contentReady, {});\n this.parent.trigger(events.dataBound, args, function () { return _this.parent.hideSpinner(); });\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})();\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 * Holds the configuration of swimlane settings in kanban board.\n */\nvar SwimlaneSettings = /** @class */ (function (_super) {\n __extends(SwimlaneSettings, _super);\n function SwimlaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SwimlaneSettings.prototype, \"keyField\", void 0);\n __decorate([\n Property()\n ], SwimlaneSettings.prototype, \"textField\", void 0);\n __decorate([\n Property(false)\n ], SwimlaneSettings.prototype, \"showEmptyRow\", void 0);\n __decorate([\n Property(true)\n ], SwimlaneSettings.prototype, \"showItemCount\", void 0);\n __decorate([\n Property(false)\n ], SwimlaneSettings.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property()\n ], SwimlaneSettings.prototype, \"template\", void 0);\n __decorate([\n Property('Ascending')\n ], SwimlaneSettings.prototype, \"sortDirection\", void 0);\n __decorate([\n Property()\n ], SwimlaneSettings.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(true)\n ], SwimlaneSettings.prototype, \"showUnassignedRow\", void 0);\n __decorate([\n Property(false)\n ], SwimlaneSettings.prototype, \"enableFrozenRows\", void 0);\n return SwimlaneSettings;\n}(ChildProperty));\nexport { SwimlaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Holds the configuration of card settings in kanban board.\n */\nvar CardSettings = /** @class */ (function (_super) {\n __extends(CardSettings, _super);\n function CardSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], CardSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property()\n ], CardSettings.prototype, \"headerField\", void 0);\n __decorate([\n Property()\n ], CardSettings.prototype, \"contentField\", void 0);\n __decorate([\n Property()\n ], CardSettings.prototype, \"tagsField\", void 0);\n __decorate([\n Property()\n ], CardSettings.prototype, \"grabberField\", void 0);\n __decorate([\n Property()\n ], CardSettings.prototype, \"footerCssField\", void 0);\n __decorate([\n Property()\n ], CardSettings.prototype, \"template\", void 0);\n __decorate([\n Property('Single')\n ], CardSettings.prototype, \"selectionType\", void 0);\n return CardSettings;\n}(ChildProperty));\nexport { CardSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Holds the configuration of editor settings.\n */\nvar DialogSettings = /** @class */ (function (_super) {\n __extends(DialogSettings, _super);\n function DialogSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], DialogSettings.prototype, \"template\", void 0);\n __decorate([\n Property([])\n ], DialogSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DialogSettings.prototype, \"model\", void 0);\n return DialogSettings;\n}(ChildProperty));\nexport { DialogSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Holds the configuration of columns in kanban board.\n */\nvar Columns = /** @class */ (function (_super) {\n __extends(Columns, _super);\n function Columns() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Columns.prototype, \"keyField\", void 0);\n __decorate([\n Property()\n ], Columns.prototype, \"headerText\", void 0);\n __decorate([\n Property()\n ], Columns.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], Columns.prototype, \"allowToggle\", void 0);\n __decorate([\n Property(true)\n ], Columns.prototype, \"isExpanded\", void 0);\n __decorate([\n Property()\n ], Columns.prototype, \"minCount\", void 0);\n __decorate([\n Property()\n ], Columns.prototype, \"maxCount\", void 0);\n __decorate([\n Property(true)\n ], Columns.prototype, \"showItemCount\", void 0);\n __decorate([\n Property(false)\n ], Columns.prototype, \"showAddButton\", void 0);\n __decorate([\n Property(true)\n ], Columns.prototype, \"allowDrag\", void 0);\n __decorate([\n Property(true)\n ], Columns.prototype, \"allowDrop\", void 0);\n __decorate([\n Property([])\n ], Columns.prototype, \"transitionColumns\", void 0);\n return Columns;\n}(ChildProperty));\nexport { Columns };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Holds the configuration of stacked header settings in kanban board.\n */\nvar StackedHeaders = /** @class */ (function (_super) {\n __extends(StackedHeaders, _super);\n function StackedHeaders() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], StackedHeaders.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], StackedHeaders.prototype, \"keyFields\", void 0);\n return StackedHeaders;\n}(ChildProperty));\nexport { StackedHeaders };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Holds the configuration of sort settings in kanban board.\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 Property('Index')\n ], SortSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property()\n ], SortSettings.prototype, \"field\", void 0);\n __decorate([\n Property('Ascending')\n ], SortSettings.prototype, \"direction\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n","/**\n * Kanban CSS Constants\n */\n/** @private */\nexport var ROOT_CLASS = 'e-kanban';\n/** @private */\nexport var RTL_CLASS = 'e-rtl';\n/** @private */\nexport var DEVICE_CLASS = 'e-device';\n/** @private */\nexport var ICON_CLASS = 'e-icons';\n/** @private */\nexport var TEMPLATE_CLASS = 'e-template';\n/** @private */\nexport var SWIMLANE_CLASS = 'e-swimlane';\n/** @private */\nexport var TABLE_CLASS = 'e-kanban-table';\n/** @private */\nexport var HEADER_CLASS = 'e-kanban-header';\n/** @private */\nexport var HEADER_TABLE_CLASS = 'e-header-table';\n/** @private */\nexport var HEADER_CELLS_CLASS = 'e-header-cells';\n/** @private */\nexport var HEADER_WRAP_CLASS = 'e-header-wrap';\n/** @private */\nexport var HEADER_TITLE_CLASS = 'e-header-title';\n/** @private */\nexport var HEADER_TEXT_CLASS = 'e-header-text';\n/** @private */\nexport var HEADER_ICON_CLASS = 'e-header-icon';\n/** @private */\nexport var STACKED_HEADER_ROW_CLASS = 'e-stacked-header-row';\n/** @private */\nexport var STACKED_HEADER_CELL_CLASS = 'e-stacked-header-cell';\n/** @private */\nexport var CONTENT_CELLS_CLASS = 'e-content-cells';\n/** @private */\nexport var CONTENT_CLASS = 'e-kanban-content';\n/** @private */\nexport var CONTENT_TABLE_CLASS = 'e-content-table';\n/** @private */\nexport var HEADER_ROW_TOGGLE_CLASS = 'e-toggle-header';\n/** @private */\nexport var HEADER_ROW_CLASS = 'e-header-row';\n/** @private */\nexport var CONTENT_ROW_CLASS = 'e-content-row';\n/** @private */\nexport var SWIMLANE_ROW_CLASS = 'e-swimlane-row';\n/** @private */\nexport var SWIMLANE_ROW_EXPAND_CLASS = 'e-swimlane-row-expand';\n/** @private */\nexport var SWIMLANE_ROW_COLLAPSE_CLASS = 'e-swimlane-row-collapse';\n/** @private */\nexport var SWIMLANE_ROW_TEXT_CLASS = 'e-swimlane-text';\n/** @private */\nexport var CARD_ITEM_COUNT_CLASS = 'e-item-count';\n/** @private */\nexport var CARD_WRAPPER_CLASS = 'e-card-wrapper';\n/** @private */\nexport var CARD_VIRTUAL_WRAPPER_CLASS = 'e-card-virtual-wrapper';\n/** @private */\nexport var CARD_CLASS = 'e-card';\n/** @private */\nexport var DRAGGABLE_CLASS = 'e-draggable';\n/** @private */\nexport var DROPPABLE_CLASS = 'e-droppable';\n/** @private */\nexport var DRAG_CLASS = 'e-drag';\n/** @private */\nexport var DROP_CLASS = 'e-drop';\n/** @private */\nexport var DISABLED_CLASS = 'e-disabled';\n/** @private */\nexport var CARD_HEADER_CLASS = 'e-card-header';\n/** @private */\nexport var CARD_CONTENT_CLASS = 'e-card-content';\n/** @private */\nexport var CARD_HEADER_TEXT_CLASS = 'e-card-header-caption';\n/** @private */\nexport var CARD_HEADER_TITLE_CLASS = 'e-card-header-title';\n/** @private */\nexport var CARD_TAGS_CLASS = 'e-card-tags';\n/** @private */\nexport var CARD_TAG_CLASS = 'e-card-tag';\n/** @private */\nexport var CARD_COLOR_CLASS = 'e-card-color';\n/** @private */\nexport var CARD_LABEL_CLASS = 'e-card-label';\n/** @private */\nexport var CARD_FOOTER_CLASS = 'e-card-footer';\n/** @private */\nexport var EMPTY_CARD_CLASS = 'e-empty-card';\n/** @private */\nexport var CARD_FOOTER_CSS_CLASS = 'e-card-footer-css';\n/** @private */\nexport var COLUMN_EXPAND_CLASS = 'e-column-expand';\n/** @private */\nexport var COLUMN_COLLAPSE_CLASS = 'e-column-collapse';\n/** @private */\nexport var COLLAPSE_HEADER_TEXT_CLASS = 'e-collapse-header-text';\n/** @private */\nexport var COLLAPSED_CLASS = 'e-collapsed';\n/** @private */\nexport var DIALOG_CLASS = 'e-kanban-dialog';\n/** @private */\nexport var DIALOG_CONTENT_CONTAINER_CLASS = 'e-kanban-dialog-content';\n/** @private */\nexport var FORM_CLASS = 'e-kanban-form';\n/** @private */\nexport var FORM_WRAPPER_CLASS = 'e-kanban-form-wrapper';\n/** @private */\nexport var ERROR_VALIDATION_CLASS = 'e-kanban-error';\n/** @private */\nexport var FIELD_CLASS = 'e-field';\n/** @private */\nexport var DRAGGED_CLONE_CLASS = 'e-target-dragged-clone';\n/** @private */\nexport var CLONED_CARD_CLASS = 'e-cloned-card';\n/** @private */\nexport var DRAGGED_CARD_CLASS = 'e-kanban-dragged-card';\n/** @private */\nexport var DROPPED_CLONE_CLASS = 'e-target-dropped-clone';\n/** @private */\nexport var DROPPING_CLASS = 'e-dropping';\n/** @private */\nexport var BORDER_CLASS = 'e-kanban-border';\n/** @private */\nexport var TOGGLE_VISIBLE_CLASS = 'e-toggle-visible';\n/** @private */\nexport var MULTI_CLONE_CONTENT_CELL_CLASS = 'e-multi-content-cell';\n/** @private */\nexport var MULTI_CARD_WRAPPER_CLASS = 'e-multi-card-wrapper';\n/** @private */\nexport var MULTI_ACTIVE_CLASS = 'e-multi-active';\n/** @private */\nexport var TARGET_MULTI_CLONE_CLASS = 'e-target-multi-clone';\n/** @private */\nexport var MULTI_COLUMN_KEY_CLASS = 'e-column-key';\n/** @private */\nexport var CARD_SELECTION_CLASS = 'e-selection';\n/** @private */\nexport var TOOLTIP_CLASS = 'e-kanban-tooltip';\n/** @private */\nexport var TOOLTIP_TEXT_CLASS = 'e-tooltip-text';\n/** @private */\nexport var SCROLL_CONTAINER_CLASS = 'e-cell-scroll-container';\n/** @private */\nexport var SWIMLANE_HEADER_CLASS = 'e-swimlane-header';\n/** @private */\nexport var SWIMLANE_HEADER_TOOLBAR_CLASS = 'e-swimlane-header-toolbar';\n/** @private */\nexport var TOOLBAR_MENU_CLASS = 'e-toolbar-menu';\n/** @private */\nexport var TOOLBAR_MENU_ICON_CLASS = 'e-icon-menu';\n/** @private */\nexport var TOOLBAR_LEVEL_TITLE_CLASS = 'e-toolbar-level-title';\n/** @private */\nexport var TOOLBAR_SWIMLANE_NAME_CLASS = 'e-toolbar-swimlane-name';\n/** @private */\nexport var SWIMLANE_OVERLAY_CLASS = 'e-swimlane-overlay';\n/** @private */\nexport var SWIMLANE_CONTENT_CLASS = 'e-swimlane-content';\n/** @private */\nexport var SWIMLANE_RESOURCE_CLASS = 'e-swimlane-resource';\n/** @private */\nexport var SWIMLANE_TREE_CLASS = 'e-swimlane-tree';\n/** @private */\nexport var LIMITS_CLASS = 'e-limits';\n/** @private */\nexport var MAX_COUNT_CLASS = 'e-max-count';\n/** @private */\nexport var MIN_COUNT_CLASS = 'e-min-count';\n/** @private */\nexport var MAX_COLOR_CLASS = 'e-max-color';\n/** @private */\nexport var MIN_COLOR_CLASS = 'e-min-color';\n/** @private */\nexport var POPUP_EVENT_CLASS = 'e-event-popup';\n/** @private */\nexport var POPUP_HEADER_CLASS = 'e-popup-header';\n/** @private */\nexport var CLOSE_CLASS = 'e-close';\n/** @private */\nexport var POPUP_CONTENT_CLASS = 'e-popup-content';\n/** @private */\nexport var POPUP_WRAPPER_CLASS = 'e-mobile-popup-wrapper';\n/** @private */\nexport var CLOSE_ICON_CLASS = 'e-close-icon';\n/** @private */\nexport var POPUP_OPEN_CLASS = 'e-popup-open';\n/** @private */\nexport var DIALOG_CONTENT_CONTAINER = 'e-kanban-dialog-content';\n/** @private */\nexport var SHOW_ADD_BUTTON = 'e-show-add-button';\n/** @private */\nexport var SHOW_ADD_ICON = 'e-show-add-icon';\n/** @private */\nexport var SHOW_ADD_FOCUS = 'e-show-add-focus';\n/** @private */\nexport var FROZEN_SWIMLANE_ROW_CLASS = 'e-frozen-swimlane-row';\n/** @private */\nexport var FROZEN_ROW_CLASS = 'e-frozen-row';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { closest, classList, createElement, remove, addClass, removeClass, isNullOrUndefined as isNoU, formatUnit, createInstance, detach } from '@syncfusion/ej2-base';\nimport { Columns } from '../models/columns';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Action module is used to perform card actions.\n */\nvar Action = /** @class */ (function () {\n /**\n * Constructor for action module\n *\n * @param {Kanban} parent Accepts the kanban instance\n * @private\n */\n function Action(parent) {\n this.parent = parent;\n this.columnToggleArray = [];\n this.selectionArray = [];\n this.lastCardSelection = null;\n this.lastSelectionRow = null;\n this.lastCard = null;\n this.selectedCardsElement = [];\n this.selectedCardsData = [];\n this.hideColumnKeys = [];\n }\n Action.prototype.clickHandler = function (e) {\n var elementSelector = '.' + cls.CARD_CLASS + ',.' + cls.HEADER_ICON_CLASS + ',.' + cls.CONTENT_ROW_CLASS + '.' +\n cls.SWIMLANE_ROW_CLASS + ',.' + cls.SHOW_ADD_BUTTON + ',.' + cls.FROZEN_SWIMLANE_ROW_CLASS + ',.' + cls.CONTENT_ROW_CLASS +\n ':not(.' + cls.SWIMLANE_ROW_CLASS + ') .' + cls.CONTENT_CELLS_CLASS;\n var target = closest(e.target, elementSelector);\n if (!target) {\n return;\n }\n if (target.classList.contains(cls.CARD_CLASS)) {\n if (this.parent.allowKeyboard) {\n this.parent.keyboardModule.cardTabIndexRemove();\n }\n this.cardClick(e);\n }\n else if (target.classList.contains(cls.HEADER_ICON_CLASS)) {\n this.columnExpandCollapse(e);\n }\n else if (target.classList.contains(cls.CONTENT_ROW_CLASS) && target.classList.contains(cls.SWIMLANE_ROW_CLASS)) {\n this.rowExpandCollapse(e);\n }\n else if (target.classList.contains(cls.SHOW_ADD_BUTTON)) {\n this.addButtonClick(target);\n }\n else if (target.classList.contains(cls.FROZEN_SWIMLANE_ROW_CLASS)) {\n var swimlaneRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.SWIMLANE_ROW_CLASS));\n var targetIcon = this.parent.layoutModule.frozenSwimlaneRow.querySelector('.' + cls.ICON_CLASS);\n this.rowExpandCollapse(e, swimlaneRows[this.parent.layoutModule.frozenOrder]);\n var isCollapsed = targetIcon.classList.contains(cls.SWIMLANE_ROW_COLLAPSE_CLASS) ? true : false;\n if (isCollapsed) {\n classList(targetIcon, [cls.SWIMLANE_ROW_EXPAND_CLASS], [cls.SWIMLANE_ROW_COLLAPSE_CLASS]);\n }\n else {\n classList(targetIcon, [cls.SWIMLANE_ROW_COLLAPSE_CLASS], [cls.SWIMLANE_ROW_EXPAND_CLASS]);\n }\n }\n };\n Action.prototype.addButtonClick = function (target) {\n var _this = this;\n var newData = {};\n if (this.parent.kanbanData.length === 0) {\n newData[this.parent.cardSettings.headerField] = 1;\n }\n else if (typeof (this.parent.kanbanData[0])[this.parent.cardSettings.headerField] === 'number') {\n var id = this.parent.kanbanData.map(function (obj) {\n return parseInt(obj[_this.parent.cardSettings.headerField], 10);\n });\n newData[this.parent.cardSettings.headerField] = Math.max.apply(Math, id) + 1;\n }\n newData[this.parent.keyField] = closest(target, '.' + cls.CONTENT_CELLS_CLASS).getAttribute('data-key');\n if (this.parent.sortSettings.sortBy === 'Index') {\n newData[this.parent.sortSettings.field] = 1;\n if (closest(target, '.' + cls.CONTENT_CELLS_CLASS).querySelector('.' + cls.CARD_CLASS)) {\n var card = this.parent.sortSettings.direction === 'Ascending' ?\n target.nextElementSibling.classList.contains(cls.BORDER_CLASS) ?\n target.nextElementSibling.nextElementSibling.lastElementChild : target.nextElementSibling.lastElementChild\n : target.nextElementSibling.classList.contains(cls.BORDER_CLASS) ?\n target.nextElementSibling.nextElementSibling.firstElementChild : target.nextElementSibling.firstElementChild;\n var data = this.parent.getCardDetails(card);\n newData[this.parent.sortSettings.field] = data[this.parent.sortSettings.field] + 1;\n }\n }\n if (this.parent.kanbanData.length !== 0 && this.parent.swimlaneSettings.keyField &&\n closest(target, '.' + cls.CONTENT_ROW_CLASS).previousElementSibling) {\n newData[this.parent.swimlaneSettings.keyField] =\n closest(target, '.' + cls.CONTENT_ROW_CLASS).previousElementSibling.getAttribute('data-key');\n }\n this.parent.openDialog('Add', newData);\n };\n Action.prototype.doubleClickHandler = function (e) {\n var target = closest(e.target, '.' + cls.CARD_CLASS);\n if (target) {\n this.cardDoubleClick(e);\n }\n };\n Action.prototype.cardClick = function (e, selectedCard) {\n var _this = this;\n var target = closest((selectedCard) ? selectedCard : e.target, '.' + cls.CARD_CLASS);\n var cardClickObj = this.parent.getCardDetails(target);\n if (cardClickObj) {\n this.parent.activeCardData = { data: cardClickObj, element: target };\n var args = { data: cardClickObj, element: target, cancel: false, event: e };\n this.parent.trigger(events.cardClick, args, function (clickArgs) {\n if (!clickArgs.cancel) {\n if (target.classList.contains(cls.CARD_SELECTION_CLASS) && e.type === 'click') {\n removeClass([target], cls.CARD_SELECTION_CLASS);\n if (_this.parent.enableVirtualization) {\n _this.parent.virtualLayoutModule.disableAttributeSelection(target);\n }\n else {\n _this.parent.layoutModule.disableAttributeSelection(target);\n }\n }\n else {\n var isCtrlKey = e.ctrlKey;\n if (_this.parent.isAdaptive && _this.parent.touchModule) {\n isCtrlKey = (_this.parent.touchModule.mobilePopup && _this.parent.touchModule.tabHold) || isCtrlKey;\n }\n _this.cardSelection(target, isCtrlKey, e.shiftKey);\n }\n if (_this.parent.isAdaptive && _this.parent.touchModule) {\n _this.parent.touchModule.updatePopupContent();\n }\n var cell = closest(target, '.' + cls.CONTENT_CELLS_CLASS);\n if (_this.parent.allowKeyboard) {\n var element = [].slice.call(cell.querySelectorAll('.' + cls.CARD_CLASS));\n element.forEach(function (e) { e.setAttribute('tabindex', '0'); });\n _this.parent.keyboardModule.addRemoveTabIndex('Remove');\n }\n }\n });\n }\n };\n Action.prototype.cardDoubleClick = function (e) {\n var _this = this;\n var target = closest(e.target, '.' + cls.CARD_CLASS);\n var cardDoubleClickObj = this.parent.getCardDetails(target);\n this.parent.activeCardData = { data: cardDoubleClickObj, element: target };\n this.cardSelection(target, false, false);\n var args = { data: cardDoubleClickObj, element: target, cancel: false, event: e };\n this.parent.trigger(events.cardDoubleClick, args, function (doubleClickArgs) {\n if (!doubleClickArgs.cancel) {\n _this.parent.dialogModule.openDialog('Edit', args.data);\n }\n });\n };\n Action.prototype.rowExpandCollapse = function (e, isFrozenElem) {\n var _this = this;\n var headerTarget = (e instanceof HTMLElement) ? e : e.target;\n var currentSwimlaneHeader = !isNoU(isFrozenElem) ? isFrozenElem : headerTarget;\n var args = { cancel: false, target: headerTarget, requestType: 'rowExpandCollapse' };\n this.parent.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n var target = closest(currentSwimlaneHeader, '.' + cls.SWIMLANE_ROW_CLASS);\n var key = target.getAttribute('data-key');\n var tgtRow = _this.parent.element.querySelector('.' + cls.CONTENT_ROW_CLASS + (\":nth-child(\" + (target.rowIndex + 2) + \")\"));\n var targetIcon = target.querySelector(\".\" + cls.SWIMLANE_ROW_EXPAND_CLASS + \",.\" + cls.SWIMLANE_ROW_COLLAPSE_CLASS);\n var isCollapsed = target.classList.contains(cls.COLLAPSED_CLASS) ? true : false;\n var tabIndex_1;\n if (isCollapsed) {\n removeClass([tgtRow, target], cls.COLLAPSED_CLASS);\n classList(targetIcon, [cls.SWIMLANE_ROW_EXPAND_CLASS], [cls.SWIMLANE_ROW_COLLAPSE_CLASS]);\n _this.parent.swimlaneToggleArray.splice(_this.parent.swimlaneToggleArray.indexOf(key), 1);\n tabIndex_1 = '0';\n }\n else {\n addClass([tgtRow, target], cls.COLLAPSED_CLASS);\n classList(targetIcon, [cls.SWIMLANE_ROW_COLLAPSE_CLASS], [cls.SWIMLANE_ROW_EXPAND_CLASS]);\n _this.parent.swimlaneToggleArray.push(key);\n tabIndex_1 = '-1';\n }\n targetIcon.setAttribute('aria-label', isCollapsed ? key + ' Expand' : key + ' Collapse');\n target.setAttribute('aria-expanded', isCollapsed.toString());\n tgtRow.setAttribute('aria-expanded', isCollapsed.toString());\n var rows = [].slice.call(tgtRow.querySelectorAll('.' + cls.CONTENT_CELLS_CLASS));\n rows.forEach(function (cell) { cell.setAttribute('tabindex', tabIndex_1); });\n _this.parent.notify(events.contentReady, {});\n _this.parent.trigger(events.actionComplete, { target: headerTarget, requestType: 'rowExpandCollapse' });\n }\n });\n };\n Action.prototype.columnExpandCollapse = function (e) {\n var _this = this;\n var headerTarget = (e instanceof HTMLElement) ? e : e.target;\n var args = { cancel: false, target: headerTarget, requestType: 'columnExpandCollapse' };\n this.parent.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n var target = closest(headerTarget, '.' + cls.HEADER_CELLS_CLASS);\n var colIndex = target.cellIndex;\n _this.columnToggle(target);\n var collapsed = _this.parent.element.querySelectorAll(\".\" + cls.HEADER_CELLS_CLASS + \".\" + cls.COLLAPSED_CLASS).length;\n if (collapsed === (_this.parent.columns.length - _this.hideColumnKeys.length)) {\n var index = (colIndex + 1 === collapsed) ? 1 : colIndex + 2;\n var headerSelector = \".\" + cls.HEADER_CELLS_CLASS + \":not(.\" + cls.STACKED_HEADER_CELL_CLASS + \"):nth-child(\" + index + \")\";\n var nextCol = _this.parent.element.querySelector(headerSelector);\n addClass([nextCol], cls.COLLAPSED_CLASS);\n _this.columnToggle(nextCol);\n }\n _this.parent.notify(events.contentReady, {});\n _this.parent.trigger(events.actionComplete, { target: headerTarget, requestType: 'columnExpandCollapse' });\n }\n });\n };\n Action.prototype.columnToggle = function (target) {\n var _this = this;\n var colIndex = target.cellIndex;\n var elementSelector = \".\" + cls.CONTENT_ROW_CLASS + \":not(.\" + cls.SWIMLANE_ROW_CLASS + \")\";\n var targetRow = [].slice.call(this.parent.element.querySelectorAll(elementSelector));\n var colSelector = \".\" + cls.TABLE_CLASS + \" col:nth-child(\" + (colIndex + 1) + \")\";\n var targetIcon = target.querySelector(\".\" + cls.COLUMN_EXPAND_CLASS + \",.\" + cls.COLUMN_COLLAPSE_CLASS);\n var colGroup = [].slice.call(this.parent.element.querySelectorAll(colSelector));\n if (target.classList.contains(cls.COLLAPSED_CLASS)) {\n removeClass(colGroup, cls.COLLAPSED_CLASS);\n if (this.parent.isAdaptive) {\n if (this.parent.enableVirtualization) {\n colGroup.forEach(function (col) { return col.style.width = formatUnit(_this.parent.virtualLayoutModule.getWidth()); });\n }\n else {\n colGroup.forEach(function (col) { return col.style.width = formatUnit(_this.parent.layoutModule.getWidth()); });\n }\n }\n classList(targetIcon, [cls.COLUMN_EXPAND_CLASS], [cls.COLUMN_COLLAPSE_CLASS]);\n var _loop_1 = function (row) {\n var targetCol = row.querySelector(\".\" + cls.CONTENT_CELLS_CLASS + \":nth-child(\" + (colIndex + 1) + \")\");\n removeClass([targetCol, target], cls.COLLAPSED_CLASS);\n remove(targetCol.querySelector('.' + cls.COLLAPSE_HEADER_TEXT_CLASS));\n target.setAttribute('aria-expanded', 'true');\n targetCol.setAttribute('aria-expanded', 'true');\n var collapsedCell = [].slice.call(targetCol.parentElement.querySelectorAll('.' + cls.COLLAPSED_CLASS));\n collapsedCell.forEach(function (cell) {\n var collapasedText = cell.querySelector('.' + cls.COLLAPSE_HEADER_TEXT_CLASS);\n collapasedText.style.height = 'auto';\n if (collapasedText && targetCol.getBoundingClientRect().height < (collapasedText.getBoundingClientRect().height + 10)) {\n collapasedText.style.height = (targetCol.getBoundingClientRect().height - 4) + 'px';\n }\n });\n };\n for (var _i = 0, targetRow_1 = targetRow; _i < targetRow_1.length; _i++) {\n var row = targetRow_1[_i];\n _loop_1(row);\n }\n if (this.parent.kanbanData.length === 0 && targetRow.length === 0) {\n removeClass([target], cls.COLLAPSED_CLASS);\n target.setAttribute('aria-expanded', 'true');\n }\n this.columnToggleArray.splice(this.columnToggleArray.indexOf(target.getAttribute('data-key')), 1);\n this.parent.columns[colIndex].setProperties({ isExpanded: true }, true);\n target.querySelector('.e-header-icon').setAttribute('aria-label', target.getAttribute('data-key') + ' Expand');\n }\n else {\n addClass(colGroup, cls.COLLAPSED_CLASS);\n if (this.parent.isAdaptive) {\n colGroup.forEach(function (col) { return col.style.width = formatUnit(events.toggleWidth); });\n }\n classList(targetIcon, [cls.COLUMN_COLLAPSE_CLASS], [cls.COLUMN_EXPAND_CLASS]);\n var key = target.getAttribute('data-key');\n var _loop_2 = function (row) {\n var targetCol = row.querySelector(\".\" + cls.CONTENT_CELLS_CLASS + \"[data-key=\\\"\" + key + \"\\\"]\");\n var index = targetCol.cellIndex;\n var text = void 0;\n if (!this_1.parent.enableVirtualization) {\n text = (this_1.parent.columns[index].showItemCount ? '[' +\n targetCol.querySelectorAll('.' + cls.CARD_CLASS).length + '] ' : '') + this_1.parent.columns[index].headerText;\n }\n else {\n var value = this_1.parent.dataModule.isRemote() ?\n this_1.parent.columnDataCount[this_1.parent.columns[index].keyField]\n : this_1.parent.virtualLayoutModule.columnData[this_1.parent.columns[index].keyField].length;\n text = (this_1.parent.columns[index].showItemCount ? '[' +\n value + '] ' : '') + this_1.parent.columns[index].headerText;\n }\n targetCol.appendChild(createElement('div', { className: cls.COLLAPSE_HEADER_TEXT_CLASS, innerHTML: text }));\n addClass([targetCol, target], cls.COLLAPSED_CLASS);\n target.setAttribute('aria-expanded', 'false');\n targetCol.setAttribute('aria-expanded', 'false');\n var collapsedCell = [].slice.call(targetCol.parentElement.querySelectorAll('.' + cls.COLLAPSED_CLASS));\n collapsedCell.forEach(function (cell) {\n var collapasedText = cell.querySelector('.' + cls.COLLAPSE_HEADER_TEXT_CLASS);\n if (collapasedText && targetCol.getBoundingClientRect().height < (collapasedText.getBoundingClientRect().height + 10)) {\n collapasedText.style.height = (targetCol.getBoundingClientRect().height - 4) + 'px';\n }\n });\n };\n var this_1 = this;\n for (var _a = 0, targetRow_2 = targetRow; _a < targetRow_2.length; _a++) {\n var row = targetRow_2[_a];\n _loop_2(row);\n }\n if (this.parent.kanbanData.length === 0 && targetRow.length === 0) {\n addClass([target], cls.COLLAPSED_CLASS);\n target.setAttribute('aria-expanded', 'false');\n }\n this.columnToggleArray.push(target.getAttribute('data-key'));\n this.parent.columns[colIndex].setProperties({ isExpanded: false }, true);\n target.querySelector('.e-header-icon').setAttribute('aria-label', key + ' Collapse');\n }\n };\n Action.prototype.cardSelection = function (target, isCtrl, isShift) {\n var _this = this;\n if (!target) {\n return;\n }\n var cards = this.parent.getSelectedCards();\n if (this.parent.cardSettings.selectionType !== 'None') {\n var contentRow = closest(target, '.' + cls.CONTENT_ROW_CLASS);\n var index = !isNoU(this.lastSelectionRow) ? this.lastSelectionRow.rowIndex : contentRow.rowIndex;\n if (index !== contentRow.rowIndex && (isCtrl || isShift) && this.parent.cardSettings.selectionType === 'Multiple') {\n return;\n }\n if (cards.length !== 0 && (!isCtrl || this.parent.cardSettings.selectionType === 'Single')) {\n removeClass(cards, cls.CARD_SELECTION_CLASS);\n if (this.parent.enableVirtualization) {\n this.parent.virtualLayoutModule.disableAttributeSelection(cards);\n }\n else {\n this.parent.layoutModule.disableAttributeSelection(cards);\n }\n cards.forEach(function (el) {\n _this.selectionArray.splice(_this.selectionArray.indexOf(el.getAttribute('data-id')), 1);\n _this.selectedCardsElement.splice(_this.selectedCardsElement.indexOf(el), 1);\n _this.selectedCardsData.splice(_this.selectedCardsData.indexOf(_this.parent.getCardDetails(el), 1));\n });\n }\n if (cards.length > 0 && isShift && this.parent.cardSettings.selectionType === 'Multiple') {\n var curCards_1 = [];\n var start = void 0;\n var end = void 0;\n var i = void 0;\n var allCards = [].slice.call(contentRow.querySelectorAll('.' + cls.CARD_CLASS));\n allCards.forEach(function (el) { return curCards_1.push(el.getAttribute('data-id')); });\n var curId = target.getAttribute('data-id');\n var lastId = this.lastCard.getAttribute('data-id');\n var curIndex = end = curCards_1.indexOf(curId);\n var lastIndex = start = curCards_1.indexOf(lastId);\n var select = curIndex > lastIndex ? 'next' : 'prev';\n if (select === 'prev') {\n start = curIndex;\n end = lastIndex;\n }\n for (i = start; i <= end; i++) {\n var card = allCards[i];\n addClass([card], cls.CARD_SELECTION_CLASS);\n card.setAttribute('aria-selected', 'true');\n card.setAttribute('tabindex', '0');\n this.selectionArray.push(card.getAttribute('data-id'));\n this.selectedCardsElement.push(card);\n this.selectedCardsData.push(this.parent.getCardDetails(card));\n this.lastCardSelection = card;\n if (select === 'prev') {\n this.lastCardSelection = allCards[start];\n }\n }\n }\n else {\n addClass([target], cls.CARD_SELECTION_CLASS);\n target.setAttribute('aria-selected', 'true');\n target.setAttribute('tabindex', '0');\n this.selectionArray.push(target.getAttribute('data-id'));\n this.selectedCardsElement.push(target);\n this.selectedCardsData.push(this.parent.getCardDetails(target));\n this.lastCard = this.lastCardSelection = target;\n this.lastSelectionRow = closest(target, '.' + cls.CONTENT_ROW_CLASS);\n if (this.lastSelectionRow.previousElementSibling) {\n var elementSelector = \".\" + cls.SWIMLANE_ROW_EXPAND_CLASS + \",.\" + cls.SWIMLANE_ROW_COLLAPSE_CLASS;\n var parentEle = this.lastSelectionRow.previousElementSibling.querySelector(elementSelector);\n if (parentEle && parentEle.classList.contains(cls.SWIMLANE_ROW_COLLAPSE_CLASS)) {\n this.rowExpandCollapse(parentEle);\n }\n }\n }\n }\n };\n Action.prototype.addColumn = function (columnOptions, index) {\n var addColumn = createInstance(Columns, [this.parent, 'columns', columnOptions, true]);\n this.parent.columns.splice(index, 0, addColumn);\n this.parent.notify(events.dataReady, { processedData: this.parent.kanbanData });\n };\n Action.prototype.deleteColumn = function (index) {\n var listKey = this.parent.element.querySelectorAll('.' + cls.HEADER_CELLS_CLASS).item(index);\n if (listKey && listKey.classList.contains(cls.HEADER_ROW_TOGGLE_CLASS)) {\n this.columnToggleArray.splice(this.columnToggleArray.indexOf(listKey.getAttribute('data-key'), 0));\n }\n this.parent.columns.splice(index, 1);\n if (this.parent.columns.length === 0) {\n detach(this.parent.element.querySelector('.' + cls.HEADER_CLASS));\n detach(this.parent.element.querySelector('.' + cls.CONTENT_CLASS));\n }\n else {\n this.parent.notify(events.dataReady, { processedData: this.parent.kanbanData });\n }\n };\n Action.prototype.showColumn = function (key) {\n var index = this.hideColumnKeys.indexOf(key.toString());\n if (index !== -1) {\n this.hideColumnKeys.splice(index, 1);\n this.parent.notify(events.dataReady, { processedData: this.parent.kanbanData });\n }\n };\n Action.prototype.hideColumn = function (key) {\n this.hideColumnKeys.push(key.toString());\n this.parent.notify(events.dataReady, { processedData: this.parent.kanbanData });\n };\n /**\n * Maintain the single card selection\n *\n * @param {Record} data - Specifies the selected card data.\n * @returns {void}\n * @private\n * @hidden\n */\n Action.prototype.SingleCardSelection = function (data) {\n if (this.parent.cardSettings.selectionType !== 'None' && data[this.parent.cardSettings.headerField]) {\n // eslint-disable-next-line no-useless-escape\n var card = this.parent.element.querySelector('.e-card[data-id=\\\"' +\n // eslint-disable-next-line no-useless-escape\n data[this.parent.cardSettings.headerField].toString() + '\"\\]');\n if (card) {\n addClass([card], cls.CARD_SELECTION_CLASS);\n card.setAttribute('aria-selected', 'true');\n card.setAttribute('tabindex', '0');\n }\n }\n };\n return Action;\n}());\nexport { Action };\n","import { isNullOrUndefined as isNoU, closest } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Kanban CRUD module\n */\nvar Crud = /** @class */ (function () {\n /**\n * Constructor for CRUD module\n *\n * @param {Kanban} parent Accepts the kanban instance\n * @private\n */\n function Crud(parent) {\n this.parent = parent;\n }\n Crud.prototype.addCard = function (cardData, index) {\n var _this = this;\n var args = {\n cancel: false, requestType: 'cardCreate', addedRecords: (cardData instanceof Array) ? cardData : [cardData],\n changedRecords: [], deletedRecords: []\n };\n this.parent.trigger(events.actionBegin, args, function (addArgs) {\n if (!addArgs.cancel) {\n var modifiedData_1 = [];\n if (_this.parent.sortSettings.field && _this.parent.sortSettings.sortBy === 'Index') {\n if (cardData instanceof Array) {\n modifiedData_1 = cardData;\n }\n else {\n modifiedData_1.push(cardData);\n }\n modifiedData_1.forEach(function (data, index) {\n if (!data[_this.parent.sortSettings.field]) {\n var columnData = _this.parent.getColumnData(data[_this.parent.keyField]);\n if (_this.parent.sortSettings.direction === 'Ascending' && columnData.length > 0) {\n data[_this.parent.sortSettings.field] =\n (columnData[columnData.length - 1][_this.parent.sortSettings.field]) + index + 1;\n }\n else if (_this.parent.sortSettings.direction === 'Descending' && columnData.length > 0) {\n data[_this.parent.sortSettings.field] = columnData[0][_this.parent.sortSettings.field] + index + 1;\n }\n if (columnData.length === 0) {\n data[_this.parent.sortSettings.field] = 1;\n }\n }\n });\n if (!(cardData instanceof Array)) {\n if (!index && _this.parent.sortSettings.direction === 'Descending') {\n // eslint-disable-next-line max-len\n _this.parent.getColumnData(modifiedData_1[0][_this.parent.keyField]).filter(function (obj, count) {\n if (obj[_this.parent.sortSettings.field] === modifiedData_1[0][_this.parent.sortSettings.field]) {\n index = count + 1;\n }\n });\n }\n }\n if (index !== 0 && !index && _this.parent.sortSettings.direction === 'Descending') {\n index = 0;\n }\n modifiedData_1 = _this.priorityOrder(modifiedData_1, index);\n }\n var addedRecords = (cardData instanceof Array) ? cardData : [cardData];\n var changedRecords = (_this.parent.sortSettings.field && _this.parent.sortSettings.sortBy === 'Index') ? modifiedData_1 : [];\n var editParms = { addedRecords: addedRecords, changedRecords: changedRecords, deletedRecords: [] };\n var type = (cardData instanceof Array || modifiedData_1.length > 0) ? 'batch' : 'insert';\n _this.parent.dataModule.updateDataManager(type, editParms, 'cardCreated', cardData, index);\n }\n });\n };\n Crud.prototype.getIndexFromData = function (data) {\n var cardElement = this.parent.element.querySelector(\".\" + cls.CARD_CLASS + \"[data-id=\\\"\" + data[this.parent.cardSettings.headerField] + \"\\\"]\");\n var element = closest(cardElement, '.' + cls.CONTENT_CELLS_CLASS);\n var index = [].slice.call(element.querySelectorAll('.' + cls.CARD_CLASS)).indexOf(cardElement);\n return index;\n };\n Crud.prototype.updateCard = function (cardData, index, isDropped, dataDropIndexKeyFieldValue, draggedKey, droppedKey, isMultipleDrag) {\n var _this = this;\n var args = {\n requestType: 'cardChange', cancel: false, addedRecords: [],\n changedRecords: (cardData instanceof Array) ? cardData : [cardData], deletedRecords: []\n };\n index = isNoU(index) ? this.getIndexFromData(args.changedRecords[0]) : index;\n this.parent.trigger(events.actionBegin, args, function (updateArgs) {\n if (!updateArgs.cancel) {\n if (_this.parent.sortSettings.field && _this.parent.sortSettings.sortBy === 'Index') {\n var modifiedData = [];\n if (cardData instanceof Array) {\n modifiedData = cardData;\n }\n else {\n modifiedData.push(cardData);\n }\n cardData = _this.priorityOrder(modifiedData, index);\n }\n var editParms = {\n addedRecords: [], changedRecords: (cardData instanceof Array) ? cardData : [cardData], deletedRecords: []\n };\n var type = (cardData instanceof Array) ? 'batch' : 'update';\n _this.parent.dataModule.updateDataManager(type, editParms, 'cardChanged', cardData, index, isDropped, dataDropIndexKeyFieldValue, draggedKey, droppedKey, isMultipleDrag);\n }\n });\n };\n Crud.prototype.deleteCard = function (cardData) {\n var _this = this;\n var editParms = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n if (typeof cardData === 'string' || typeof cardData === 'number') {\n editParms.deletedRecords = this.parent.kanbanData.filter(function (data) {\n return data[_this.parent.cardSettings.headerField] === cardData;\n });\n }\n else {\n editParms.deletedRecords = (cardData instanceof Array) ? cardData : [cardData];\n }\n var args = {\n requestType: 'cardRemove', cancel: false, addedRecords: [], changedRecords: [], deletedRecords: editParms.deletedRecords\n };\n this.parent.trigger(events.actionBegin, args, function (deleteArgs) {\n if (!deleteArgs.cancel) {\n var type = (editParms.deletedRecords.length > 1) ? 'batch' : 'delete';\n var cardData_1 = editParms.deletedRecords;\n _this.parent.dataModule.updateDataManager(type, editParms, 'cardRemoved', cardData_1[0]);\n }\n });\n };\n Crud.prototype.priorityOrder = function (cardData, cardIndex) {\n var _this = this;\n var cardsId = cardData.map(function (obj) { return obj[_this.parent.cardSettings.headerField]; });\n var num = cardData[cardData.length - 1][this.parent.sortSettings.field];\n var allModifiedKeys = cardData.map(function (obj) { return obj[_this.parent.keyField]; });\n var modifiedKey = allModifiedKeys.filter(function (key, index) { return allModifiedKeys.indexOf(key) === index; }).sort();\n var columnAllDatas;\n var finalData = [];\n var originalIndex = [];\n var _loop_1 = function (columnKey) {\n var keyData = cardData.filter(function (cardObj) {\n return cardObj[_this.parent.keyField] === columnKey;\n });\n columnAllDatas = this_1.parent.enableVirtualization ? this_1.parent.virtualLayoutModule.getColumnData(columnKey)\n : this_1.parent.layoutModule.getColumnData(columnKey);\n for (var _i = 0, _a = keyData; _i < _a.length; _i++) {\n var data = _a[_i];\n if (this_1.parent.swimlaneSettings.keyField) {\n var swimlaneDatas = this_1.parent.getSwimlaneData(data[this_1.parent.swimlaneSettings.keyField]);\n columnAllDatas = this_1.parent.getColumnData(columnKey, swimlaneDatas);\n }\n }\n keyData.forEach(function (key) { return finalData.push(key); });\n if (!isNoU(cardIndex)) {\n var _loop_2 = function (j) {\n columnAllDatas.filter(function (data, index) {\n if (data[_this.parent.cardSettings.headerField] === cardsId[j] && index <= cardIndex) {\n originalIndex.push(index);\n }\n });\n };\n for (var j = 0; j < cardsId.length; j++) {\n _loop_2(j);\n }\n if (originalIndex.length > 0) {\n cardIndex = cardIndex + originalIndex.length;\n }\n if (this_1.parent.sortSettings.direction === 'Ascending') {\n for (var i = cardIndex; i < columnAllDatas.length; i++) {\n if (cardsId.indexOf(columnAllDatas[i][this_1.parent.cardSettings.headerField]) === -1) {\n columnAllDatas[i][this_1.parent.sortSettings.field] = ++num;\n finalData.push(columnAllDatas[i]);\n }\n }\n }\n else {\n for (var i = cardIndex - 1; i >= 0; i--) {\n if (cardsId.indexOf(columnAllDatas[i][this_1.parent.cardSettings.headerField]) === -1) {\n columnAllDatas[i][this_1.parent.sortSettings.field] = ++num;\n finalData.push(columnAllDatas[i]);\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, modifiedKey_1 = modifiedKey; _i < modifiedKey_1.length; _i++) {\n var columnKey = modifiedKey_1[_i];\n _loop_1(columnKey);\n }\n return finalData;\n };\n return Crud;\n}());\nexport { Crud };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Draggable, formatUnit, createElement, isNullOrUndefined as isNoU, addClass, closest, detach } from '@syncfusion/ej2-base';\nimport { removeClass, classList, remove, EventHandler, extend } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport * as events from '../base/constant';\n/**\n * Drag and Drop module is used to perform card actions.\n */\nvar DragAndDrop = /** @class */ (function () {\n /**\n * Constructor for drag and drop module\n *\n * @param {Kanban} parent Accepts the kanban instance\n * @private\n */\n function DragAndDrop(parent) {\n this.insertClone = 'afterend';\n this.parent = parent;\n this.dragObj = {\n element: null, cloneElement: null, instance: null, targetClone: null, draggedClone: null, targetCloneMulti: null,\n selectedCards: [], pageX: 0, pageY: 0, navigationInterval: null, cardDetails: [], modifiedData: []\n };\n this.dragEdges = { left: false, right: false, top: false, bottom: false };\n this.isDragging = false;\n this.isExternalDrop = false;\n }\n DragAndDrop.prototype.wireDragEvents = function (element) {\n var dragContainment;\n if (!this.parent.element != null && this.parent.externalDropId.length === 0) {\n dragContainment = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n }\n this.dragObj.instance = new Draggable(element, {\n clone: true,\n enableTapHold: this.parent.isAdaptive,\n enableTailMode: true,\n cursorAt: { top: -10, left: -10 },\n dragArea: dragContainment,\n dragStart: this.dragStart.bind(this),\n drag: this.drag.bind(this),\n dragStop: this.dragStop.bind(this),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n };\n DragAndDrop.prototype.dragHelper = function (e) {\n if (this.parent.isAdaptive && this.parent.touchModule.mobilePopup &&\n this.parent.touchModule.mobilePopup.element.classList.contains(cls.POPUP_OPEN_CLASS)) {\n this.parent.touchModule.mobilePopup.hide();\n }\n this.dragObj.element = closest(e.sender.target, '.' + cls.CARD_CLASS);\n if (isNoU(this.dragObj.element)) {\n return null;\n }\n this.dragObj.element.style.width = formatUnit(this.dragObj.element.offsetWidth);\n var cloneWrapper = createElement('div', { innerHTML: this.dragObj.element.outerHTML });\n this.dragObj.cloneElement = cloneWrapper.children.item(0);\n addClass([this.dragObj.cloneElement], cls.CLONED_CARD_CLASS);\n this.dragObj.element.parentElement.appendChild(this.dragObj.cloneElement);\n this.dragObj.targetCloneMulti = createElement('div', { className: cls.TARGET_MULTI_CLONE_CLASS });\n this.dragObj.targetClone = createElement('div', {\n className: cls.DROPPED_CLONE_CLASS,\n styles: 'width:100%;height:' + formatUnit(this.dragObj.element.offsetHeight)\n });\n this.dragObj.modifiedData = [];\n return this.dragObj.cloneElement;\n };\n DragAndDrop.prototype.dragStart = function (e) {\n var _this = this;\n this.dragObj.selectedCards = this.dragObj.element;\n this.borderElm = this.parent.element.querySelectorAll('.' + cls.BORDER_CLASS);\n if (this.dragObj.element.classList.contains(cls.CARD_SELECTION_CLASS)) {\n var className = '.' + cls.CARD_CLASS + '.' + cls.CARD_SELECTION_CLASS + ':not(.' + cls.CLONED_CARD_CLASS + ')';\n var closestEle = closest(this.dragObj.element, '.' + cls.CONTENT_ROW_CLASS);\n this.dragObj.selectedCards = [].slice.call(closestEle.querySelectorAll(className));\n this.dragObj.selectedCards.forEach(function (element) {\n _this.dragObj.cardDetails.push(_this.parent.getCardDetails(element));\n });\n }\n else {\n this.dragObj.cardDetails = [this.parent.getCardDetails(this.dragObj.element)];\n }\n if (!isNoU(this.dragObj.selectedCards) && !isNoU(this.dragObj.selectedCards.length) &&\n this.dragObj.selectedCards.length >= 1) {\n this.dragObj.selectedCards[0].closest('.e-content-cells').classList.add('e-dragged-column');\n }\n else if (!isNoU(this.dragObj.selectedCards) &&\n !isNoU(this.dragObj.selectedCards.closest('.e-content-cells'))) {\n this.dragObj.selectedCards.closest('.e-content-cells').classList.add('e-dragged-column');\n }\n var dragArgs = { cancel: false, data: this.dragObj.cardDetails, event: e, element: this.dragObj.selectedCards };\n this.parent.trigger(events.dragStart, dragArgs, function (dragEventArgs) {\n if (dragEventArgs.cancel) {\n _this.removeElement(_this.dragObj.cloneElement);\n _this.dragObj.instance.intDestroy(e);\n _this.dragObj.element = null;\n _this.dragObj.targetClone = null;\n _this.dragObj.draggedClone = null;\n _this.dragObj.cloneElement = null;\n _this.dragObj.targetCloneMulti = null;\n return;\n }\n if (_this.dragObj.element.classList.contains(cls.CARD_SELECTION_CLASS)) {\n _this.dragObj.selectedCards.forEach(function (element) { _this.draggedClone(element); });\n if (_this.dragObj.selectedCards.length > 1) {\n _this.dragObj.cloneElement.innerHTML = '';\n var drag = createElement('div', {\n className: 'e-multi-card-text',\n innerHTML: _this.dragObj.selectedCards.length + ' ' + _this.parent.localeObj.getConstant('cards')\n });\n _this.dragObj.cloneElement.appendChild(drag);\n classList(_this.dragObj.cloneElement, ['e-multi-card-clone'], [cls.CARD_SELECTION_CLASS]);\n if (_this.parent.enableVirtualization) {\n _this.parent.virtualLayoutModule.disableAttributeSelection(_this.dragObj.cloneElement);\n }\n else {\n _this.parent.layoutModule.disableAttributeSelection(_this.dragObj.cloneElement);\n }\n _this.dragObj.cloneElement.style.width = '90px';\n }\n }\n else {\n _this.draggedClone(_this.dragObj.element);\n }\n EventHandler.add(document.body, 'keydown', _this.keydownHandler, _this);\n _this.parent.notify(events.contentReady, {});\n });\n };\n DragAndDrop.prototype.draggedClone = function (element) {\n this.dragObj.draggedClone = createElement('div', {\n className: cls.DRAGGED_CLONE_CLASS,\n styles: 'width:' + formatUnit(element.offsetWidth - 1) + ';height:' + formatUnit(element.offsetHeight)\n });\n element.insertAdjacentElement('afterend', this.dragObj.draggedClone);\n addClass([element], cls.DRAGGED_CARD_CLASS);\n };\n DragAndDrop.prototype.drag = function (e) {\n var _this = this;\n if (!e.target) {\n return;\n }\n var cardElement = closest(e.target, '.' + cls.ROOT_CLASS + ' .' + cls.CARD_CLASS);\n if (!isNoU(cardElement) && this.parent.enableVirtualization && !isNoU(e.target.previousElementSibling) &&\n !isNoU(e.target.previousElementSibling.querySelector('.e-target-dropped-clone'))) {\n cardElement = e.target.previousElementSibling.querySelector('.e-target-dropped-clone').nextElementSibling;\n }\n var targetEle = e.target;\n if (!isNoU(e.target.parentElement)) {\n if (e.target.nodeName === 'SPAN' && e.target.classList.contains('e-empty-card')) {\n targetEle = e.target.parentElement;\n }\n else if (e.target.nodeName === 'DIV' && e.target.classList.contains('e-kanban-border')) {\n if (!(this.parent.element.querySelector('.e-target-dropped-clone') === e.target.nextElementSibling.firstChild)) {\n targetEle = e.target.parentElement;\n }\n }\n }\n var target = cardElement || targetEle;\n var selector = '.' + cls.CONTENT_ROW_CLASS + ':not(.' + cls.SWIMLANE_ROW_CLASS + ') .' + cls.CONTENT_CELLS_CLASS\n + '.' + cls.DROPPABLE_CLASS;\n var contentCell = closest(target, selector);\n var cellDimension;\n var borderElem;\n var dropElement;\n if (target.nextElementSibling && target.nextElementSibling.lastChild) {\n dropElement = target.nextElementSibling.lastChild.previousElementSibling;\n }\n this.externalDrop(target);\n this.kanbanObj = this.parent.isExternalKanbanDrop ? this.parent.externalDropObj : this.parent;\n this.calculateArgs(e);\n if (contentCell && document.body.style.cursor !== 'not-allowed') {\n var targetKey = this.getColumnKey(contentCell);\n var keys = targetKey.split(',');\n this.multiCloneRemove();\n var isDrag = (targetKey === this.getColumnKey(closest(this.dragObj.draggedClone, '.' + cls.CONTENT_CELLS_CLASS)))\n ? true : false;\n if (keys.length === 1 || isDrag) {\n if (target.classList.contains(cls.DRAGGED_CLONE_CLASS)) {\n this.removeElement(this.dragObj.targetClone, this.kanbanObj);\n }\n if (target.classList.contains(cls.CARD_CLASS) || this.insertClone === 'beforebegin') {\n var element = target.classList.contains(cls.DRAGGED_CLONE_CLASS) ?\n (target.previousElementSibling.classList.contains(cls.DRAGGED_CARD_CLASS) ? null : target.previousElementSibling)\n : target.previousElementSibling;\n this.insertClone = 'afterend';\n if (isNoU(element)) {\n var pageY = target.classList.contains(cls.DRAGGED_CLONE_CLASS) ? (this.dragObj.pageY / 2) :\n this.dragObj.pageY;\n var height = target.classList.contains(cls.DRAGGED_CLONE_CLASS) ? target.offsetHeight :\n (target.offsetHeight / 2);\n if ((pageY - (this.kanbanObj.element.getBoundingClientRect().top + target.offsetTop)) < height) {\n this.insertClone = 'beforebegin';\n }\n }\n if (target.classList.contains(cls.CARD_CLASS)) {\n if (this.parent.enableVirtualization) {\n this.insertClone = this.isTargetElementVisible(target) ? this.insertClone : 'beforebegin';\n }\n target.insertAdjacentElement(this.insertClone, this.dragObj.targetClone);\n }\n }\n else if (target.classList.contains(cls.CONTENT_CELLS_CLASS) && !closest(target, '.' + cls.SWIMLANE_ROW_CLASS)) {\n if (target.querySelectorAll('.' + cls.DRAGGED_CARD_CLASS).length !== 0 &&\n target.querySelectorAll('.' + cls.CARD_CLASS + ':not(.e-kanban-dragged-card):not(.e-cloned-card)').length === 0) {\n return;\n }\n else {\n target.querySelector('.' + cls.CARD_WRAPPER_CLASS).appendChild(this.dragObj.targetClone);\n }\n }\n else if ((target.classList.contains(cls.CARD_WRAPPER_CLASS) ||\n target.classList.contains(cls.CARD_VIRTUAL_WRAPPER_CLASS)) &&\n !closest(target, '.' + cls.SWIMLANE_ROW_CLASS)\n && contentCell.querySelectorAll('.' + cls.CARD_CLASS).length === 0) {\n target.appendChild(this.dragObj.targetClone);\n }\n else if (target.classList.contains(cls.BORDER_CLASS) && !closest(target, '.' + cls.SWIMLANE_ROW_CLASS)\n && (target.nextElementSibling && target.nextElementSibling.classList.contains(cls.CARD_WRAPPER_CLASS))\n && this.dragObj.targetClone && (!dropElement || !dropElement.classList.contains(cls.DROPPED_CLONE_CLASS))) {\n if (!this.parent.enableVirtualization && !this.isTargetElementVisible(target.nextElementSibling)) {\n target.nextElementSibling.appendChild(this.dragObj.targetClone);\n }\n }\n }\n else if (keys.length > 1 && (contentCell.classList.contains(cls.DROPPING_CLASS) ||\n contentCell.firstChild && contentCell.firstChild.classList.contains(cls.DROPPING_CLASS))) {\n this.multiCloneCreate(keys, contentCell);\n }\n this.kanbanObj.notify(events.contentReady, {});\n }\n if (this.kanbanObj.element.querySelectorAll('.' + cls.DROPPING_CLASS).length === 0) {\n this.cellDropping();\n }\n var isCollapsed = false;\n if (contentCell) {\n isCollapsed = contentCell.classList.contains(cls.COLLAPSED_CLASS) && contentCell.classList.contains(cls.DROPPING_CLASS);\n if (contentCell.getAttribute('aria-expanded') === 'true' || !contentCell.parentElement.hasAttribute('aria-expanded')) {\n cellDimension = contentCell.getBoundingClientRect();\n this.updateDimension(cellDimension);\n }\n borderElem = contentCell.querySelector('.' + cls.BORDER_CLASS);\n }\n if (target && target.tagName === 'TABLE' && !isNoU(target.querySelector('.' + cls.CONTENT_ROW_CLASS))) {\n cellDimension = target.querySelector('.' + cls.CONTENT_ROW_CLASS).getBoundingClientRect();\n this.updateDimension(cellDimension, target);\n }\n if (isCollapsed) {\n this.toggleVisible(target);\n addClass([contentCell], cls.TOGGLE_VISIBLE_CLASS);\n }\n var tColumn = [].slice.call(this.kanbanObj.element.querySelectorAll('.' + cls.TOGGLE_VISIBLE_CLASS));\n if (tColumn.length > 0 && !target.classList.contains(cls.TOGGLE_VISIBLE_CLASS)\n && !closest(target, '.' + cls.TOGGLE_VISIBLE_CLASS)) {\n this.toggleVisible(target, tColumn.slice(-1)[0]);\n removeClass(tColumn, cls.TOGGLE_VISIBLE_CLASS);\n }\n this.kanbanObj.notify(events.contentReady, {});\n var multiKeyTarget = closest(target, '.' + cls.MULTI_COLUMN_KEY_CLASS);\n if (multiKeyTarget) {\n var columnKeys = [].slice.call(this.kanbanObj.element.querySelectorAll('.' + cls.MULTI_COLUMN_KEY_CLASS + ':not(.' +\n cls.DISABLED_CLASS + ')')).filter(function (element) { return _this.getColumnKey(element) === _this.getColumnKey(multiKeyTarget); });\n if (columnKeys.length > 0) {\n addClass(columnKeys, cls.MULTI_ACTIVE_CLASS);\n if (columnKeys[0].previousElementSibling) {\n addClass([columnKeys[0].previousElementSibling], 'e-multi-bottom-border');\n }\n }\n }\n document.body.style.cursor = (contentCell && contentCell.classList.contains(cls.DROPPING_CLASS) ||\n (contentCell && borderElem && borderElem.classList.contains(cls.DROPPING_CLASS))) ? '' : 'not-allowed';\n if (cardElement && !(closest(cardElement, '.' + cls.CONTENT_CELLS_CLASS)).classList.contains(cls.DROPPING_CLASS) &&\n !(contentCell && borderElem && borderElem.classList.contains(cls.DROPPING_CLASS))) {\n cardElement.style.cursor = 'not-allowed';\n document.body.style.cursor = 'not-allowed';\n }\n if (this.isExternalDrop && document.body.style.cursor === 'not-allowed') {\n document.body.style.cursor = '';\n }\n if (document.body.style.cursor === 'not-allowed') {\n this.removeElement(this.dragObj.targetClone, this.kanbanObj);\n this.multiCloneRemove();\n }\n this.updateScrollPosition();\n var dragArgs = { data: this.dragObj.cardDetails, event: e, element: this.dragObj.selectedCards };\n this.kanbanObj.trigger(events.drag, dragArgs);\n this.parent.isExternalKanbanDrop = false;\n this.isExternalDrop = false;\n };\n DragAndDrop.prototype.removeElement = function (element, kanbanObj) {\n kanbanObj = kanbanObj ? kanbanObj : this.parent;\n if (kanbanObj.element.getElementsByClassName(element.className).length > 0) {\n remove(element);\n }\n };\n DragAndDrop.prototype.isTargetElementVisible = function (targetElem) {\n var wrapperElem = closest(targetElem, '.' + cls.CARD_WRAPPER_CLASS);\n if (!isNoU(wrapperElem)) {\n var wrapperElemBottom = wrapperElem.getBoundingClientRect().bottom;\n var targetElemBottom = targetElem.getBoundingClientRect().bottom;\n if (targetElemBottom > wrapperElemBottom) {\n return false;\n }\n return true;\n }\n return true;\n };\n DragAndDrop.prototype.externalDrop = function (target) {\n var _this = this;\n this.parent.externalDropId.forEach(function (externalDropId) {\n var targetRootElement = closest(target, externalDropId);\n if (targetRootElement) {\n if (targetRootElement.classList.contains('e-kanban')) {\n _this.parent.externalDropObj = document.querySelector(externalDropId).ej2_instances[0];\n _this.parent.isExternalKanbanDrop = true;\n var className = '.' + cls.CONTENT_ROW_CLASS + ':not(.' + cls.SWIMLANE_ROW_CLASS +\n '):not(.' + cls.COLLAPSED_CLASS + ') .' + cls.CONTENT_CELLS_CLASS;\n var cells = [].slice.call(_this.parent.externalDropObj.element.querySelectorAll(className));\n addClass(cells, cls.DROPPING_CLASS);\n }\n else {\n _this.isExternalDrop = true;\n }\n }\n });\n };\n DragAndDrop.prototype.multiCloneCreate = function (keys, contentCell) {\n var offsetHeight = contentCell.offsetHeight;\n var limitEle = contentCell.querySelector('.' + cls.LIMITS_CLASS);\n if (limitEle) {\n offsetHeight -= limitEle.offsetHeight;\n }\n this.dragObj.targetCloneMulti.style.height = formatUnit(offsetHeight);\n if (contentCell.querySelector('.' + cls.SHOW_ADD_BUTTON)) {\n addClass([contentCell.querySelector('.' + cls.SHOW_ADD_BUTTON)], cls.MULTI_CARD_WRAPPER_CLASS);\n }\n addClass([contentCell.querySelector('.' + cls.CARD_WRAPPER_CLASS)], cls.MULTI_CARD_WRAPPER_CLASS);\n contentCell.querySelector('.' + cls.CARD_WRAPPER_CLASS).style.height = 'auto';\n contentCell.style.borderStyle = 'none';\n this.removeElement(this.dragObj.targetClone);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var dragCell = closest(this.dragObj.draggedClone, '.' + cls.CONTENT_CELLS_CLASS);\n var transition = this.kanbanObj.columns[dragCell.cellIndex].transitionColumns;\n var allowTransition = this.allowedTransition(this.dragObj.element.getAttribute('data-key'), key, transition);\n var name_1 = allowTransition ? '' : ' ' + cls.DISABLED_CLASS;\n var colKey = createElement('div', {\n className: cls.MULTI_COLUMN_KEY_CLASS + name_1,\n attrs: { 'data-key': key.trim() }\n });\n var text = createElement('div', { className: 'e-text', innerHTML: key.trim() });\n contentCell.appendChild(this.dragObj.targetCloneMulti).appendChild(colKey).appendChild(text);\n colKey.style.cursor = allowTransition ? '' : 'not-allowed';\n colKey.style.lineHeight = colKey.style.height = formatUnit((offsetHeight / keys.length));\n text.style.top = formatUnit((offsetHeight / 2) - (text.offsetHeight / 2));\n }\n };\n DragAndDrop.prototype.allowedTransition = function (currentCardKey, targetCardKey, allowedKey) {\n var allowTransition = true;\n var targetKey = targetCardKey.split(',');\n for (var i = 0; i < targetKey.length; i++) {\n if (currentCardKey === targetKey[i].trim()) {\n return true;\n }\n if (allowedKey) {\n if (allowedKey.length === 1 && allowedKey[0].length === 0) {\n return true;\n }\n for (var j = 0; j < allowedKey.length; j++) {\n if (targetKey[i].trim() === allowedKey[j].trim()) {\n return true;\n }\n else {\n allowTransition = false;\n }\n }\n }\n }\n return allowTransition;\n };\n DragAndDrop.prototype.cellDropping = function () {\n var _this = this;\n var dragCell = closest(this.dragObj.draggedClone, '.' + cls.CONTENT_CELLS_CLASS);\n var dragRow = closest(this.dragObj.draggedClone, '.' + cls.CONTENT_ROW_CLASS);\n if (dragCell && dragCell.classList.contains(cls.DROP_CLASS)) {\n addClass([dragCell], cls.DROPPING_CLASS);\n }\n this.addDropping(dragRow, dragCell);\n if (this.kanbanObj.swimlaneSettings.keyField && this.kanbanObj.swimlaneSettings.allowDragAndDrop) {\n var className = '.' + cls.CONTENT_ROW_CLASS + ':not(.' + cls.SWIMLANE_ROW_CLASS + '):not(.' + cls.COLLAPSED_CLASS + ')';\n var rows = [].slice.call(this.kanbanObj.element.querySelectorAll(className));\n [].slice.call(rows).forEach(function (row) {\n if (dragRow !== row) {\n _this.addDropping(row, dragCell);\n }\n });\n }\n };\n DragAndDrop.prototype.addDropping = function (dragRow, dragCell) {\n var _this = this;\n if (dragCell && this.borderElm && this.borderElm.length !== 0) {\n if (dragCell.classList.contains(cls.DROPPING_CLASS)) {\n removeClass([dragCell], cls.DROPPING_CLASS);\n }\n var cellDimension = dragCell.getBoundingClientRect();\n this.updateDimension(cellDimension);\n }\n else if (dragCell && dragRow) {\n [].slice.call(dragRow.children).forEach(function (cell) {\n var transition = _this.kanbanObj.columns[dragCell.cellIndex].transitionColumns;\n if (cell !== dragCell && cell.classList.contains(cls.DROP_CLASS) &&\n _this.allowedTransition(dragCell.getAttribute('data-key'), cell.getAttribute('data-key'), transition)) {\n addClass([cell], cls.DROPPING_CLASS);\n }\n });\n }\n };\n DragAndDrop.prototype.updateDimension = function (dimensions, target) {\n [].slice.call(this.borderElm).forEach(function (element) {\n if (element.parentElement && (element.parentElement.getAttribute('aria-expanded') === 'true' || !element.parentElement.hasAttribute('aria-expanded'))) {\n addClass([element], cls.DROPPING_CLASS);\n }\n var hasAddButton = element.previousElementSibling;\n element.style.height = parseInt(dimensions.height.toString(), 10) - (hasAddButton &&\n hasAddButton.classList.contains(cls.SHOW_ADD_BUTTON) ? hasAddButton.offsetHeight + hasAddButton.offsetTop : 0) + 'px';\n if (!target || target.tagName !== 'TABLE') {\n element.style.width = parseInt(dimensions.width.toString(), 10) + 'px';\n }\n element.style.left = (element.parentElement.getBoundingClientRect().left - closest(element, '.e-kanban').getBoundingClientRect().left) + 'px';\n });\n };\n DragAndDrop.prototype.keydownHandler = function (e) {\n if (e.code === 'Escape' && this.dragObj.cloneElement) {\n EventHandler.remove(this.dragObj.cloneElement, 'keydown', this.keydownHandler);\n this.dragObj.element.removeAttribute('aria-grabbed');\n this.dragStopClear();\n this.dragStopPostClear();\n }\n };\n DragAndDrop.prototype.dragStop = function (e) {\n var _this = this;\n var contentCell = closest(this.dragObj.targetClone, '.' + cls.CONTENT_CELLS_CLASS);\n if (this.parent.enableVirtualization && !isNoU(contentCell)) {\n contentCell.classList.add('e-dropped-column');\n }\n var columnKey;\n var dropIndex;\n var dataDropIndexKeyfieldValue;\n var isMultipleDrag;\n EventHandler.remove(document.body, 'keydown', this.keydownHandler);\n [].slice.call(this.borderElm).forEach(function (element) {\n element.classList.remove(cls.DROPPING_CLASS);\n });\n if (this.dragObj.targetClone.parentElement) {\n isMultipleDrag = (this.dragObj.selectedCards && this.dragObj.selectedCards.length > 1\n && this.parent.sortSettings.sortBy === 'Index');\n var className = !isMultipleDrag ? '.' + cls.CARD_CLASS + ':not(.' + cls.DRAGGED_CARD_CLASS + ', .' + cls.CLONED_CARD_CLASS + '),.' + cls.DROPPED_CLONE_CLASS :\n '.' + cls.CARD_CLASS + ':not(.' + cls.CLONED_CARD_CLASS + '),.' + cls.DROPPED_CLONE_CLASS;\n var element = [].slice.call(this.dragObj.targetClone.parentElement.querySelectorAll(className));\n dropIndex = element.indexOf(this.dragObj.targetClone);\n if (this.parent.enableVirtualization && !isNoU(this.dragObj.targetClone.nextElementSibling)) {\n dataDropIndexKeyfieldValue = this.dragObj.targetClone.nextElementSibling.getAttribute('data-id');\n }\n }\n if (!isNoU(this.kanbanObj) && this.kanbanObj.element.querySelector('.' + cls.TARGET_MULTI_CLONE_CLASS)) {\n columnKey = closest(e.target, '.' + cls.MULTI_COLUMN_KEY_CLASS + ':not(.' + cls.DISABLED_CLASS + ')');\n }\n if (contentCell || columnKey) {\n var cardStatus_1;\n if (contentCell) {\n cardStatus_1 = this.getColumnKey(contentCell);\n }\n else {\n cardStatus_1 = this.getColumnKey(columnKey);\n contentCell = closest(columnKey, '.' + cls.CONTENT_CELLS_CLASS);\n }\n if (this.dragObj.selectedCards instanceof HTMLElement) {\n this.updateDroppedData(this.dragObj.selectedCards, cardStatus_1, contentCell);\n }\n else {\n this.dragObj.selectedCards.forEach(function (element) { _this.updateDroppedData(element, cardStatus_1, contentCell); });\n }\n if (this.parent.sortSettings.field && this.parent.sortSettings.sortBy === 'Index') {\n this.changeOrder(this.dragObj.modifiedData, e.helper);\n }\n }\n if (this.dragObj.modifiedData.length === 0) {\n this.dragObj.modifiedData = this.dragObj.cardDetails;\n }\n var dragArgs = {\n cancel: false, data: this.dragObj.modifiedData, event: e, element: this.dragObj.selectedCards,\n dropIndex: dropIndex\n };\n this.parent.trigger(events.dragStop, dragArgs, function (dragEventArgs) {\n _this.dragStopClear();\n if (!dragEventArgs.cancel) {\n if (contentCell || columnKey) {\n var updateCard = dragEventArgs.data instanceof Array &&\n dragEventArgs.data.length > 1 ? dragEventArgs.data :\n dragEventArgs.data[0];\n var draggedColumnKey = void 0;\n var droppedColumnKey = void 0;\n if (_this.parent.enableVirtualization) {\n draggedColumnKey = contentCell.closest('.e-kanban').querySelector('.e-dragged-column').getAttribute('data-key');\n droppedColumnKey = contentCell.getAttribute('data-key');\n }\n _this.parent.crudModule.updateCard(updateCard, dragEventArgs.dropIndex, true, dataDropIndexKeyfieldValue, draggedColumnKey, droppedColumnKey, isMultipleDrag);\n if (_this.parent.enableVirtualization) {\n _this.parent.virtualLayoutModule.refreshColumnData(draggedColumnKey, droppedColumnKey);\n _this.parent.virtualLayoutModule.ensureColumnNotEmpty(draggedColumnKey);\n }\n }\n }\n _this.removeEmptyTrElement();\n _this.dragStopPostClear();\n });\n };\n DragAndDrop.prototype.removeEmptyTrElement = function () {\n if (!this.parent.swimlaneSettings.showEmptyRow) {\n var swimlaneRowList = this.parent.element.querySelectorAll('.e-content-row.e-swimlane-row');\n for (var j = 0; j < swimlaneRowList.length; j++) {\n var cardRowData = swimlaneRowList[j].nextElementSibling.querySelectorAll('.e-card-wrapper .e-card');\n if (!isNoU(swimlaneRowList[j].nextElementSibling) && cardRowData.length === 0) {\n detach(swimlaneRowList[j].nextElementSibling);\n detach(swimlaneRowList[j]);\n }\n }\n }\n };\n DragAndDrop.prototype.dragStopClear = function () {\n this.removeElement(this.dragObj.draggedClone);\n this.removeElement(this.dragObj.targetClone, this.kanbanObj);\n this.removeElement(this.dragObj.cloneElement);\n var dragMultiClone = [].slice.call(this.parent.element.querySelectorAll('.' + cls.DRAGGED_CLONE_CLASS));\n dragMultiClone.forEach(function (clone) { remove(clone); });\n this.dragObj.element.style.removeProperty('width');\n this.multiCloneRemove();\n if (this.dragObj.selectedCards instanceof HTMLElement) {\n removeClass([this.dragObj.selectedCards], cls.DRAGGED_CARD_CLASS);\n }\n else {\n removeClass(this.dragObj.selectedCards, cls.DRAGGED_CARD_CLASS);\n }\n clearInterval(this.dragObj.navigationInterval);\n this.dragObj.navigationInterval = null;\n if (document.body.style.cursor === 'not-allowed') {\n document.body.style.cursor = '';\n }\n var styleCards = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_CLASS + '[style]'));\n styleCards.forEach(function (styleCard) { styleCard.style.cursor = ''; });\n var className = '.' + cls.CONTENT_ROW_CLASS + ':not(.' + cls.SWIMLANE_ROW_CLASS + ')';\n var cells = [].slice.call(this.parent.element.querySelectorAll(className + ' .' + cls.CONTENT_CELLS_CLASS));\n cells.forEach(function (cell) { return removeClass([cell], cls.DROPPING_CLASS); });\n if (this.parent.externalDropObj) {\n var externalCells = [].slice.call(this.parent.externalDropObj.element.querySelectorAll(className + ' .' +\n cls.CONTENT_CELLS_CLASS));\n externalCells.forEach(function (externalCell) { return removeClass([externalCell], cls.DROPPING_CLASS); });\n }\n };\n DragAndDrop.prototype.dragStopPostClear = function () {\n if (this.parent.isAdaptive) {\n this.parent.touchModule.tabHold = false;\n }\n if (this.parent.element.querySelector('.e-dragged-column')) {\n this.parent.element.querySelector('.e-dragged-column').classList.remove('e-dragged-column');\n }\n if (this.parent.element.querySelector('.e-dropped-column')) {\n this.parent.element.querySelector('.e-dropped-column').classList.remove('e-dropped-column');\n }\n this.dragObj.cardDetails = this.dragObj.modifiedData = [];\n this.isDragging = false;\n this.parent.isExternalKanbanDrop = false;\n this.parent.externalDropObj = null;\n };\n DragAndDrop.prototype.updateDroppedData = function (element, cardStatus, contentCell) {\n var crudObj = this.parent.getCardDetails(element);\n var crudData = extend({}, crudObj, null, true);\n if (cardStatus.split(',').length === 1) {\n crudData[this.parent.keyField] = cardStatus;\n }\n if (this.parent.swimlaneSettings.keyField && this.parent.swimlaneSettings.allowDragAndDrop) {\n var prev = closest(contentCell, '.' + cls.CONTENT_ROW_CLASS).previousElementSibling;\n if (this.parent.isAdaptive) {\n var keyField = this.parent.layoutModule.kanbanRows[this.parent.layoutModule.swimlaneIndex].keyField;\n crudData[this.parent.swimlaneSettings.keyField] = keyField;\n }\n else {\n crudData[this.parent.swimlaneSettings.keyField] = this.getColumnKey(prev);\n }\n }\n this.dragObj.modifiedData.push(crudData);\n };\n DragAndDrop.prototype.changeOrder = function (modifieddata, draggedCard) {\n var _this = this;\n var prevele = false;\n var element;\n if (this.kanbanObj.sortSettings.direction === 'Ascending') {\n element = (draggedCard === this.dragObj.targetClone.previousElementSibling) &&\n (this.dragObj.targetClone.previousElementSibling &&\n this.dragObj.targetClone.previousElementSibling.previousElementSibling) ?\n this.dragObj.targetClone.previousElementSibling.previousElementSibling : this.dragObj.targetClone.previousElementSibling;\n }\n else {\n element = this.dragObj.targetClone.nextElementSibling;\n }\n if (element && !element.classList.contains(cls.DRAGGED_CARD_CLASS) && !element.classList.contains(cls.CLONED_CARD_CLASS)\n && !element.classList.contains(cls.DRAGGED_CLONE_CLASS)) {\n prevele = true;\n }\n else if (this.dragObj.targetClone.nextElementSibling && this.kanbanObj.sortSettings.direction === 'Ascending') {\n element = this.dragObj.targetClone.nextElementSibling;\n }\n else if (this.dragObj.targetClone.previousElementSibling && this.kanbanObj.sortSettings.direction === 'Descending') {\n element = this.dragObj.targetClone.previousElementSibling;\n }\n else {\n return;\n }\n if (element.classList.contains(cls.CARD_CLASS)) {\n var obj = this.kanbanObj.getCardDetails(element);\n var keyIndex_1 = obj[this.kanbanObj.sortSettings.field];\n if (modifieddata.length > 1 && this.kanbanObj.sortSettings.direction === 'Descending') {\n modifieddata = modifieddata.reverse();\n }\n modifieddata.forEach(function (data, index) {\n if (prevele) {\n data[_this.kanbanObj.sortSettings.field] = ++keyIndex_1;\n }\n else if (keyIndex_1 !== 1 && index <= data[_this.kanbanObj.sortSettings.field]) {\n data[_this.kanbanObj.sortSettings.field] = --keyIndex_1;\n }\n else if (keyIndex_1 === 1) {\n data[_this.kanbanObj.sortSettings.field] = index + 1;\n }\n });\n }\n };\n DragAndDrop.prototype.toggleVisible = function (target, tColumn) {\n var _this = this;\n var headerCells = '.' + cls.HEADER_CELLS_CLASS + ':not(.' + cls.STACKED_HEADER_CELL_CLASS + ')';\n var lists = [].slice.call(this.kanbanObj.element.querySelectorAll(headerCells));\n lists.forEach(function (list) {\n if (_this.getColumnKey(list) === _this.getColumnKey(tColumn || target)) {\n _this.kanbanObj.actionModule.columnToggle(list);\n }\n });\n var cloneTarget = closest(this.dragObj.draggedClone, '.' + cls.CONTENT_CELLS_CLASS);\n if (cloneTarget) {\n var width = formatUnit(cloneTarget.offsetWidth - events.cardSpace);\n this.dragObj.draggedClone.style.width = width;\n this.dragObj.cloneElement.style.width = width;\n }\n };\n DragAndDrop.prototype.multiCloneRemove = function () {\n var cloneMulti = !isNoU(this.kanbanObj) ? [].slice.call(this.kanbanObj.element.querySelectorAll('.' + cls.TARGET_MULTI_CLONE_CLASS)) : [];\n if (cloneMulti.length > 0) {\n var columnKey = [].slice.call(this.kanbanObj.element.querySelectorAll('.' + cls.MULTI_COLUMN_KEY_CLASS));\n columnKey.forEach(function (node) { return remove(node); });\n cloneMulti.forEach(function (node) {\n var cell = closest(node, '.' + cls.CONTENT_CELLS_CLASS);\n if (cell) {\n cell.style.borderStyle = '';\n if (cell.querySelector('.' + cls.SHOW_ADD_BUTTON)) {\n removeClass([cell.querySelector('.' + cls.SHOW_ADD_BUTTON)], cls.MULTI_CARD_WRAPPER_CLASS);\n }\n removeClass([cell.querySelector('.' + cls.CARD_WRAPPER_CLASS)], cls.MULTI_CARD_WRAPPER_CLASS);\n }\n });\n this.removeElement(this.dragObj.targetCloneMulti, this.kanbanObj);\n }\n };\n DragAndDrop.prototype.calculateArgs = function (e) {\n var eventArgs = this.getPageCoordinates(e);\n this.dragObj.pageY = eventArgs.pageY;\n this.dragObj.pageX = eventArgs.pageX;\n this.isDragging = true;\n if (this.kanbanObj.isAdaptive && this.kanbanObj.tooltipModule) {\n this.kanbanObj.tooltipModule.tooltipObj.close();\n }\n };\n DragAndDrop.prototype.getPageCoordinates = function (e) {\n var eventArgs = e.event;\n return eventArgs && eventArgs.changedTouches ? eventArgs.changedTouches[0] : e.changedTouches ? e.changedTouches[0] :\n eventArgs || e;\n };\n DragAndDrop.prototype.getColumnKey = function (target) {\n if (target && target.getAttribute('data-key')) {\n return target.getAttribute('data-key').trim();\n }\n return '';\n };\n DragAndDrop.prototype.updateScrollPosition = function () {\n var _this = this;\n if (isNoU(this.dragObj.navigationInterval)) {\n this.dragObj.navigationInterval = window.setInterval(function () { _this.autoScroll(); }, 100);\n }\n };\n DragAndDrop.prototype.autoScrollValidation = function () {\n var pageY = this.dragObj.pageY;\n var pageX = this.dragObj.pageX;\n var autoScrollDistance = 30;\n var dragEdges = { left: false, right: false, top: false, bottom: false };\n var viewBoundaries = this.kanbanObj.element.querySelector('.' + cls.CONTENT_CLASS).getBoundingClientRect();\n if ((pageY < viewBoundaries.top + autoScrollDistance + window.pageYOffset) &&\n (pageY > viewBoundaries.top + window.pageYOffset)) {\n dragEdges.top = true;\n }\n if ((pageY > (viewBoundaries.bottom - autoScrollDistance) + window.pageYOffset) &&\n (pageY < viewBoundaries.bottom + window.pageYOffset)) {\n dragEdges.bottom = true;\n }\n if ((pageX < viewBoundaries.left + autoScrollDistance + window.pageXOffset) &&\n (pageX > viewBoundaries.left + window.pageXOffset)) {\n dragEdges.left = true;\n }\n if ((pageX > (viewBoundaries.right - autoScrollDistance) + window.pageXOffset) &&\n (pageX < viewBoundaries.right + window.pageXOffset)) {\n dragEdges.right = true;\n }\n this.dragEdges = dragEdges;\n };\n DragAndDrop.prototype.autoScroll = function () {\n this.autoScrollValidation();\n var scrollSensitivity = 30;\n if (this.kanbanObj.isAdaptive) {\n var parent_1;\n if (this.dragEdges.top || this.dragEdges.bottom) {\n if (this.dragObj.targetClone) {\n parent_1 = closest(this.dragObj.targetClone, '.' + cls.CARD_WRAPPER_CLASS);\n }\n else {\n parent_1 = closest(this.dragObj.draggedClone, '.' + cls.CARD_WRAPPER_CLASS);\n }\n }\n else if (this.dragEdges.right || this.dragEdges.left) {\n parent_1 = this.kanbanObj.element.querySelector('.' + cls.CONTENT_CLASS);\n }\n if (parent_1) {\n var yIsScrollable = parent_1.offsetHeight <= parent_1.scrollHeight;\n var xIsScrollable = parent_1.offsetWidth <= parent_1.scrollWidth;\n var yInBounds = parent_1.scrollTop >= 0 && parent_1.scrollTop + parent_1.offsetHeight <= parent_1.scrollHeight;\n var xInBounds = parent_1.scrollLeft >= 0 && parent_1.scrollLeft + parent_1.offsetWidth <= parent_1.scrollWidth;\n if (yIsScrollable && yInBounds && (this.dragEdges.top || this.dragEdges.bottom)) {\n parent_1.scrollTop += this.dragEdges.top ? -(scrollSensitivity + 36) : scrollSensitivity;\n }\n if (xIsScrollable && xInBounds && (this.dragEdges.left || this.dragEdges.right)) {\n var width = this.parent.enableVirtualization ? this.kanbanObj.virtualLayoutModule.getWidth() :\n this.kanbanObj.layoutModule.getWidth();\n var scroll_1 = (width * (this.kanbanObj.columns.length - 1)) >\n parent_1.scrollLeft;\n if (scroll_1 || this.dragEdges.left) {\n parent_1.scrollLeft += this.dragEdges.left ? -scrollSensitivity : scrollSensitivity;\n }\n }\n }\n }\n else {\n var parent_2 = this.kanbanObj.element.querySelector('.' + cls.CONTENT_CLASS);\n var column = this.dragObj.targetClone.parentElement;\n var yScrollable = parent_2.offsetHeight <= parent_2.scrollHeight;\n var xScrollable = parent_2.offsetWidth <= parent_2.scrollWidth;\n var yBounds = yScrollable && parent_2.scrollTop >= 0 && parent_2.scrollTop + parent_2.offsetHeight <= parent_2.scrollHeight;\n var xBounds = xScrollable && parent_2.scrollLeft >= 0 && parent_2.scrollLeft + parent_2.offsetWidth <= parent_2.scrollWidth;\n if (yBounds && (this.dragEdges.top || this.dragEdges.bottom)) {\n parent_2.scrollTop += this.dragEdges.top ? -scrollSensitivity : scrollSensitivity;\n if (this.parent.swimlaneSettings.enableFrozenRows) {\n this.dragObj.cloneElement.style.top = !this.dragEdges.top ? (parseInt(this.dragObj.cloneElement.style.top, 10) + scrollSensitivity) + 'px' : (parseInt(this.dragObj.cloneElement.style.top, 10) - scrollSensitivity) + 'px';\n }\n if (column) {\n column.scrollTop += this.dragEdges.top ? -scrollSensitivity : scrollSensitivity;\n }\n }\n if (xBounds && (this.dragEdges.left || this.dragEdges.right)) {\n parent_2.scrollLeft += this.dragEdges.left ? -scrollSensitivity : scrollSensitivity;\n if (column) {\n column.scrollLeft += this.dragEdges.left ? -scrollSensitivity : scrollSensitivity;\n }\n }\n if (this.dragObj.pageY - window.scrollY < scrollSensitivity) {\n window.scrollTo(window.scrollX, window.scrollY - scrollSensitivity);\n }\n else if (window.innerHeight - (this.dragObj.pageY - window.scrollY) < scrollSensitivity) {\n window.scrollTo(window.scrollX, window.scrollY + scrollSensitivity);\n }\n }\n };\n DragAndDrop.prototype.unWireDragEvents = function (element) {\n if (!isNoU(element) && !isNoU(element.ej2_instances[0])) {\n var dragInstance = element.ej2_instances[0];\n if (dragInstance && !dragInstance.isDestroyed) {\n dragInstance.destroy();\n }\n }\n };\n return DragAndDrop;\n}());\nexport { DragAndDrop };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\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, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString != '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n }\n else {\n queryString += String.fromCharCode(keyCode);\n }\n }\n else if (queryString == prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n }\n else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 != index ? matches[index] : matches[matches.length];\n }\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 if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\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.toString().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, getUniqueID, formatUnit, NotifyPropertyChanges, Property, attributes, removeClass, addClass } from '@syncfusion/ej2-base';\nvar cssClassName = {\n TEXTSHAPE: 'e-skeleton-text',\n CIRCLESHAPE: 'e-skeleton-circle',\n SQUARESHAPE: 'e-skeleton-square',\n RECTANGLESHAPE: 'e-skeleton-rectangle',\n WAVEEFFECT: 'e-shimmer-wave',\n PULSEEFFECT: 'e-shimmer-pulse',\n FADEEFFECT: 'e-shimmer-fade',\n VISIBLENONE: 'e-visible-none'\n};\n/**\n * Defines the shape of Skeleton.\n */\nexport var SkeletonType;\n(function (SkeletonType) {\n /**\n * Defines the skeleton shape as text.\n */\n SkeletonType[\"Text\"] = \"Text\";\n /**\n * Defines the skeleton shape as circle.\n */\n SkeletonType[\"Circle\"] = \"Circle\";\n /**\n * Defines the skeleton shape as square.\n */\n SkeletonType[\"Square\"] = \"Square\";\n /**\n * Defines the skeleton shape as rectangle.\n */\n SkeletonType[\"Rectangle\"] = \"Rectangle\";\n})(SkeletonType || (SkeletonType = {}));\n/**\n * Defines the animation effect of Skeleton.\n */\nexport var ShimmerEffect;\n(function (ShimmerEffect) {\n /**\n * Defines the animation as shimmer wave effect.\n */\n ShimmerEffect[\"Wave\"] = \"Wave\";\n /**\n * Defines the animation as fade effect.\n */\n ShimmerEffect[\"Fade\"] = \"Fade\";\n /**\n * Defines the animation as pulse effect.\n */\n ShimmerEffect[\"Pulse\"] = \"Pulse\";\n /**\n * Defines the animation as no effect.\n */\n ShimmerEffect[\"None\"] = \"None\";\n})(ShimmerEffect || (ShimmerEffect = {}));\n/**\n * The Shimmer is a placeholder that animates a shimmer effect to let users know that the page’s content is loading at the moment.\n * In other terms, it simulates the layout of page content while loading the actual content.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Skeleton = /** @class */ (function (_super) {\n __extends(Skeleton, _super);\n /**\n * Constructor for creating Skeleton component.\n *\n * @param {SkeletonModel} options - Defines the model of Skeleton class.\n * @param {HTMLElement} element - Defines the target HTML element.\n */\n function Skeleton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Get component module name.\n *\n * @returns {string} - Module name\n * @private\n */\n Skeleton.prototype.getModuleName = function () {\n return 'skeleton';\n };\n Skeleton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Skeleton.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.updateCssClass();\n attributes(this.element, { role: 'alert', 'aria-busy': 'true', 'aria-live': 'polite', 'aria-label': this.label });\n };\n /**\n * Method for initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Skeleton.prototype.render = function () {\n this.initialize();\n };\n Skeleton.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 case 'height':\n this.updateDimension();\n break;\n case 'shape':\n this.updateShape();\n break;\n case 'shimmerEffect':\n this.updateEffect();\n break;\n case 'visible':\n this.updateVisibility();\n break;\n case 'label':\n this.element.setAttribute('aria-label', this.label);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n this.updateCssClass();\n break;\n }\n }\n };\n /**\n * Method to destroys the Skeleton component.\n *\n * @returns {void}\n */\n Skeleton.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var attrs = ['role', 'aria-live', 'aria-busy', 'aria-label'];\n var cssClass = [];\n if (this.cssClass) {\n cssClass = cssClass.concat(this.cssClass.split(' '));\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[parseInt(i.toString(), 10)]);\n }\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || []);\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || []);\n removeClass([this.element], cssClass);\n };\n Skeleton.prototype.initialize = function () {\n this.updateShape();\n this.updateEffect();\n this.updateVisibility();\n };\n Skeleton.prototype.updateShape = function () {\n var shapeCss = cssClassName[this.shape.toUpperCase() + 'SHAPE'];\n var removeCss = (this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || []);\n this.updateDimension();\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [shapeCss]);\n };\n Skeleton.prototype.updateDimension = function () {\n var width = (!this.width && (['Text', 'Rectangle'].indexOf(this.shape) > -1)) ? '100%' : formatUnit(this.width);\n var height = ['Circle', 'Square'].indexOf(this.shape) > -1 ? width : formatUnit(this.height);\n this.element.style.width = width;\n this.element.style.height = height;\n };\n Skeleton.prototype.updateEffect = function () {\n var removeCss = (this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || []);\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [cssClassName[this.shimmerEffect.toUpperCase() + 'EFFECT']]);\n };\n Skeleton.prototype.updateVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](cssClassName.VISIBLENONE);\n };\n Skeleton.prototype.updateCssClass = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n __decorate([\n Property('')\n ], Skeleton.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], Skeleton.prototype, \"visible\", void 0);\n __decorate([\n Property('Text')\n ], Skeleton.prototype, \"shape\", void 0);\n __decorate([\n Property('Wave')\n ], Skeleton.prototype, \"shimmerEffect\", void 0);\n __decorate([\n Property('Loading...')\n ], Skeleton.prototype, \"label\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"cssClass\", void 0);\n Skeleton = __decorate([\n NotifyPropertyChanges\n ], Skeleton);\n return Skeleton;\n}(Component));\nexport { Skeleton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { Internationalization, L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n /* eslint-disable-next-line security/detect-unsafe-regex */\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
    \n * \n * \n *
    \n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[\"\" + name], rules, {});\n }\n else {\n this.rules[\"\" + name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[\"\" + name] && !rules) {\n delete this.rules[\"\" + name];\n }\n else if (!isNullOrUndefined(this.rules[\"\" + name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[\"\" + name][rules[parseInt(i.toString())]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n this.infoElement = null;\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[\"\" + key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formvalidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n }\n else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n }\n else {\n input.classList.remove(this.validClass);\n }\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[\"\" + name][\"\" + rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[\"\" + name][\"\" + rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[\"\" + rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[\"\" + rule] : this.defaultMessages[\"\" + rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[parseInt(i.toString())] : ruleValue;\n message = message.replace(formats[parseInt(i.toString())], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n }\n else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n }\n else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[parseInt(i.toString())];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.validClass);\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.validClass);\n grandParent.classList.remove(this.errorClass);\n }\n else {\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n }\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n if (!isNullOrUndefined(option.param) && (typeof (option.param) === 'string' && option.param !== '')) {\n var globalize = new Internationalization;\n var dateOptions = { format: option.param.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return (!isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue));\n }\n else {\n return !isNaN(new Date(option.value).getTime());\n }\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\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 virtualList: 'e-list-item e-virtual-list',\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 _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.remoteDataCount = -1;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 30;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.getInitialData = false;\n _this.preventPopupOpen = true;\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\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 if (noDataElement[i] instanceof HTMLElement || noDataElement[i] instanceof Text) {\n ele.appendChild(noDataElement[i]);\n }\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.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : 0;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n var isSkeletonCountChange = currentSkeletonCount !== this.skeletonCount;\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 4 < this.itemCount ? this.itemCount : actualCount * 4;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.virtualItemCount = this.itemCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2);\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return \"height: 0px;\";\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0 ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList, styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = this.listItemHeight + 'px';\n }\n var skeleton = new Skeleton({\n shape: \"Text\",\n height: \"10px\",\n width: \"95%\",\n cssClass: \"e-skeleton-text\",\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild && isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\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.preventPopupOpen = 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 var isWhereExist_1 = false;\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 var isReOrder = true;\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onWhere') {\n isWhereExist_1 = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (e.count != 0 && e.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = e.count;\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = e.count;\n }\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if ((!_this.isVirtualizationEnabled && listItems.length === 0) || (_this.isVirtualizationEnabled && listItems.length === 0 && !isWhereExist_1)) {\n _this.isDataFetched = true;\n }\n if (!isWhereExist_1) {\n _this.remoteDataCount = e.count;\n }\n _this.dataCount = !_this.virtualSelectAll ? e.count : _this.dataCount;\n _this.totalItemCount = !_this.virtualSelectAll ? e.count : _this.totalItemCount;\n ulElement = _this.renderItems(listItems, fields);\n _this.appendUncheckList = false;\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 if (_this.getInitialData) {\n _this.setListData(dataSource, fields, query, event);\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n if (_this.isVirtualizationEnabled && _this.setCurrentView) {\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n if (_this.keyboardEvent != null) {\n _this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);\n }\n if (_this.isVirtualizationEnabled) {\n _this.getFilteringSkeletonCount();\n }\n if (_this.virtualSelectAll && _this.virtualSelectAllData) {\n _this.virtualSelectionAll(_this.virtualSelectAllState, _this.liCollections, _this.CurrentEvent);\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualSelectAll = false;\n }\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 _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled && _this.virtualGroupDataSource && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (listItems.count != 0 && listItems.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) ? true : false;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder && (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) && !_this.virtualSelectAll) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length : listItems.count;\n }\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\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 (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\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.handleVirtualKeyboardActions = function (e, pageCount) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.virtualSelectionAll = function (state, li, event) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\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.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return item.hasOwnProperty(key) && item[key] === objectToFind[key];\n });\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.isRequesting = 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.isVirtualizationEnabled && !this.isCustomDataUpdated && !this.virtualSelectAll) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\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 if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\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 if (ulElement.children[0].classList.contains('e-hide-group-header')) {\n setStyleAttribute(ulElement.children[1], { zIndex: 11 });\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\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 };\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 DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\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) {\n if (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 return null;\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, isDownkey) {\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 var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n if (this.fixedHeaderElement) {\n if (!isNullOrUndefined(element.innerHTML)) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n }\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = (this.list.parentElement.offsetTop + this.list.offsetTop) - window.scrollY + 'px';\n this.fixedHeaderElement.style.display = 'block';\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n if (this.isVirtualizationEnabled) {\n return this.liCollections[0].classList.contains('e-virtual-list') ? this.liCollections[this.skeletonCount] : this.liCollections[0];\n }\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, isCheckBoxUpdate) {\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 if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if (!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n else {\n virtualUlElement.appendChild(ulElement);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement) || (!virtualUlElement.firstChild)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\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 * 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.getIndexByValueFilter = function (value, ulElement) {\n var index;\n if (!ulElement) {\n return null;\n }\n var listItems = ulElement.querySelectorAll('li' + ':not(.e-list-group-item)');\n if (listItems) {\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 }\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 || this.isVirtualizationEnabled) && 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, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\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, oldProp);\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 EventHandler.add(document, 'scroll', this.updateGroupFixedHeader, 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 DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\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 isListboxEmpty = itemsCount === 0;\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 if (this.getModuleName() === 'listbox') {\n this.listData.splice(isListboxEmpty ? this.listData.length : index, 0, item);\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n }\n else {\n this.listData.push(item);\n }\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n if (this.getModuleName() === 'listbox') {\n this.updateActionCompleteData(li, item, isListboxEmpty ? null : index);\n isListboxEmpty = true;\n }\n else {\n this.updateActionCompleteData(li, item, index);\n }\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] && this.liCollections[index].parentNode) {\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) {\n EventHandler.remove(document, 'scroll', this.updateGroupFixedHeader);\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 }\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[];\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 content: dropDownBaseClasses.content,\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 virtualList: 'e-list-item e-virtual-list',\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 _this.isTouched = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n _this.removeAllChildren = function (element) {\n while (element.children[0]) {\n this.removeAllChildren(element.children[0]);\n element.removeChild(element.children[0]);\n }\n };\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.initialRemoteRender = 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 this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\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 if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\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 (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\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.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && this.previousValue && this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\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') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\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.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(((this.fields.value) ? this.fields.value : ''), this.value) : this.value;\n this.setSelection(this.getElementByValue(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(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\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 this.keyboardEvent = null;\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.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString == '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() == this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) && this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n }\n else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if ((!(this.viewPortInfo.startIndex >= index)) || (!(index >= this.viewPortInfo.endIndex))) {\n var startIndex = index - ((this.itemCount / 2) - 2) > 0 ? index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\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 /**\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 this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\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 if (!this.enableVirtualization || (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38))) {\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\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.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n e.preventDefault();\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, isVirtualKeyAction) {\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_1 = this.getItemData().value;\n if (isNullOrUndefined(value_1)) {\n value_1 = 'null';\n }\n var filterIndex = this.getIndexByValue(value_1);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n if (this.fields.groupBy) {\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n }\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\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 if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n var focusAtFirstElement = this.liCollections[this.skeletonCount] && this.liCollections[this.skeletonCount].classList.contains('e-item-focus');\n this.setSelection(nextItem, e);\n if (focusAtFirstElement && this.enableVirtualization && this.getModuleName() === 'autocomplete' && !isVirtualKeyAction) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 && this.fields.groupBy ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) < (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount : this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_2 = this.liCollections[0].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_2);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n else if (e.action === 'up') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex - this.itemCount) > 0 ? this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_3 = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_3);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_4 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value_4, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { '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.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\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.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) + this.getPageCount() - 1 : this.getIndexByValue(this.previousValue);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) - this.getPageCount() : this.getIndexByValue(this.previousValue);\n this.pageDownSelection(!isNullOrUndefined(this.activeIndex) ? (this.activeIndex + this.getPageCount()) : (2 * this.getPageCount()), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\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.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { '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.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { '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.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\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 if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\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 this.keyboardEvent = null;\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.allowObjectBinding ? 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 if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n if (this.enableVirtualization && this.activeIndex == null && this.dataSource instanceof DataManager) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.activeIndex = this.getIndexByValue(value);\n }\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 if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value, this.actionCompleteData.ulElement);\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.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom && this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem])))) {\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 if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\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, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ? this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': 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.enableVirtualization ? this.getIndexByValue(this.value) : 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 var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', 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', 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 this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\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 if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n this.getInitialData = true;\n this.renderList();\n }\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\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 if (((this.getModuleName() !== 'combobox')) || (this.isFiltering() && this.getModuleName() === 'combobox' && this.typedString !== '')) {\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 = (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) ? this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && this.viewPortInfo.endIndex != 0) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_1 = 0; queryElements_1 < filterQuery.queries.length; queryElements_1++) {\n if (filterQuery.queries[queryElements_1].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_1].e.nos;\n }\n if (filterQuery.queries[queryElements_1].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements_1].e.nos ? filterQuery.queries[queryElements_1].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements_2 = 0; queryElements_2 < this.query.queries.length; queryElements_2++) {\n if (this.query.queries[queryElements_2].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements_2].e.nos ? this.query.queries[queryElements_2].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_3 = 0; queryElements_3 < filterQuery.queries.length; queryElements_3++) {\n if (filterQuery.queries[queryElements_3].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n continue;\n }\n if (filterQuery.queries[queryElements_3].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements_3].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\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 this.checkAndResetCache();\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.customFilterQuery = query.clone();\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 === '') || this.getInitialData) ?\n false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\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 if (this.enableVirtualization) {\n if (this.isFiltering()) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\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 if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, { 'aria-activedescendant': 'no-record' });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\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 DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\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.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n if (this.getInitialData) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n if (!this.preventPopupOpen && this.getModuleName() === 'combobox') {\n this.beforePopupOpen = true;\n this.preventPopupOpen = true;\n }\n var tempItemCount = this.itemCount;\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.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\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 if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = 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 value_5 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(checkField_1, this.value) : this.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) === value_5 : x[checkField_1] === value_5;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_5)))\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\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 }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount != this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\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_6 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_6) ||\n (getValue(_this.fields.value, data) === value_6));\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 && 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.enableVirtualization && !isNullOrUndefined(value)) || !this.enableVirtualization) ? this.getIndexByValue(value) : this.activeIndex;\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\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.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\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 popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = _this.allowFiltering && _this.getModuleName() === 'dropdownlist' && Browser.isDevice ? formatUnit(Math.round(window.outerHeight).toString() + 'px') : 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.top = '0px';\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n _this.getSkeletonCount();\n _this.skeletonCount = _this.totalItemCount < (_this.itemCount * 2) ? 0 : _this.skeletonCount;\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 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.listContainerHeight = (parseInt(_this.listContainerHeight, 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.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 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 _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\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.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if ((parseInt(_this.popupWidth.toString(), 10) > window.outerWidth) && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\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 if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id + '_popup');\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,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { 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 if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\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 if (this.element && !(this.isElementInViewport(this.element))) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return (elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight && elementRect.right <= window.innerWidth);\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 this.listItemHeight = liHeight;\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 && !this.enableVirtualization) {\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 && (width.indexOf('px') > -1) && (!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, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + 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 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageDown\" ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction != \"end\" && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageDown\" ? this.getPageCount() + 1 : liCount;\n }\n this.list.scrollTop += this.selectedLI.offsetHeight * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"end\") {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction == \"pageDown\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction == \"down\")) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageUp\" ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageUp\" ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction != \"home\" && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= this.selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"home\") {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction == \"pageUp\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\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 this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action == 'up' || e.action == 'pageUp' || e.action == 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\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 var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n if (this.getModuleName() === 'dropdownlist') {\n Input.destroy({\n element: this.filterInput,\n floatLabelType: this.floatLabelType,\n properties: { placeholder: this.filterBarPlaceholder },\n buttons: this.clearIconElement,\n }, this.clearIconElement);\n }\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 if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n this.filterInput.removeAttribute('aria-disabled');\n this.filterInput.removeAttribute('role');\n this.filterInput.removeAttribute('autocomplete');\n this.filterInput.removeAttribute('autocapitalize');\n this.filterInput.removeAttribute('spellcheck');\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 if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString != \"\") || (this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString != \"\")) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount == 0)) {\n this.getSkeletonCount(true);\n }\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 (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = \"\";\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount != 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.inputElement.removeAttribute('aria-controls');\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 this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\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', 'aria-label': this.getModuleName(), '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 !== 'Never') {\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') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else if (this.getModuleName() === 'dropdownlist') {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n this.inputElement.setAttribute('aria-expanded', 'false');\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 if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].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 this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\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 }\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, oldProps) {\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 instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) && !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length))) {\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 var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n this.setProperties({ 'text': dataItem.text, 'value': 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex) && !isNullOrUndefined(this.index)) {\n newProp.index = this.index;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\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':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n 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.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\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 if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) && this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return { value: void 0 };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\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.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue((this_1.fields.value) ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(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 var value_7 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_7)))\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.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && 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 var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\")\n return state_1.value;\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 var fields = (_this.fields.value) ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ? getValue(fields, newProp) : newProp;\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.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\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 this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\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 if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\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 value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', 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.isVirtualTrackHeight = false;\n this.customFilterQuery = null;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\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 !== 'Never') {\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 if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType !== 'Never') {\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 if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\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 if (this.popupObj) {\n this.popupObj.hide();\n }\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 delete this.hiddenElement;\n this.filterInput = null;\n this.keyboardModule = null;\n if (!isNullOrUndefined(this.ulElement)) {\n this.removeAllChildren(this.ulElement);\n }\n this.ulElement = null;\n this.list = null;\n this.clearIconElement = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = 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.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties,\n buttons: this.inputWrapper.container.querySelectorAll('.e-input-group-icon')[0],\n }, this.clearButton);\n this.clearButton = null;\n this.inputElement = null;\n this.inputWrapper = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = 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(false)\n ], DropDownList.prototype, \"enableVirtualization\", 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(false)\n ], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, 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, containerAttributes, TEXTBOX_FOCUS } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\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.isReact = 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 (!Input.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.updateHTMLAttributesToElement();\n this.updateHTMLAttributesToWrapper();\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 Input.updateCssClass(newProp.cssClass, oldProp.cssClass, this.textboxWrapper.container);\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.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.updateHTMLAttributesToElement();\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' || (this.element.tagName === 'INPUT' && this.multiline && this.isReact)) {\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) && containerAttributes.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 = Input.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.updateHTMLAttributesToWrapper();\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.updateHTMLAttributesToWrapper = function () {\n Input.updateHTMLAttributesToWrapper(this.htmlAttributes, this.textboxWrapper.container);\n };\n TextBox.prototype.updateHTMLAttributesToElement = function () {\n Input.updateHTMLAttributesToElement(this.htmlAttributes, this.respectiveElement ? this.respectiveElement : (this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea : this.element));\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 if (value == null && this.textboxWrapper.container.classList.contains('e-valid-input')) {\n this.textboxWrapper.container.classList.remove('e-valid-input');\n }\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.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\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 element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\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","/**\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, animationMode } 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 if (this.isModal) {\n var targetType = this.getTargetContainer(this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n this.setPopupPosition();\n }\n }\n }\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.getTargetContainer = function (targetValue) {\n var targetElement = null;\n if (typeof targetValue === 'string') {\n if (targetValue.startsWith('#')) {\n targetElement = document.getElementById(targetValue.substring(1));\n }\n else if (targetValue.startsWith('.')) {\n var elements = document.getElementsByClassName(targetValue.substring(1));\n targetElement = elements.length > 0 ? elements[0] : null;\n }\n else {\n if (!(targetValue instanceof HTMLElement) && targetValue !== document.body) {\n targetElement = document.querySelector(targetValue);\n }\n }\n }\n else if (targetValue instanceof HTMLElement) {\n targetElement = targetValue;\n }\n return targetElement;\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 var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\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.headerEle) {\n attributes(this.element, { 'aria-describedby': this.element.id + '_title' + ' ' + this.element.id + '_dialog-content' });\n }\n else {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n }\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-describedby': this.element.id + '_title' });\n attributes(this.element, { 'aria-label': \"dialog\" });\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 Dialog.prototype.removeAllChildren = function (element) {\n while (element.children[0]) {\n this.removeAllChildren(element.children[0]);\n element.removeChild(element.children[0]);\n }\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 if (!this.isReact && !this.isVue && !isNullOrUndefined(this.contentEle)) {\n this.removeAllChildren(this.contentEle);\n }\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 this.boundWindowResizeHandler = this.windowResizeHandler.bind(this);\n window.addEventListener('resize', this.boundWindowResizeHandler);\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.boundWindowResizeHandler);\n this.boundWindowResizeHandler = null;\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 if (_this.enableResize && _this.boundWindowResizeHandler == null && !_this.initialRender) {\n _this.wireWindowResizeEvent();\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 var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\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 === 'None' && animationMode === 'Enable') ? 'Zoom' + 'In' : _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' && animationMode === 'Enable') ? _this.popupObj.show(openAnimation) : ((_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 (_this.enableResize) {\n _this.unWireWindowResizeEvent();\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 === 'None' && animationMode === 'Enable') ? 'Zoom' + 'Out' : _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' && animationMode === 'Enable') ? _this.popupObj.hide(closeAnimation) : ((_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 if (!this.isModal) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n }\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 if (!isNullOrUndefined(option.isFlat)) {\n buttonProps.isFlat = option.isFlat;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { append, createElement, remove, isNullOrUndefined, closest, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { FormValidator, NumericTextBox, TextBox } from '@syncfusion/ej2-inputs';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Dialog module is used to perform card actions.\n */\nvar KanbanDialog = /** @class */ (function () {\n /**\n * Constructor for dialog module\n *\n * @param {Kanban} parent Accepts the kanban instance\n */\n function KanbanDialog(parent) {\n this.preventUpdate = false;\n this.parent = parent;\n }\n KanbanDialog.prototype.openDialog = function (action, data) {\n this.action = action;\n this.parent.activeCardData.data = data;\n this.renderDialog(data, action);\n this.dialogObj.show();\n };\n KanbanDialog.prototype.closeDialog = function () {\n this.dialogObj.hide();\n };\n KanbanDialog.prototype.renderDialog = function (args, action) {\n this.element = createElement('div', { id: this.parent.element.id + '_dialog_wrapper' });\n this.parent.element.appendChild(this.element);\n var dialogModel = {\n buttons: this.getDialogButtons(action),\n content: this.getDialogContent(args, action),\n cssClass: cls.DIALOG_CLASS,\n enableRtl: this.parent.enableRtl,\n header: this.parent.localeObj.getConstant(action === 'Add' ? 'addTitle' : action === 'Edit' ? 'editTitle' : 'deleteTitle'),\n height: 'auto',\n isModal: true,\n showCloseIcon: true,\n width: (action === 'Delete') ? 400 : 350,\n visible: false,\n beforeOpen: this.onBeforeDialogOpen.bind(this),\n beforeClose: this.onBeforeDialogClose.bind(this)\n };\n this.dialogObj = new Dialog(extend(dialogModel, action !== 'Delete' ? (this.parent.dialogSettings.model || {}) : {}), this.element);\n if (action !== 'Delete') {\n this.applyFormValidation();\n }\n this.dialogObj.element.querySelector('.e-dlg-closeicon-btn').title = this.parent.localeObj.getConstant('close');\n };\n KanbanDialog.prototype.getDialogContent = function (args, action) {\n if (action === 'Delete') {\n return this.parent.localeObj.getConstant('deleteContent');\n }\n else {\n var container = createElement('div', { className: cls.FORM_WRAPPER_CLASS });\n var form = createElement('form', {\n id: this.parent.element.id + 'EditForm',\n className: cls.FORM_CLASS, attrs: { onsubmit: 'return false;' }\n });\n if (this.parent.dialogSettings.template) {\n if (args) {\n this.destroyComponents();\n [].slice.call(form.childNodes).forEach(function (node) { return remove(node); });\n }\n var templateId = this.parent.element.id + '_dialogTemplate';\n var dialogTemplate = this.parent.templateParser(this.parent.dialogSettings.template)(args, this.parent, 'dialogTemplate', templateId, false);\n append(dialogTemplate, form);\n this.parent.renderTemplates();\n }\n else {\n var dialogWrapper = createElement('div', { className: cls.DIALOG_CONTENT_CONTAINER });\n form.appendChild(dialogWrapper);\n var table = createElement('table');\n dialogWrapper.appendChild(table);\n var dialogFields = this.getDialogFields();\n for (var _i = 0, dialogFields_1 = dialogFields; _i < dialogFields_1.length; _i++) {\n var field = dialogFields_1[_i];\n var tr = createElement('tr');\n table.appendChild(tr);\n tr.appendChild(createElement('td', { className: 'e-label', innerHTML: field.text ? field.text : field.key }));\n var td = createElement('td');\n tr.appendChild(td);\n td.appendChild(this.renderComponents(field));\n }\n }\n container.appendChild(form);\n return container;\n }\n };\n KanbanDialog.prototype.getDialogFields = function () {\n var fields = this.parent.dialogSettings.fields;\n if (fields.length === 0) {\n fields = [\n { text: 'ID', key: this.parent.cardSettings.headerField, type: 'TextBox' },\n { key: this.parent.keyField, type: 'DropDown' },\n { key: this.parent.cardSettings.contentField, type: 'TextArea' }\n ];\n if (this.parent.sortSettings.field) {\n fields.splice(fields.length - 1, 0, { key: this.parent.sortSettings.field, type: 'TextBox' });\n }\n if (this.parent.swimlaneSettings.keyField) {\n fields.splice(fields.length - 1, 0, { key: this.parent.swimlaneSettings.keyField, type: 'DropDown' });\n }\n }\n return fields;\n };\n KanbanDialog.prototype.getDialogButtons = function (action) {\n var primaryButtonClass = action === 'Delete' ? 'e-dialog-yes' : action === 'Add' ? 'e-dialog-add' : 'e-dialog-edit';\n var flatButtonClass = action === 'Delete' ? 'e-dialog-no' : 'e-dialog-cancel';\n var dialogButtons = [\n {\n buttonModel: {\n cssClass: 'e-flat ' + primaryButtonClass, isPrimary: true,\n content: this.parent.localeObj.getConstant(action === 'Add' || action === 'Edit' ? 'save' : 'yes')\n },\n click: this.dialogButtonClick.bind(this)\n }, {\n buttonModel: {\n cssClass: 'e-flat ' + flatButtonClass, isPrimary: false,\n content: this.parent.localeObj.getConstant(action === 'Add' || action === 'Edit' ? 'cancel' : 'no')\n },\n click: this.dialogButtonClick.bind(this)\n }\n ];\n if (action === 'Edit') {\n var deleteButton = {\n buttonModel: { cssClass: 'e-flat e-dialog-delete', isPrimary: false, content: this.parent.localeObj.getConstant('delete') },\n click: this.dialogButtonClick.bind(this)\n };\n dialogButtons.splice(0, 0, deleteButton);\n }\n return dialogButtons;\n };\n KanbanDialog.prototype.renderComponents = function (field) {\n var wrapper = createElement('div', { className: field.key + '_wrapper' });\n var element = createElement('input', { className: cls.FIELD_CLASS, attrs: { 'name': field.key } });\n wrapper.appendChild(element);\n var divElement;\n var dropDownOptions;\n var controlObj;\n var fieldValue = this.parent.activeCardData.data ?\n this.parent.activeCardData.data[field.key] : null;\n switch (field.type) {\n case 'DropDown':\n if (field.key === this.parent.keyField) {\n var currentKeys = this.parent.enableVirtualization ?\n this.parent.virtualLayoutModule.columnKeys : this.parent.layoutModule.columnKeys;\n if (this.parent.actionModule.hideColumnKeys.length > 0) {\n currentKeys = [];\n for (var i = 0; i < this.parent.columns.length; i++) {\n var isColumnVisible = this.parent.enableVirtualization ?\n this.parent.virtualLayoutModule.isColumnVisible(this.parent.columns[i]) :\n this.parent.layoutModule.isColumnVisible(this.parent.columns[i]);\n if (isColumnVisible) {\n var isNumeric = typeof this.parent.columns[i].keyField === 'number';\n if (isNumeric) {\n currentKeys = currentKeys.concat(this.parent.columns[i].keyField.toString());\n }\n else {\n currentKeys = currentKeys.concat(this.parent.columns[i].keyField.split(',').map(function (e) { return e.trim(); }));\n }\n }\n }\n }\n dropDownOptions = { dataSource: currentKeys, value: fieldValue ? fieldValue.toString() : fieldValue };\n }\n else if (field.key === this.parent.swimlaneSettings.keyField) {\n dropDownOptions = {\n dataSource: [].slice.call(this.parent.enableVirtualization ? this.parent.virtualLayoutModule.kanbanRows :\n this.parent.layoutModule.kanbanRows),\n fields: { text: 'textField', value: 'keyField' }, value: fieldValue\n };\n }\n controlObj = new DropDownList(dropDownOptions);\n break;\n case 'Numeric':\n controlObj = new NumericTextBox({ value: fieldValue });\n break;\n case 'TextBox':\n controlObj = new TextBox({ value: fieldValue });\n if (fieldValue && this.parent.cardSettings.headerField === field.key) {\n controlObj.enabled = false;\n }\n break;\n case 'TextArea':\n remove(element);\n divElement = createElement('div');\n element = createElement('textarea', {\n className: cls.FIELD_CLASS, attrs: { 'name': field.key, 'rows': '3', 'aria-label': this.parent.cardSettings.contentField },\n innerHTML: fieldValue\n });\n wrapper.appendChild(divElement).appendChild(element);\n break;\n default:\n break;\n }\n if (controlObj) {\n controlObj.appendTo(element);\n }\n return wrapper;\n };\n KanbanDialog.prototype.onBeforeDialogOpen = function (args) {\n var _this = this;\n var eventProp = {\n data: this.parent.activeCardData.data,\n cancel: false, element: this.element,\n target: this.parent.activeCardData.element,\n requestType: this.action\n };\n this.storeElement = document.activeElement;\n if (parseInt(args.maxHeight, 10) <= 250) {\n args.maxHeight = '250px';\n }\n this.parent.trigger(events.dialogOpen, eventProp, function (openArgs) {\n args.cancel = openArgs.cancel;\n if (openArgs.cancel) {\n _this.destroy();\n }\n });\n };\n KanbanDialog.prototype.onBeforeDialogClose = function (args) {\n var _this = this;\n var formInputs = this.getFormElements();\n var cardObj = {};\n if (args.isInteracted) {\n /* close icon preventing data update */\n this.preventUpdate = true;\n }\n if (!this.preventUpdate) {\n for (var _i = 0, formInputs_1 = formInputs; _i < formInputs_1.length; _i++) {\n var input = formInputs_1[_i];\n var columnName = input.name || this.getColumnName(input);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n var value = this.getValueFromElement(input);\n if (columnName === this.parent.cardSettings.headerField) {\n value = this.getIDType() === 'string' ? value : parseInt(value, 10);\n }\n cardObj[columnName] = value;\n }\n }\n }\n this.preventUpdate = false;\n cardObj = extend(this.parent.activeCardData.data, cardObj);\n var eventProp = { data: cardObj, cancel: false, element: this.element, requestType: this.action };\n this.parent.trigger(events.dialogClose, eventProp, function (closeArgs) {\n args.cancel = closeArgs.cancel;\n if (!closeArgs.cancel) {\n _this.cardData = eventProp.data;\n _this.destroy();\n _this.parent.actionModule.SingleCardSelection(_this.cardData);\n }\n });\n };\n KanbanDialog.prototype.getIDType = function () {\n if (this.parent.kanbanData.length !== 0) {\n return typeof (this.parent.kanbanData[0][this.parent.cardSettings.headerField]);\n }\n return 'string';\n };\n KanbanDialog.prototype.applyFormValidation = function () {\n var _this = this;\n var form = this.element.querySelector('.' + cls.FORM_CLASS);\n var rules = {};\n for (var _i = 0, _a = this.parent.dialogSettings.fields; _i < _a.length; _i++) {\n var field = _a[_i];\n rules[field.key] = (field.validationRules && Object.keys(field.validationRules).length > 0) ? field.validationRules : null;\n }\n this.formObj = new FormValidator(form, {\n rules: rules,\n customPlacement: function (inputElement, error) {\n var id = error.getAttribute('for');\n var elem = _this.element.querySelector('#' + id + '_Error');\n if (!elem) {\n _this.createTooltip(inputElement, error, id, '');\n }\n },\n validationComplete: function (args) {\n var elem = _this.element.querySelector('#' + args.inputName + '_Error');\n if (elem) {\n elem.style.display = (args.status === 'failure') ? '' : 'none';\n }\n }\n });\n };\n KanbanDialog.prototype.createTooltip = function (element, error, name, display) {\n var dlgContent;\n var client;\n var inputClient = element.parentElement.getBoundingClientRect();\n if (this.element.classList.contains(cls.DIALOG_CLASS)) {\n dlgContent = this.element;\n client = this.element.getBoundingClientRect();\n }\n else {\n dlgContent = this.element.querySelector('.e-kanban-dialog .e-dlg-content');\n client = dlgContent.getBoundingClientRect();\n }\n var div = createElement('div', {\n className: 'e-tooltip-wrap e-popup ' + cls.ERROR_VALIDATION_CLASS,\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n (inputClient.bottom - client.top + dlgContent.scrollTop + 9) + 'px;left:' +\n (inputClient.left - client.left + dlgContent.scrollLeft + inputClient.width / 2) + 'px;'\n });\n var content = createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow = createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n div.appendChild(content);\n div.appendChild(arrow);\n dlgContent.appendChild(div);\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n };\n KanbanDialog.prototype.destroyToolTip = function () {\n if (this.element) {\n this.element.querySelectorAll('.' + cls.ERROR_VALIDATION_CLASS).forEach(function (node) { return remove(node); });\n }\n if (this.formObj && this.formObj.element) {\n this.formObj.reset();\n }\n };\n KanbanDialog.prototype.dialogButtonClick = function (event) {\n var target = event.target.cloneNode(true);\n if (!isNullOrUndefined(event.keyCode) && event.keyCode === 13) {\n var valTrg = this.dialogObj.element.querySelector('.e-footer-content button.e-primary');\n target = valTrg.cloneNode(true);\n }\n var id = this.formObj.element.id;\n if (document.getElementById(id) && this.formObj.validate() &&\n (target.classList.contains('e-dialog-edit') || target.classList.contains('e-dialog-add'))) {\n this.dialogObj.hide();\n if (!isNullOrUndefined(this.cardData)) {\n if (target.classList.contains('e-dialog-edit')) {\n var activeCard = this.parent.activeCardData;\n var updateIndex = void 0;\n if (activeCard.data[this.parent.keyField] === this.cardData[this.parent.keyField]\n && activeCard.element) {\n updateIndex = [].slice.call(activeCard.element.parentElement.children).indexOf(activeCard.element);\n }\n if (this.parent.enableHtmlSanitizer) {\n if (typeof this.cardData[this.parent.cardSettings.contentField] === 'string') {\n this.cardData[this.parent.cardSettings.contentField] =\n SanitizeHtmlHelper.sanitize(this.cardData[this.parent.cardSettings.contentField]);\n }\n }\n this.parent.crudModule.updateCard(this.cardData, updateIndex);\n }\n if (target.classList.contains('e-dialog-add')) {\n this.parent.crudModule.addCard(this.cardData);\n }\n this.parent.actionModule.SingleCardSelection(this.cardData);\n this.cardData = null;\n }\n }\n if (!target.classList.contains('e-dialog-edit') && !target.classList.contains('e-dialog-add')) {\n if (target.classList.contains('e-dialog-cancel')) {\n this.preventUpdate = true;\n }\n this.dialogObj.hide();\n if (target.classList.contains('e-dialog-yes')) {\n this.parent.crudModule.deleteCard(this.parent.activeCardData.data);\n }\n else if (target.classList.contains('e-dialog-no')) {\n this.openDialog('Edit', this.parent.activeCardData.data);\n }\n else if (target.classList.contains('e-dialog-delete')) {\n this.openDialog('Delete', this.parent.activeCardData.data);\n }\n }\n };\n KanbanDialog.prototype.getFormElements = function () {\n var elements = [].slice.call(this.element.querySelectorAll('.' + cls.FIELD_CLASS));\n var validElements = [];\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n if (element.classList.contains('e-control')) {\n validElements.push(element);\n }\n else if (element.querySelector('.e-control')) {\n validElements.push(element.querySelector('.e-control'));\n }\n else {\n validElements.push(element);\n }\n }\n return validElements;\n };\n KanbanDialog.prototype.getColumnName = function (element) {\n var attrName = element.getAttribute('data-name') || '';\n if (attrName === '') {\n var isDropDowns = false;\n var fieldSelector = '';\n if (element.classList.contains('e-dropdownlist') || element.classList.contains('e-multiselect')) {\n fieldSelector = element.classList.contains('e-dropdownlist') ? 'e-ddl' : 'e-multiselect';\n isDropDowns = true;\n }\n else if (element.classList.contains('e-numerictextbox')) {\n fieldSelector = 'e-numeric';\n }\n var classSelector = isDropDowns ? \".\" + fieldSelector + \":not(.e-control)\" : \".\" + fieldSelector;\n var control = closest(element, classSelector) || element.querySelector(\".\" + fieldSelector);\n if (control) {\n var attrEle = control.querySelector('[name]');\n if (attrEle) {\n attrName = attrEle.name;\n }\n }\n }\n return attrName;\n };\n KanbanDialog.prototype.getValueFromElement = function (element) {\n var value;\n if (element.classList.contains('e-dropdownlist')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-multiselect')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-checkbox')) {\n value = element.ej2_instances[0].checked;\n }\n else {\n if (element.type === 'checkbox') {\n value = element.checked;\n }\n else {\n value = element.value;\n }\n }\n return value;\n };\n KanbanDialog.prototype.destroyComponents = function () {\n var formelement = this.getFormElements();\n for (var _i = 0, formelement_1 = formelement; _i < formelement_1.length; _i++) {\n var element = formelement_1[_i];\n var instance = element.ej2_instances;\n if (instance && instance.length > 0) {\n instance.forEach(function (node) { return node.destroy(); });\n }\n if (this.parent.isReact && this.formObj) {\n this.formObj.element.remove();\n }\n }\n };\n KanbanDialog.prototype.destroy = function () {\n this.destroyToolTip();\n this.destroyComponents();\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.storeElement.focus();\n this.dialogObj = null;\n remove(this.element);\n this.element = null;\n }\n };\n return KanbanDialog;\n}());\nexport { KanbanDialog };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { KeyboardEvents, addClass, removeClass, closest } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\n/**\n * Kanban keyboard module\n */\nvar Keyboard = /** @class */ (function () {\n /**\n * Constructor for keyboard module\n *\n * @param {Kanban} parent Accepts the kanban instance\n */\n function Keyboard(parent) {\n this.keyConfigs = {\n firstCardSelection: '36',\n lastCardSelection: '35',\n upArrow: '38',\n downArrow: '40',\n rightArrow: '39',\n leftArrow: '37',\n multiSelectionEnter: 'ctrl+13',\n multiSelectionSpace: 'ctrl+32',\n multiSelectionByUpArrow: 'shift+38',\n multiSelectionByDownArrow: 'shift+40',\n shiftTab: 'shift+tab',\n enter: '13',\n tab: 'tab',\n delete: '46',\n escape: '27',\n space: '32'\n };\n this.parent = parent;\n this.parent.element.tabIndex = this.parent.element.tabIndex === -1 ? 0 : this.parent.element.tabIndex;\n this.keyboardModule = new KeyboardEvents(this.parent.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.multiSelection = false;\n }\n Keyboard.prototype.keyActionHandler = function (e) {\n var _this = this;\n var selectedCard = this.parent.element.querySelectorAll(\".\" + cls.CARD_CLASS + \".\" + cls.CARD_SELECTION_CLASS).item(0);\n if (!selectedCard && !closest(document.activeElement, \".\" + cls.ROOT_CLASS)) {\n return;\n }\n var contentCell;\n var selectedCards;\n var selectedCardsData = [];\n switch (e.action) {\n case 'upArrow':\n case 'downArrow':\n case 'multiSelectionByUpArrow':\n case 'multiSelectionByDownArrow':\n e.preventDefault();\n this.processUpDownArrow(e.action, selectedCard);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.processLeftRightArrow(e);\n break;\n case 'firstCardSelection':\n case 'lastCardSelection':\n this.processCardSelection(e.action, selectedCard);\n break;\n case 'multiSelectionEnter':\n case 'multiSelectionSpace':\n if (document.activeElement) {\n this.parent.actionModule.cardSelection(document.activeElement, true, false);\n }\n break;\n case 'space':\n case 'enter':\n this.processEnter(e, selectedCard);\n break;\n case 'escape':\n if (document.activeElement.classList.contains(cls.CARD_CLASS) ||\n document.activeElement.classList.contains(cls.SHOW_ADD_BUTTON)) {\n if (document.activeElement.classList.contains(cls.CARD_SELECTION_CLASS)) {\n removeClass([document.activeElement], cls.CARD_SELECTION_CLASS);\n document.activeElement.focus();\n }\n else {\n var ele = closest(document.activeElement, '.' + cls.CONTENT_CELLS_CLASS);\n var cards = [].slice.call(ele.querySelectorAll('.' + cls.CARD_CLASS));\n removeClass(cards, cls.CARD_SELECTION_CLASS);\n ele.focus();\n this.cardTabIndexRemove();\n this.addRemoveTabIndex('Add');\n }\n }\n break;\n case 'tab':\n case 'shiftTab':\n contentCell = closest(document.activeElement, '.' + cls.CONTENT_CELLS_CLASS);\n if (document.activeElement.classList.contains(cls.CARD_CLASS)) {\n if (!document.activeElement.nextElementSibling && e.action === 'tab') {\n e.preventDefault();\n }\n if (!document.activeElement.previousElementSibling && contentCell.querySelector('.' + cls.SHOW_ADD_BUTTON)\n && e.action === 'tab') {\n addClass([contentCell.querySelector('.' + cls.SHOW_ADD_BUTTON)], cls.SHOW_ADD_FOCUS);\n }\n }\n if (document.activeElement.classList.contains(cls.SHOW_ADD_BUTTON)) {\n if ((!contentCell.querySelector('.' + cls.CARD_CLASS) && e.action === 'tab') || e.action === 'shiftTab') {\n e.preventDefault();\n }\n }\n if (document.activeElement.classList.contains(cls.ROOT_CLASS)) {\n this.cardTabIndexRemove();\n this.parent.keyboardModule.addRemoveTabIndex('Add');\n }\n break;\n case 'delete':\n selectedCards = [].slice.call(this.parent.element.querySelectorAll(\".\" + cls.CARD_CLASS + \".\" + cls.CARD_SELECTION_CLASS));\n selectedCards.forEach(function (selected) { selectedCardsData.push(_this.parent.getCardDetails(selected)); });\n this.parent.crudModule.deleteCard(selectedCardsData);\n break;\n }\n };\n Keyboard.prototype.processCardSelection = function (action, selectedCard) {\n if (selectedCard) {\n removeClass([selectedCard], cls.CARD_SELECTION_CLASS);\n if (this.parent.enableVirtualization) {\n this.parent.virtualLayoutModule.disableAttributeSelection(selectedCard);\n }\n else {\n this.parent.layoutModule.disableAttributeSelection(selectedCard);\n }\n var selection = this.parent.actionModule.selectionArray;\n selection.splice(selection.indexOf(selectedCard.getAttribute('data-id')), 1);\n }\n this.cardTabIndexRemove();\n var cards = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_CLASS));\n var element = action === 'firstCardSelection' ? cards[0] : cards[cards.length - 1];\n this.parent.actionModule.cardSelection(element, false, false);\n this.addRemoveTabIndex('Remove');\n element.focus();\n var card = [].slice.call(closest(element, '.' + cls.CONTENT_CELLS_CLASS).querySelectorAll('.' + cls.CARD_CLASS));\n card.forEach(function (element) { element.setAttribute('tabindex', '0'); });\n };\n Keyboard.prototype.processLeftRightArrow = function (e) {\n if (document.activeElement.classList.contains(cls.CONTENT_CELLS_CLASS)) {\n if (e.action === 'rightArrow' && document.activeElement.nextElementSibling) {\n document.activeElement.nextElementSibling.focus();\n }\n else if (e.action === 'leftArrow' && document.activeElement.previousElementSibling) {\n document.activeElement.previousElementSibling.focus();\n }\n }\n };\n Keyboard.prototype.processUpDownArrow = function (action, selectedCard) {\n if (action === 'upArrow' && document.activeElement) {\n if (document.activeElement.classList.contains(cls.CARD_CLASS) && document.activeElement.previousElementSibling) {\n document.activeElement.previousElementSibling.focus();\n }\n else if (document.activeElement.classList.contains(cls.SHOW_ADD_BUTTON)) {\n document.activeElement.setAttribute('tabindex', '-1');\n removeClass([document.activeElement], cls.SHOW_ADD_FOCUS);\n var cell = closest(document.activeElement, '.' + cls.CONTENT_CELLS_CLASS);\n if (cell.querySelectorAll('.' + cls.CARD_CLASS).length > 0) {\n [].slice.call(cell.querySelectorAll('.' + cls.CARD_CLASS)).slice(-1)[0].focus();\n }\n }\n this.removeSelection();\n }\n else if (action === 'downArrow' && document.activeElement &&\n document.activeElement.classList.contains(cls.CARD_CLASS)) {\n if (document.activeElement.nextElementSibling) {\n document.activeElement.nextElementSibling.focus();\n }\n else if (closest(document.activeElement, '.' + cls.CARD_WRAPPER_CLASS).nextElementSibling) {\n var ele = closest(document.activeElement, '.' + cls.CARD_WRAPPER_CLASS).nextElementSibling;\n ele.setAttribute('tabindex', '0');\n addClass([ele], cls.SHOW_ADD_FOCUS);\n ele.focus();\n }\n this.removeSelection();\n }\n if ((action === 'multiSelectionByUpArrow' || action === 'multiSelectionByDownArrow')\n && selectedCard && this.parent.cardSettings.selectionType === 'Multiple') {\n var card = void 0;\n if (action === 'multiSelectionByUpArrow') {\n card = document.activeElement.previousElementSibling;\n }\n else {\n card = document.activeElement.nextElementSibling;\n }\n if (card) {\n this.parent.actionModule.cardSelection(card, false, true);\n card.focus();\n this.multiSelection = true;\n }\n }\n };\n Keyboard.prototype.removeSelection = function () {\n if (this.multiSelection) {\n var cards = this.parent.getSelectedCards();\n if (cards.length > 0) {\n removeClass(cards, cls.CARD_SELECTION_CLASS);\n if (this.parent.enableVirtualization) {\n this.parent.virtualLayoutModule.disableAttributeSelection(cards);\n }\n else {\n this.parent.layoutModule.disableAttributeSelection(cards);\n }\n }\n this.multiSelection = false;\n }\n };\n Keyboard.prototype.cardTabIndexRemove = function () {\n var cards = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_CLASS));\n cards.forEach(function (card) { card.setAttribute('tabindex', '-1'); });\n var addButton = [].slice.call(this.parent.element.querySelectorAll('.' + cls.SHOW_ADD_BUTTON));\n addButton.forEach(function (add) {\n add.setAttribute('tabindex', '-1');\n removeClass([add], cls.SHOW_ADD_FOCUS);\n });\n };\n Keyboard.prototype.processEnter = function (e, selectedCard) {\n if (e.action === 'space') {\n e.preventDefault();\n }\n var element = (e.target);\n if (element.classList.contains(cls.HEADER_ICON_CLASS)) {\n this.parent.actionModule.columnExpandCollapse(e);\n }\n if (element.classList.contains(cls.SWIMLANE_ROW_EXPAND_CLASS) || element.classList.contains(cls.SWIMLANE_ROW_COLLAPSE_CLASS)) {\n this.parent.actionModule.rowExpandCollapse(e);\n }\n if (document.activeElement.classList.contains(cls.CARD_CLASS)) {\n this.parent.actionModule.cardSelection(document.activeElement, false, false);\n }\n if (document.activeElement.classList.contains(cls.SHOW_ADD_BUTTON)) {\n if (!this.parent.dialogModule.dialogObj) {\n this.parent.actionModule.addButtonClick(document.activeElement);\n }\n document.activeElement.focus();\n }\n if (element.classList.contains(cls.CONTENT_CELLS_CLASS)) {\n var cards = [].slice.call(element.querySelectorAll('.' + cls.CARD_CLASS));\n this.addRemoveTabIndex('Remove');\n if (cards.length > 0) {\n element.querySelector('.' + cls.CARD_CLASS).focus();\n cards.forEach(function (element) { element.setAttribute('tabindex', '0'); });\n }\n if (element.querySelector('.' + cls.SHOW_ADD_BUTTON)) {\n element.querySelector('.' + cls.SHOW_ADD_BUTTON).setAttribute('tabindex', '0');\n element.querySelector('.' + cls.SHOW_ADD_BUTTON).focus();\n }\n }\n if (selectedCard === document.activeElement && this.parent.element.querySelectorAll('.' + cls.CARD_SELECTION_CLASS).length === 1) {\n this.parent.activeCardData = {\n data: this.parent.getCardDetails(selectedCard), element: selectedCard\n };\n if (!this.parent.dialogModule.dialogObj) {\n this.parent.dialogModule.openDialog('Edit', this.parent.getCardDetails(selectedCard));\n }\n selectedCard.focus();\n }\n };\n Keyboard.prototype.addRemoveTabIndex = function (action) {\n var attribute = action === 'Add' ? '0' : '-1';\n var headerIcon = [].slice.call(this.parent.element.querySelectorAll('.' + cls.HEADER_ICON_CLASS));\n if (headerIcon.length > 0) {\n headerIcon.forEach(function (element) { element.setAttribute('tabindex', attribute); });\n }\n var swimlaneIcon = [].slice.call(this.parent.element.querySelectorAll('.' + cls.SWIMLANE_ROW_EXPAND_CLASS));\n if (swimlaneIcon.length > 0) {\n swimlaneIcon.forEach(function (element) { element.setAttribute('tabindex', attribute); });\n }\n var className = '.' + cls.CONTENT_ROW_CLASS + ':not(.' + cls.SWIMLANE_ROW_CLASS + ') .' + cls.CONTENT_CELLS_CLASS;\n var contentCell = [].slice.call(this.parent.element.querySelectorAll(className));\n contentCell.forEach(function (element) { element.setAttribute('tabindex', attribute); });\n };\n Keyboard.prototype.destroy = function () {\n this.keyboardModule.destroy();\n };\n return Keyboard;\n}());\nexport { Keyboard };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, append, closest, addClass, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport * as cls from '../base/css-constant';\n/**\n * Tooltip for Kanban board\n */\nvar KanbanTooltip = /** @class */ (function () {\n /**\n * Constructor for tooltip module\n *\n * @param {Kanban} parent Accepts the kanban instance\n */\n function KanbanTooltip(parent) {\n this.parent = parent;\n this.renderTooltip();\n }\n KanbanTooltip.prototype.renderTooltip = function () {\n this.tooltipObj = new Tooltip({\n cssClass: this.parent.cssClass + ' ' + cls.TOOLTIP_CLASS,\n enableRtl: this.parent.enableRtl,\n mouseTrail: !this.parent.isAdaptive,\n offsetY: 5,\n position: 'BottomCenter',\n showTipPointer: true,\n target: '.' + cls.TOOLTIP_TEXT_CLASS,\n beforeRender: this.onBeforeRender.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.tooltipObj.appendTo(this.parent.element);\n this.tooltipObj.isStringTemplate = true;\n };\n KanbanTooltip.prototype.onBeforeRender = function (args) {\n if (this.parent.dragAndDropModule.isDragging) {\n args.cancel = true;\n return;\n }\n var tooltipContent;\n if (this.parent.tooltipTemplate) {\n tooltipContent = createElement('div');\n var target = closest(args.target, '.' + cls.CARD_CLASS);\n var data = this.parent.getCardDetails(target);\n var templateId = this.parent.element.id + '_tooltipTemplate';\n var tooltipTemplate = this.parent.templateParser(this.parent.tooltipTemplate)(data, this.parent, 'tooltipTemplate', templateId, false);\n append(tooltipTemplate, tooltipContent);\n this.parent.renderTemplates();\n }\n else {\n tooltipContent = initializeCSPTemplate(function () {\n return \"
    \" + args.target.innerText + \"
    \";\n });\n }\n this.tooltipObj.setProperties({ content: tooltipContent }, true);\n };\n KanbanTooltip.prototype.onBeforeClose = function () {\n this.parent.resetTemplates(['tooltipTemplate']);\n };\n KanbanTooltip.prototype.destroy = function () {\n this.tooltipObj.destroy();\n addClass([this.parent.element], 'e-control');\n this.tooltipObj = null;\n };\n return KanbanTooltip;\n}());\nexport { KanbanTooltip };\n","import { Touch, EventHandler, remove, addClass, createElement, closest } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport * as cls from '../base/css-constant';\n/**\n * Kanban touch module\n */\nvar KanbanTouch = /** @class */ (function () {\n /**\n * Constructor for touch module\n *\n * @param {Kanban} parent Accepts the kanban instance\n * @private\n */\n function KanbanTouch(parent) {\n this.parent = parent;\n this.tabHold = false;\n }\n KanbanTouch.prototype.wireTouchEvents = function () {\n this.element = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n this.touchObj = new Touch(this.element, { tapHold: this.tapHoldHandler.bind(this) });\n };\n KanbanTouch.prototype.tapHoldHandler = function (e) {\n this.tabHold = true;\n var target = closest(e.originalEvent.target, '.' + cls.CARD_CLASS);\n if (target && this.parent.cardSettings.selectionType === 'Multiple') {\n this.parent.actionModule.cardSelection(target, true, false);\n if (!this.mobilePopup) {\n this.renderMobilePopup();\n this.mobilePopup.show();\n }\n this.updatePopupContent();\n }\n };\n KanbanTouch.prototype.renderMobilePopup = function () {\n if (this.parent.cardSettings.selectionType === 'Multiple') {\n var mobilePopupWrapper = createElement('div', {\n className: cls.POPUP_WRAPPER_CLASS + ' e-popup-close',\n innerHTML: \"
    \" +\n (\"
    \")\n });\n document.body.appendChild(mobilePopupWrapper);\n addClass([mobilePopupWrapper], cls.DEVICE_CLASS);\n this.mobilePopup = new Popup(mobilePopupWrapper, {\n targetType: 'container',\n enableRtl: this.parent.enableRtl,\n hideAnimation: { name: 'ZoomOut' },\n showAnimation: { name: 'ZoomIn' },\n collision: { X: 'fit', Y: 'fit' },\n position: { X: 'left', Y: 'top' },\n viewPortElement: document.body,\n zIndex: 1004,\n close: this.popupClose.bind(this)\n });\n var closeIcon = this.mobilePopup.element.querySelector('.' + cls.CLOSE_CLASS);\n var buttonObj = new Button({\n cssClass: 'e-flat e-round e-small',\n enableRtl: this.parent.enableRtl,\n iconCss: cls.ICON_CLASS + ' ' + cls.CLOSE_ICON_CLASS\n });\n buttonObj.appendTo(closeIcon);\n buttonObj.isStringTemplate = true;\n EventHandler.add(closeIcon, 'click', this.closeClick, this);\n }\n };\n KanbanTouch.prototype.getPopupContent = function () {\n var popupContent;\n var selectedCards = this.parent.getSelectedCards();\n if (selectedCards.length > 1) {\n popupContent = '(' + selectedCards.length + ') ' + this.parent.localeObj.getConstant('cardsSelected');\n }\n else if (selectedCards.length === 1) {\n popupContent = ' ' + this.parent.getCardDetails(selectedCards[0])[this.parent.cardSettings.headerField];\n }\n return popupContent;\n };\n KanbanTouch.prototype.updatePopupContent = function () {\n if (!this.mobilePopup) {\n return;\n }\n var popupContent = this.getPopupContent();\n if (popupContent) {\n this.mobilePopup.element.querySelector('.' + cls.POPUP_CONTENT_CLASS).textContent = popupContent;\n }\n else {\n this.mobilePopup.hide();\n }\n };\n KanbanTouch.prototype.closeClick = function () {\n this.parent.touchModule.mobilePopup.hide();\n };\n KanbanTouch.prototype.popupClose = function () {\n this.popupDestroy();\n };\n KanbanTouch.prototype.popupDestroy = function () {\n if (this.mobilePopup && this.mobilePopup.element) {\n var instance = this.mobilePopup.element.querySelector('.e-control.e-btn').ej2_instances[0];\n if (instance) {\n instance.destroy();\n }\n this.mobilePopup.destroy();\n remove(this.mobilePopup.element);\n this.mobilePopup = null;\n }\n };\n KanbanTouch.prototype.unWireTouchEvents = function () {\n if (this.touchObj) {\n this.touchObj.destroy();\n }\n this.touchObj = null;\n this.element = null;\n };\n KanbanTouch.prototype.destroy = function () {\n this.popupDestroy();\n this.unWireTouchEvents();\n this.tabHold = false;\n };\n return KanbanTouch;\n}());\nexport { KanbanTouch };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined, SanitizeHtmlHelper, animationMode } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
    \n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n this.element.setAttribute('aria-disabled', 'true');\n }\n else {\n this.element.classList.remove(DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n if (isEnabled) {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n // eslint-disable-next-line\n var e = void 0;\n this.element.classList.add(INTERACTION);\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.isChildObject = function () {\n if (typeof this.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n /* eslint-disable */\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1)\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n if (Browser.userAgent.indexOf(\"Edg\") > -1) {\n checkboxEle.setAttribute('aria-label', \"checked\");\n }\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n if (Browser.userAgent.indexOf(\"Edg\") > -1) {\n checkboxEle.setAttribute('aria-label', \"checked\");\n }\n }\n else {\n e.item.setAttribute('aria-checked', 'false');\n if (Browser.userAgent.indexOf(\"Edg\") > -1) {\n checkboxEle.setAttribute('aria-label', \"unchecked\");\n }\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute(\"tabindex\", \"-1\");\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i])) && !isNOU(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (this.isChildObject()) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var _this = this;\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] == true; }).length > 0 ? true : this.isInitalExpand;\n }\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[index].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length - 1; len >= 0; len--) {\n var liEle = this.getElement(nodes[len]);\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - (nodes.length - 1)] ? nodes[len - (nodes.length - 1)].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length - 1; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n if (Browser.userAgent.indexOf(\"Edg\") > -1) {\n if (ariaState === 'true') {\n wrapper.setAttribute('aria-label', \"checked\");\n }\n else if (ariaState === 'false') {\n wrapper.setAttribute('aria-label', \"unchecked\");\n }\n else if (ariaState === 'mixed') {\n wrapper.setAttribute('aria-label', \"indeterminate\");\n }\n }\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[i]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var _this = this;\n var eUids = this.expandedNodes;\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] == true; }).length > 0 ? true : this.isInitalExpand;\n }\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && event.originalEvent.changedTouches && !Browser.isIos ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY) : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || (li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE)))) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: (this.animation.expand.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: (this.animation.collapse.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'), false, parseFloat(parentLi.getAttribute('aria-level')) + 1);\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (expandChild) {\n this.expandedNodes.push(parentLi.getAttribute('data-uid'));\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot, level) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n var index = obj.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; });\n if (index !== -1) {\n return getValue(this.fields.child, obj[index]);\n }\n if (index === -1) {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var tempArray = getValue(this.fields.child, obj[i]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue(this.fields.child, tempArray[childIndex]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n else if (this.isChildObject()) {\n var tempField = !isNOU(level) ? this.fields : this.fields.child;\n var i = 1;\n while (i < level) {\n if (!isNOU(tempField.child)) {\n tempField = tempField.child;\n }\n else {\n break;\n }\n i++;\n }\n this.updateListProp(tempField);\n var index = obj.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; });\n if (index !== -1) {\n return getValue('child', obj[index]);\n }\n if (index === -1) {\n for (var i_1 = 0, objlen = obj.length; i_1 < objlen; i_1++) {\n var tempArray = getValue('child', obj[i_1]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return getValue(_this.fields.child.id, data) && getValue(_this.fields.child.id, data).toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue('child', tempArray[childIndex]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !(e.ctrlKey || e.metaKey))))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute(\"tabindex\", \"-1\");\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = Browser.isDevice && e.originalEvent.changedTouches && !Browser.isIos ? document.elementFromPoint(e.originalEvent.changedTouches[0].clientX, e.originalEvent.changedTouches[0].clientY) : e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[i]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[length_1]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable') || nextNode.classList.contains('e-prevent')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], FOCUS);\n preNode.setAttribute(\"tabindex\", \"-1\");\n if (!nextNode.classList.contains('e-disable') && !nextNode.classList.contains(PREVENTSELECT)) {\n addClass([nextNode], FOCUS);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n if (focusedElement.classList.contains('e-disable') || focusedElement.classList.contains('e-prevent')) {\n focusedElement.setAttribute(\"tabindex\", \"-1\");\n this.navigateNode(true);\n }\n else {\n focusedElement.setAttribute(\"tabindex\", \"0\");\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n }\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target == focusedElement) {\n removeClass([focusedElement], FOCUS);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n if (Browser.isDevice) {\n return;\n }\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n ;\n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = currLi.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\n else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl,\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n this.enableHtmlSanitizer ? txtEle.innerText = SanitizeHtmlHelper.sanitize(newText) : txtEle.innerHTML = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.isChildObject()) {\n var children = 'child';\n var childData = getValue(children, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n enableTapHold: true,\n tapHoldThreshold: 100,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING) && (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[index]);\n };\n /* eslint-disable */\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance;\n var nodeData = [];\n var liArray = [];\n dragInstance = e.dragData.draggable;\n for (var i_2 = 0; i_2 < dragInstance.ej2_instances.length; i_2++) {\n if (dragInstance.ej2_instances[i_2] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i_2];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i_3 = sNodes.length - 1; i_3 >= 0; i_3--) {\n if (dropLi.isSameNode(sNodes[i_3]) || this.isDescendant(sNodes[i_3], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_3], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i_4 = 0; i_4 < sNodes.length; i_4++) {\n if (dropLi.isSameNode(sNodes[i_4]) || this.isDescendant(sNodes[i_4], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_4], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[i]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n if (this.showCheckBox) {\n this.ensureIndeterminate();\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n var args = this.expandArgs;\n if (isNOU(args) || args.name != 'nodeExpanding') {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = (iconClass == \"e-drop-in\") ? \"Inside\" : ((event.offsetY < 7) ? \"Before\" : \"After\");\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var refNode;\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n refNode = dropUl.childNodes[index];\n if (!this.isFirstRender || this.dataType === 1) {\n var args = this.expandArgs;\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name != 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name != 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = (this.sortOrder === 'Ascending') ? cNodes[j].textContent.toUpperCase() > li[i].innerText.toUpperCase() : cNodes[j].textContent.toUpperCase() < li[i].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[i], cNodes[j]);\n break;\n }\n dropUl.insertBefore(li[i], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[i][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[i]);\n var id = strNodes[i];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].getAttribute(\"data-uid\").toString() : null;\n }\n if (validID.indexOf(id) == -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n var childNodes;\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNOU(node[i][this.fields.id]) ? getValue(this.fields.id, node[i]).toString() : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n ;\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[i]))) {\n var childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[i]))) {\n var childData = getValue('child', treeData[i]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\n else if (typeof target === \"object\") {\n nodesID[0] = target.getAttribute(\"data-uid\").toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[i]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length == 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function (e) { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n nodeData.push(this.getNode(liEle));\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent('addNodes', nodes);\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[i]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[i][this.fields.id].toString());\n this.getHierarchicalParentId(data[i][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n if (!this.isReact || this.isReact && !(this.fields.dataSource instanceof DataManager)) {\n this.reRenderNodes();\n }\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n this.ulElement = null;\n this.liList = null;\n this.startNode = null;\n this.firstTap = null;\n this.expandArgs = null;\n this.dragLi = null;\n this.dragTarget = null;\n this.dragParent = null;\n this.dragObj = null;\n this.dropObj = null;\n this.inputObj = null;\n this.touchEditObj = null;\n this.touchExpandObj = null;\n this.touchClickObj = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele, null);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType == 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length != 0 && !isNOU(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n }\n else if (this.dataType == 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId);\n }\n this.expandAll(parentsId.reverse());\n var liEle = this.getElement(node);\n if (!isNOU(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () { liEle.scrollIntoView({ behavior: \"smooth\" }); }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n nodeData.push(this.getNode(dragLi));\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var id;\n var isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType == 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n /* eslint-disable */\n var newNodeData;\n var parentData;\n if (this.dataType == 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[index]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute(\"title\", newNodeData[this.fields.tooltip]);\n }\n if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","import { append, createElement, EventHandler, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport * as events from './constant';\nimport * as cls from './css-constant';\n/**\n * Kanban mobile layout rendering module\n *\n */\nvar MobileLayout = /** @class */ (function () {\n function MobileLayout(parent) {\n this.parent = parent;\n }\n MobileLayout.prototype.renderSwimlaneHeader = function () {\n var toolbarWrapper = createElement('div', {\n className: cls.SWIMLANE_HEADER_CLASS,\n innerHTML: '
    '\n });\n this.parent.element.appendChild(toolbarWrapper);\n EventHandler.add(toolbarWrapper.querySelector('.' + cls.TOOLBAR_MENU_ICON_CLASS), 'click', this.menuClick, this);\n };\n MobileLayout.prototype.renderSwimlaneTree = function () {\n var height = this.parent.element.querySelector('.' + cls.SWIMLANE_HEADER_CLASS).offsetHeight;\n var treeHeight = window.innerHeight - height;\n this.popupOverlay = createElement('div', { className: cls.SWIMLANE_OVERLAY_CLASS, styles: 'height: ' + treeHeight + 'px;' });\n var wrapper = createElement('div', { className: cls.SWIMLANE_CONTENT_CLASS, styles: 'top:' + height + 'px;' });\n var treeWrapper = createElement('div', {\n className: cls.SWIMLANE_RESOURCE_CLASS + ' e-popup-close', styles: 'height: ' + treeHeight + 'px;'\n });\n wrapper.appendChild(treeWrapper);\n wrapper.appendChild(this.popupOverlay);\n this.parent.element.appendChild(wrapper);\n var swimlaneTree = createElement('div', { className: cls.SWIMLANE_TREE_CLASS });\n treeWrapper.appendChild(swimlaneTree);\n var dataSource = this.parent.enableVirtualization ?\n this.parent.virtualLayoutModule.kanbanRows : this.parent.layoutModule.kanbanRows;\n this.treeViewObj = new TreeView({\n cssClass: this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n fields: {\n dataSource: dataSource,\n id: 'keyField',\n text: 'textField'\n },\n nodeTemplate: this.parent.swimlaneSettings.template,\n nodeClicked: this.treeSwimlaneClick.bind(this),\n drawNode: this.drawNode.bind(this)\n });\n this.treeViewObj.appendTo(swimlaneTree);\n var popupObj = {\n targetType: 'relative',\n actionOnScroll: 'none',\n enableRtl: this.parent.enableRtl,\n zIndex: 10,\n hideAnimation: { name: 'SlideLeftOut', duration: 500 },\n showAnimation: { name: 'SlideLeftIn', duration: 500 },\n viewPortElement: this.parent.element.querySelector('.' + cls.CONTENT_CLASS)\n };\n popupObj.content = this.treeViewObj.element;\n this.treePopup = new Popup(treeWrapper, popupObj);\n };\n MobileLayout.prototype.menuClick = function () {\n if (this.parent.element.querySelector('.' + cls.SWIMLANE_RESOURCE_CLASS).classList.contains('e-popup-open')) {\n this.treePopup.hide();\n removeClass([this.popupOverlay], 'e-enable');\n }\n else {\n var treeNodes = [].slice.call(this.treeViewObj.element.querySelectorAll('.e-list-item'));\n removeClass(treeNodes, 'e-active');\n addClass([treeNodes[this.parent.layoutModule.swimlaneIndex]], 'e-active');\n this.treePopup.show();\n addClass([this.popupOverlay], 'e-enable');\n }\n };\n MobileLayout.prototype.treeSwimlaneClick = function (args) {\n this.treePopup.hide();\n var treeNodes = [].slice.call(this.treeViewObj.element.querySelectorAll('.e-list-item'));\n this.parent.layoutModule.swimlaneIndex = treeNodes.indexOf(args.node);\n this.parent.layoutModule.scrollLeft = 0;\n this.parent.notify(events.dataReady, { processedData: this.parent.kanbanData });\n args.event.preventDefault();\n };\n MobileLayout.prototype.hidePopup = function () {\n this.treePopup.hide();\n removeClass([this.popupOverlay], 'e-enable');\n };\n MobileLayout.prototype.getWidth = function () {\n return (window.innerWidth * 80) / 100;\n };\n MobileLayout.prototype.drawNode = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.swimlaneSettings.template && this.parent.isReact) {\n var templateId = this.parent.element.id + '_treeviewTemplate';\n var treeViewTemplate = this.parent.templateParser(this.parent.swimlaneSettings.template)(args.nodeData, this.parent, 'nodeTemplate', templateId, false);\n append(treeViewTemplate, args.node.querySelector('.e-list-text'));\n }\n };\n return MobileLayout;\n}());\nexport { MobileLayout };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { append, createElement, formatUnit, EventHandler, addClass, remove, extend, Browser, isNullOrUndefined as isNoU, removeClass, closest, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { MobileLayout } from './mobile-layout';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Kanban layout rendering module\n *\n */\nvar LayoutRender = /** @class */ (function (_super) {\n __extends(LayoutRender, _super);\n function LayoutRender(parent) {\n var _this = _super.call(this, parent) || this;\n _this.kanbanRows = [];\n _this.parent = parent;\n _this.columnKeys = [];\n _this.swimlaneIndex = 0;\n _this.swimlaneData = {};\n _this.scrollLeft = 0;\n _this.frozenOrder = 0;\n _this.parent.on(events.dataReady, _this.initRender, _this);\n _this.parent.on(events.contentReady, _this.scrollUiUpdate, _this);\n return _this;\n }\n LayoutRender.prototype.initRender = function () {\n if (this.parent.columns.length === 0) {\n return;\n }\n this.columnData = this.getColumnCards();\n this.kanbanRows = this.getRows();\n this.swimlaneData = this.getSwimlaneCards();\n if (this.parent.isAdaptive) {\n var parent_1 = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n if (parent_1) {\n this.scrollLeft = parent_1.scrollLeft;\n }\n }\n this.destroy();\n this.parent.on(events.dataReady, this.initRender, this);\n this.parent.on(events.contentReady, this.scrollUiUpdate, this);\n if (this.parent.isAdaptive && this.parent.swimlaneSettings.keyField && this.parent.kanbanData.length !== 0) {\n this.renderSwimlaneHeader();\n }\n var header = createElement('div', { className: cls.HEADER_CLASS });\n this.parent.element.appendChild(header);\n this.renderHeader(header);\n this.renderContent();\n this.renderCards();\n this.renderValidation();\n this.parent.renderTemplates();\n this.parent.notify(events.contentReady, {});\n this.wireEvents();\n if (this.parent.isInitialRender) {\n this.parent.isInitialRender = false;\n }\n };\n LayoutRender.prototype.renderHeader = function (header) {\n var headerWrap = createElement('div', { className: this.parent.swimlaneSettings.keyField ? cls.SWIMLANE_CLASS : '' });\n header.appendChild(headerWrap);\n var headerTable = createElement('table', {\n className: cls.TABLE_CLASS + ' ' + cls.HEADER_TABLE_CLASS\n });\n headerWrap.appendChild(headerTable);\n this.renderColGroup(headerTable);\n var tableHead = createElement('thead');\n var tableBody = createElement('tbody', { className: 'e-hide', innerHTML: '', attrs: { 'role': 'rowgroup' } });\n headerTable.appendChild(tableBody);\n headerTable.appendChild(tableHead);\n if (this.parent.stackedHeaders.length > 0) {\n tableHead.appendChild(this.createStackedRow(this.parent.stackedHeaders));\n }\n var tr = createElement('tr', { className: cls.HEADER_ROW_CLASS });\n tableHead.appendChild(tr);\n var _loop_1 = function (column) {\n if (this_1.isColumnVisible(column)) {\n var index = this_1.parent.actionModule.columnToggleArray.indexOf(column.keyField.toString());\n var th_1 = createElement('th', {\n className: index === -1 ? cls.HEADER_CELLS_CLASS : cls.HEADER_CELLS_CLASS + ' ' + cls.COLLAPSED_CLASS,\n attrs: { 'data-role': 'kanban-column', 'data-key': column.keyField.toString(), 'scope': 'col' }\n });\n var classList = [];\n if (column.allowToggle) {\n classList.push(cls.HEADER_ROW_TOGGLE_CLASS);\n if (!column.isExpanded) {\n classList.push(cls.COLLAPSED_CLASS);\n }\n }\n addClass([th_1], classList);\n var headerWrapper = createElement('div', { className: cls.HEADER_WRAP_CLASS });\n th_1.appendChild(headerWrapper);\n this_1.columnData = this_1.getColumnCards(this_1.parent.kanbanData);\n var noOfCard = this_1.columnData[column.keyField].length;\n var headerTitle = createElement('div', { className: cls.HEADER_TITLE_CLASS });\n headerWrapper.appendChild(headerTitle);\n if (column.template) {\n var templateArgs = {\n keyField: column.keyField, headerText: column.headerText, minCount: column.minCount, maxCount: column.maxCount,\n allowToggle: column.allowToggle, isExpanded: column.isExpanded, showItemCount: column.showItemCount, count: noOfCard\n };\n addClass([th_1], cls.TEMPLATE_CLASS);\n var templateId = this_1.parent.element.id + '_columnTemplate';\n var templateHeader = this_1.parent.templateParser(column.template)(templateArgs, this_1.parent, 'columnTemplate', templateId, false);\n append(templateHeader, headerTitle);\n }\n else {\n var header_1 = createElement('div', { className: cls.HEADER_TEXT_CLASS, innerHTML: column.headerText });\n headerTitle.appendChild(header_1);\n if (column.showItemCount) {\n var itemCount = createElement('div', {\n className: cls.CARD_ITEM_COUNT_CLASS,\n innerHTML: '- ' + noOfCard.toString() + ' ' + this_1.parent.localeObj.getConstant('items')\n });\n headerTitle.appendChild(itemCount);\n }\n }\n if (column.allowToggle) {\n var isExpand = (column.isExpanded && index === -1) ? true : false;\n var name_1 = (isExpand) ? cls.COLUMN_EXPAND_CLASS : cls.COLUMN_COLLAPSE_CLASS;\n var icon = createElement('div', {\n className: cls.HEADER_ICON_CLASS + ' ' + cls.ICON_CLASS + ' ' + name_1,\n attrs: { 'tabindex': '0', 'role': 'button' }\n });\n icon.setAttribute('aria-label', isExpand ? column.keyField + ' Expand' : column.keyField + ' Collapse');\n th_1.setAttribute('aria-expanded', isExpand.toString());\n headerWrapper.appendChild(icon);\n }\n var dataObj = [{ keyField: column.keyField, textField: column.headerText, count: noOfCard }];\n var args = { data: dataObj, element: tr, cancel: false, requestType: 'headerRow' };\n this_1.parent.trigger(events.queryCellInfo, args, function (columnArgs) {\n if (!columnArgs.cancel) {\n tr.appendChild(th_1);\n }\n });\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n _loop_1(column);\n }\n };\n LayoutRender.prototype.renderContent = function () {\n var content = createElement('div', { className: cls.CONTENT_CLASS });\n this.parent.element.appendChild(content);\n var contentWrap = createElement('div', { className: this.parent.swimlaneSettings.keyField ? cls.SWIMLANE_CLASS : '' });\n content.appendChild(contentWrap);\n var contentTable = createElement('table', {\n className: cls.TABLE_CLASS + ' ' + cls.CONTENT_TABLE_CLASS, attrs: { 'role': 'presentation' }\n });\n contentWrap.appendChild(contentTable);\n this.renderColGroup(contentTable);\n var tHead = createElement('thead', { className: 'e-hide', attrs: { 'role': 'none' } });\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n var thElem = createElement('th', { id: column.keyField, innerHTML: column.keyField, attrs: { 'scope': 'col' } });\n thElem.style.display = 'none';\n tHead.appendChild(thElem);\n }\n contentTable.appendChild(tHead);\n var tBody = createElement('tbody', { attrs: { 'role': 'treegrid', 'aria-label': 'Kanban Content' } });\n contentTable.appendChild(tBody);\n var isCollaspsed = false;\n this.swimlaneRow = this.kanbanRows;\n this.initializeSwimlaneTree();\n for (var _b = 0, _c = this.swimlaneRow; _b < _c.length; _b++) {\n var row = _c[_b];\n if (this.parent.swimlaneSettings.keyField && this.parent.swimlaneToggleArray.length !== 0) {\n var index = this.parent.swimlaneToggleArray.indexOf(row.keyField);\n isCollaspsed = index !== -1;\n }\n if (this.parent.swimlaneSettings.keyField && !this.parent.isAdaptive) {\n this.renderSwimlaneRow(tBody, row, isCollaspsed);\n }\n this.renderSingleContent(tBody, row, isCollaspsed);\n }\n };\n LayoutRender.prototype.renderSingleContent = function (tBody, row, isCollaspsed) {\n var className = isCollaspsed ? cls.CONTENT_ROW_CLASS + ' ' + cls.COLLAPSED_CLASS : cls.CONTENT_ROW_CLASS;\n var tr = createElement('tr', { className: className,\n attrs: { 'role': 'row', 'aria-label': row.keyField + 'row content' } });\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n if (this.isColumnVisible(column)) {\n var index = this.parent.actionModule.columnToggleArray.indexOf(column.keyField.toString());\n var className_1 = index === -1 ? cls.CONTENT_CELLS_CLASS : cls.CONTENT_CELLS_CLASS + ' ' + cls.COLLAPSED_CLASS;\n var dragClass = (column.allowDrag ? ' ' + cls.DRAG_CLASS : '') + (column.allowDrop ? ' ' + cls.DROP_CLASS\n + ' ' + cls.DROPPABLE_CLASS : '');\n var td = createElement('td', {\n className: className_1 + dragClass, attrs: { 'data-role': 'kanban-column', 'data-key': column.keyField.toString(), 'tabindex': '0',\n 'aria-describedby': column.keyField.toString(), 'role': 'gridcell' }\n });\n if (column.allowToggle && !column.isExpanded || index !== -1) {\n addClass([td], cls.COLLAPSED_CLASS);\n var text = (column.showItemCount ? '[' +\n this.getColumnData(column.keyField, this.swimlaneData[row.keyField]).length + '] ' : '') + column.headerText;\n td.appendChild(createElement('div', { className: cls.COLLAPSE_HEADER_TEXT_CLASS, innerHTML: text }));\n td.setAttribute('aria-expanded', 'false');\n }\n if (column.showAddButton) {\n var button = createElement('div', { className: cls.SHOW_ADD_BUTTON, attrs: { 'tabindex': '-1' } });\n button.appendChild(createElement('div', { className: cls.SHOW_ADD_ICON + ' ' + cls.ICON_CLASS }));\n td.appendChild(button);\n }\n tr.appendChild(td);\n }\n }\n var dataObj = [{ keyField: row.keyField, textField: row.textField, count: row.count }];\n var args = { data: dataObj, element: tr, cancel: false, requestType: 'contentRow' };\n this.parent.trigger(events.queryCellInfo, args, function (columnArgs) {\n if (!columnArgs.cancel) {\n if (tBody.classList.contains('e-swimlane-row')) {\n tBody.insertAdjacentElement('beforebegin', tr);\n }\n else {\n tBody.appendChild(tr);\n }\n }\n });\n };\n LayoutRender.prototype.initializeSwimlaneTree = function () {\n if (this.parent.swimlaneSettings.keyField && this.parent.isAdaptive && this.parent.kanbanData.length !== 0) {\n var swimlaneHeaderName = this.parent.element.querySelector('.' + cls.TOOLBAR_SWIMLANE_NAME_CLASS);\n this.swimlaneRow = [this.kanbanRows[this.swimlaneIndex]];\n this.renderSwimlaneTree();\n if (this.parent.swimlaneSettings.template) {\n var cardCount = this.swimlaneData[this.swimlaneRow[0].keyField].length;\n var templateArgs = extend({}, this.swimlaneRow[0], { count: cardCount }, true);\n var swimlaneTemplate = this.parent.templateParser(this.parent.swimlaneSettings.template)(templateArgs, this.parent, 'swimlaneTemplate', '', false);\n swimlaneHeaderName.appendChild(swimlaneTemplate[0]);\n }\n else {\n swimlaneHeaderName.innerHTML = this.swimlaneRow[0].textField;\n }\n }\n };\n LayoutRender.prototype.renderSwimlaneRow = function (tBody, row, isCollapsed) {\n var name = cls.CONTENT_ROW_CLASS + ' ' + cls.SWIMLANE_ROW_CLASS;\n var className = isCollapsed ? ' ' + cls.COLLAPSED_CLASS : '';\n var tr = createElement('tr', {\n className: name + className, attrs: { 'aria-label': row.keyField + ' row header',\n 'role': 'row', 'data-key': row.keyField, 'aria-expanded': (!isCollapsed).toString() }\n });\n var col = this.parent.columns.length - this.parent.actionModule.hideColumnKeys.length;\n var td = createElement('td', { className: cls.CONTENT_CELLS_CLASS,\n attrs: { 'data-role': 'kanban-column', 'role': 'gridcell', colspan: col.toString() } });\n var swimlaneHeader = createElement('div', { className: cls.SWIMLANE_HEADER_CLASS });\n td.appendChild(swimlaneHeader);\n var iconClass = isCollapsed ? cls.SWIMLANE_ROW_COLLAPSE_CLASS : cls.SWIMLANE_ROW_EXPAND_CLASS;\n var iconDiv = createElement('div', {\n className: cls.ICON_CLASS + ' ' + iconClass, attrs: {\n 'tabindex': '0', 'role': 'button', 'aria-label': isCollapsed ? row.keyField + ' Collapse' : row.keyField + ' Expand'\n }\n });\n swimlaneHeader.appendChild(iconDiv);\n var headerWrap = createElement('div', { className: cls.HEADER_WRAP_CLASS });\n swimlaneHeader.appendChild(headerWrap);\n var cardCount = this.swimlaneData[row.keyField].length;\n if (this.parent.swimlaneSettings.template) {\n var templateArgs = extend({}, row, { count: cardCount }, true);\n addClass([td], cls.TEMPLATE_CLASS);\n var templateId = this.parent.element.id + '_swimlaneTemplate';\n var swimlaneTemplate = this.parent.templateParser(this.parent.swimlaneSettings.template)(templateArgs, this.parent, 'swimlaneTemplate', templateId, false);\n append(swimlaneTemplate, headerWrap);\n }\n else {\n headerWrap.appendChild(createElement('div', {\n className: cls.SWIMLANE_ROW_TEXT_CLASS,\n innerHTML: row.textField,\n attrs: { 'data-role': row.textField }\n }));\n }\n if (this.parent.swimlaneSettings.showItemCount) {\n swimlaneHeader.appendChild(createElement('div', {\n className: cls.CARD_ITEM_COUNT_CLASS,\n innerHTML: \"- \" + cardCount.toString() + \" \" + this.parent.localeObj.getConstant('items')\n }));\n }\n tr.appendChild(td);\n var dataObj = [{ keyField: row.keyField, textField: row.textField, count: row.count }];\n var args = { data: dataObj, element: tr, cancel: false, requestType: 'swimlaneRow' };\n this.parent.trigger(events.queryCellInfo, args, function (columnArgs) {\n if (!columnArgs.cancel) {\n if (tBody.classList.contains('e-swimlane-row')) {\n tBody.insertAdjacentElement('beforebegin', tr);\n }\n else {\n tBody.appendChild(tr);\n }\n }\n });\n };\n LayoutRender.prototype.renderCards = function () {\n var _this = this;\n var rows = this.swimlaneRow;\n var cardRows = [].slice.call(this.parent.element.querySelectorAll('.e-content-row:not(.e-swimlane-row)'));\n var swimlaneRows = [].slice.call(this.parent.element.querySelectorAll('.e-content-row.e-swimlane-row'));\n var removeTrs = [];\n var columnTransition = false;\n cardRows.forEach(function (tr, index) {\n var dataCount = 0;\n var _loop_2 = function (column) {\n if (_this.isColumnVisible(column)) {\n var columnData = _this.parent.swimlaneSettings.keyField ?\n _this.getColumnData(column.keyField, (_this.parent.swimlaneSettings.showEmptyRow &&\n isNoU(_this.swimlaneData[rows[index].keyField])) ? []\n : _this.swimlaneData[rows[index].keyField]) : _this.columnData[column.keyField];\n dataCount += columnData.length;\n var columnWrapper = tr.querySelector('[data-key=\"' + column.keyField + '\"]');\n var cardWrapper_1 = createElement('div', {\n className: cls.CARD_WRAPPER_CLASS, attrs: { 'role': 'listbox', 'tabindex': '0',\n 'aria-label': column.keyField.toString()\n }\n });\n if (column.transitionColumns.length > 0) {\n columnTransition = true;\n }\n if (!columnTransition && isNoU(_this.parent.swimlaneSettings.keyField)) {\n var borderElem = createElement('div', { className: cls.BORDER_CLASS });\n columnWrapper.appendChild(borderElem);\n }\n columnWrapper.appendChild(cardWrapper_1);\n if (columnData.length > 0) {\n var _loop_3 = function (data) {\n var cardText = data[_this.parent.cardSettings.headerField];\n var cardIndex = _this.parent.actionModule.selectionArray.indexOf(cardText);\n var cardElement = _this.renderCard(data);\n if (cardIndex !== -1) {\n cardElement.setAttribute('aria-selected', 'true');\n addClass([cardElement], cls.CARD_SELECTION_CLASS);\n }\n var args = { data: data, element: cardElement, cancel: false };\n _this.parent.trigger(events.cardRendered, args, function (cardArgs) {\n if (!cardArgs.cancel) {\n cardWrapper_1.appendChild(cardElement);\n }\n });\n };\n for (var _i = 0, _a = columnData; _i < _a.length; _i++) {\n var data = _a[_i];\n _loop_3(data);\n }\n }\n else {\n cardWrapper_1.appendChild(_this.renderEmptyCard());\n }\n }\n };\n for (var _i = 0, _a = _this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n _loop_2(column);\n }\n if (dataCount === 0) {\n removeTrs.push(tr);\n if (swimlaneRows.length > 0) {\n removeTrs.push(swimlaneRows[index]);\n }\n }\n });\n if (!this.parent.swimlaneSettings.showEmptyRow && (this.parent.kanbanData.length === 0 && !this.parent.showEmptyColumn)) {\n removeTrs.forEach(function (tr) { return remove(tr); });\n }\n };\n LayoutRender.prototype.renderCard = function (data) {\n var cardElement = createElement('div', {\n className: cls.CARD_CLASS,\n attrs: { 'data-id': data[this.parent.cardSettings.headerField], 'data-key': data[this.parent.keyField],\n 'aria-selected': 'false', 'tabindex': '-1', 'role': 'option', 'aria-roledescription': 'Card'\n }\n });\n if (this.parent.cardHeight !== 'auto') {\n cardElement.style.height = formatUnit(this.parent.cardHeight);\n }\n if (this.parent.cardSettings.template) {\n addClass([cardElement], cls.TEMPLATE_CLASS);\n var templateId = this.parent.element.id + '_cardTemplate';\n var cardTemplate = this.parent.templateParser(this.parent.cardSettings.template)(data, this.parent, 'cardTemplate', templateId, false);\n append(cardTemplate, cardElement);\n }\n else {\n var tooltipClass = this.parent.enableTooltip ? ' ' + cls.TOOLTIP_TEXT_CLASS : '';\n if (this.parent.cardSettings.showHeader) {\n var cardHeader = createElement('div', { className: cls.CARD_HEADER_CLASS });\n var cardCaption = createElement('div', { className: cls.CARD_HEADER_TEXT_CLASS });\n var cardText = createElement('div', {\n className: cls.CARD_HEADER_TITLE_CLASS + tooltipClass,\n innerHTML: data[this.parent.cardSettings.headerField] || ''\n });\n cardHeader.appendChild(cardCaption);\n cardCaption.appendChild(cardText);\n cardElement.appendChild(cardHeader);\n }\n var cardContent = createElement('div', {\n className: cls.CARD_CONTENT_CLASS + tooltipClass,\n innerHTML: data[this.parent.cardSettings.contentField] || ''\n });\n cardElement.appendChild(cardContent);\n if (this.parent.cardSettings.tagsField && data[this.parent.cardSettings.tagsField]) {\n var cardTags = createElement('div', { className: cls.CARD_TAGS_CLASS });\n var tags = data[this.parent.cardSettings.tagsField].toString().split(',');\n for (var _i = 0, tags_1 = tags; _i < tags_1.length; _i++) {\n var tag = tags_1[_i];\n cardTags.appendChild(createElement('div', {\n className: cls.CARD_TAG_CLASS + ' ' + cls.CARD_LABEL_CLASS, innerHTML: tag\n }));\n }\n cardElement.appendChild(cardTags);\n }\n if (this.parent.cardSettings.grabberField && data[this.parent.cardSettings.grabberField]) {\n addClass([cardElement], cls.CARD_COLOR_CLASS);\n cardElement.style.borderLeftColor = data[this.parent.cardSettings.grabberField];\n }\n if (this.parent.cardSettings.footerCssField) {\n var cardFields = createElement('div', { className: cls.CARD_FOOTER_CLASS });\n var keys = data[this.parent.cardSettings.footerCssField].split(',');\n for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {\n var key = keys_1[_a];\n cardFields.appendChild(createElement('div', {\n className: key.trim() + ' ' + cls.CARD_FOOTER_CSS_CLASS\n }));\n }\n cardElement.appendChild(cardFields);\n }\n }\n return cardElement;\n };\n LayoutRender.prototype.renderEmptyCard = function () {\n var emptyCard = createElement('span', {\n className: cls.EMPTY_CARD_CLASS, innerHTML: this.parent.localeObj.getConstant('noCard'),\n attrs: { 'aria-label': this.parent.localeObj.getConstant('noCard'), 'role': 'option' }\n });\n return emptyCard;\n };\n LayoutRender.prototype.renderColGroup = function (table) {\n var _this = this;\n var colGroup = createElement('colgroup');\n this.parent.columns.forEach(function (column) {\n if (_this.isColumnVisible(column)) {\n var index = _this.parent.actionModule.columnToggleArray.indexOf(column.keyField.toString());\n var isToggle = column.allowToggle && !column.isExpanded;\n var className = index === -1 ? (isToggle ? cls.COLLAPSED_CLASS : '') : cls.COLLAPSED_CLASS;\n var col = createElement('col', {\n className: className,\n attrs: { 'data-key': column.keyField.toString() },\n styles: _this.parent.isAdaptive ? 'width: ' +\n (isToggle ? formatUnit(events.toggleWidth) : formatUnit(_this.getWidth())) : ''\n });\n colGroup.appendChild(col);\n }\n });\n table.appendChild(colGroup);\n };\n LayoutRender.prototype.getRows = function () {\n var _this = this;\n var kanbanRows = [];\n if (this.parent.swimlaneSettings.keyField) {\n this.parent.kanbanData.map(function (obj) {\n if (!_this.parent.swimlaneSettings.showEmptyRow) {\n if ((isNoU(obj[_this.parent.keyField])) || (obj[_this.parent.keyField] === '') ||\n (obj[_this.parent.keyField] && _this.columnKeys.indexOf(obj[_this.parent.keyField].toString()) === -1)) {\n return;\n }\n }\n var textField = obj[_this.parent.swimlaneSettings.textField] || obj[_this.parent.swimlaneSettings.keyField];\n var keyField = obj[_this.parent.swimlaneSettings.keyField];\n if (!obj[_this.parent.swimlaneSettings.keyField]) {\n if (_this.parent.swimlaneSettings.showUnassignedRow) {\n textField = _this.parent.localeObj.getConstant('unassigned');\n keyField = '';\n }\n else {\n return;\n }\n }\n kanbanRows.push({ keyField: keyField, textField: textField });\n });\n kanbanRows = kanbanRows.filter(function (item, index, arr) {\n return index === arr.map(function (item) { return item.keyField; }).indexOf(item.keyField);\n });\n kanbanRows = this.swimlaneSorting(kanbanRows);\n kanbanRows.forEach(function (row) {\n row.count = _this.parent.kanbanData.filter(function (obj) {\n return _this.columnKeys.indexOf(obj[_this.parent.keyField]) > -1 &&\n obj[_this.parent.swimlaneSettings.keyField] === row.keyField;\n }).length;\n });\n if (kanbanRows.length === 0) {\n kanbanRows.push({ keyField: '', textField: '' });\n }\n }\n else {\n kanbanRows.push({ keyField: '', textField: '' });\n }\n return kanbanRows;\n };\n LayoutRender.prototype.swimlaneSorting = function (rows) {\n if (this.parent.swimlaneSettings.sortComparer) {\n rows = this.parent.swimlaneSettings.sortComparer.call(this.parent, rows);\n }\n else {\n rows.sort(function (a, b) { return a.textField.localeCompare(b.textField, undefined, { numeric: true }); });\n if (this.parent.swimlaneSettings.sortDirection === 'Descending') {\n rows.reverse();\n }\n }\n return rows;\n };\n LayoutRender.prototype.createStackedRow = function (rows) {\n var tr = createElement('tr', { className: cls.HEADER_ROW_CLASS + ' ' + cls.STACKED_HEADER_ROW_CLASS });\n var stackedHeaders = [];\n this.parent.columns.forEach(function (column) {\n var headerText = '';\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.keyFields.indexOf(column.keyField.toString()) !== -1) {\n headerText = row.text;\n }\n }\n stackedHeaders.push(headerText);\n });\n for (var h = 0; h < stackedHeaders.length; h++) {\n var colSpan = 1;\n for (var j = h + 1; j < stackedHeaders.length; j++) {\n if ((stackedHeaders[h] !== '') && (stackedHeaders[j] !== '') && stackedHeaders[h] === stackedHeaders[j]) {\n colSpan++;\n }\n else {\n break;\n }\n }\n var div = createElement('div', { className: cls.HEADER_TEXT_CLASS, innerHTML: stackedHeaders[h] });\n var th = createElement('th', {\n className: cls.HEADER_CELLS_CLASS + ' ' + cls.STACKED_HEADER_CELL_CLASS,\n attrs: { 'colspan': colSpan.toString(), 'scope': 'col' }\n });\n tr.appendChild(th).appendChild(div);\n h += colSpan - 1;\n }\n return tr;\n };\n LayoutRender.prototype.scrollUiUpdate = function () {\n var _this = this;\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n var height = this.parent.element.offsetHeight - header.offsetHeight;\n if (this.parent.isAdaptive) {\n height = window.innerHeight - (header.offsetHeight + events.bottomSpace);\n var swimlaneToolbar = this.parent.element.querySelector('.' + cls.SWIMLANE_HEADER_CLASS);\n if (swimlaneToolbar) {\n height -= swimlaneToolbar.offsetHeight;\n }\n var cardWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_CELLS_CLASS));\n cardWrappers.forEach(function (cell) {\n var cardWrapper = cell.querySelector('.' + cls.CARD_WRAPPER_CLASS);\n if (!cardWrapper.classList.contains(cls.MULTI_CARD_WRAPPER_CLASS)) {\n cardWrapper.style.height = formatUnit(height);\n EventHandler.add(cell, 'touchmove', _this.onAdaptiveScroll, _this);\n }\n });\n }\n if (this.parent.height !== 'auto' && this.parent.height !== '100%') {\n content.style.height = formatUnit(height);\n }\n [].slice.call(header.children).forEach(function (node) {\n var paddingValue = 0;\n if ((content.offsetWidth - content.clientWidth) > 0) {\n paddingValue = 17;\n if ((content.offsetHeight - content.clientHeight) > 0) {\n node.style.width = formatUnit(content.clientWidth);\n }\n }\n if (_this.parent.enableRtl) {\n node.style.paddingLeft = formatUnit(paddingValue);\n }\n else {\n node.style.paddingRight = formatUnit(paddingValue);\n }\n });\n this.updateScrollPosition();\n };\n LayoutRender.prototype.onContentScroll = function (e) {\n var target = e.target;\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n [].slice.call(header.children).forEach(function (node) { node.scrollLeft = target.scrollLeft; });\n this.parent.scrollPosition.content = { left: target.scrollLeft, top: target.scrollTop };\n if (!isNoU(this.parent.swimlaneSettings.keyField) && this.parent.swimlaneSettings.enableFrozenRows) {\n this.frozenRows(e);\n }\n };\n LayoutRender.prototype.addFrozenSwimlaneDataKey = function (currentElem) {\n var frozenKey = currentElem.getAttribute('data-key');\n if (!isNoU(frozenKey)) {\n this.frozenSwimlaneRow.setAttribute('data-key', frozenKey);\n }\n };\n LayoutRender.prototype.frozenRows = function (e) {\n var firstSwimlane = this.parent.element.querySelector('.' + cls.SWIMLANE_ROW_CLASS);\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n if (isNoU(this.frozenSwimlaneRow)) {\n this.frozenSwimlaneRow = createElement('div', { className: cls.FROZEN_SWIMLANE_ROW_CLASS });\n var frozenRow = createElement('div', { className: cls.FROZEN_ROW_CLASS });\n this.frozenSwimlaneRow.appendChild(frozenRow);\n this.parent.element.insertBefore(this.frozenSwimlaneRow, this.parent.element.firstElementChild);\n frozenRow.appendChild(firstSwimlane.querySelector('.' + cls.SWIMLANE_HEADER_CLASS).cloneNode(true));\n this.addFrozenSwimlaneDataKey(firstSwimlane);\n setStyleAttribute(this.frozenSwimlaneRow, { height: formatUnit(firstSwimlane.getBoundingClientRect().height),\n width: formatUnit(content.querySelector('.e-swimlane').getBoundingClientRect().width),\n top: formatUnit(header.getBoundingClientRect().height.toString())\n });\n setStyleAttribute(header, { position: 'relative', top: formatUnit((-this.frozenSwimlaneRow.getBoundingClientRect().height)) });\n setStyleAttribute(content, { position: 'relative', top: formatUnit((-this.frozenSwimlaneRow.getBoundingClientRect().height)) });\n }\n else {\n var swimlaneRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.SWIMLANE_ROW_CLASS));\n var curSwim = swimlaneRows[this.frozenOrder];\n var prevSwim = swimlaneRows[this.frozenOrder - 1];\n var nextSwim = swimlaneRows[this.frozenOrder + 1];\n var curSwimHeight = void 0;\n var prevSwimHeight = void 0;\n var nextSwimHeight = void 0;\n if (curSwim) {\n curSwimHeight = curSwim.getBoundingClientRect().top + curSwim.getBoundingClientRect().height;\n }\n if (prevSwim) {\n prevSwimHeight = prevSwim.getBoundingClientRect().top + prevSwim.getBoundingClientRect().height;\n }\n if (nextSwim) {\n nextSwimHeight = nextSwim.getBoundingClientRect().top + nextSwim.getBoundingClientRect().height;\n }\n var frozenSwimHeight = content.getBoundingClientRect().top + this.frozenSwimlaneRow.getBoundingClientRect().height;\n var frozenRowsElement = this.frozenSwimlaneRow.querySelector('.' + cls.FROZEN_ROW_CLASS);\n if (nextSwimHeight && frozenSwimHeight >= nextSwimHeight && this.frozenOrder < swimlaneRows.length - 1) {\n if (frozenRowsElement) {\n remove(frozenRowsElement.querySelector('.' + cls.SWIMLANE_HEADER_CLASS));\n frozenRowsElement.appendChild(nextSwim.querySelector('.' + cls.SWIMLANE_HEADER_CLASS).cloneNode(true));\n this.addFrozenSwimlaneDataKey(nextSwim);\n }\n ++this.frozenOrder;\n }\n else if (prevSwimHeight && frozenSwimHeight < curSwimHeight && frozenSwimHeight > prevSwimHeight && this.frozenOrder > 0) {\n if (frozenRowsElement) {\n remove(frozenRowsElement.querySelector('.' + cls.SWIMLANE_HEADER_CLASS));\n frozenRowsElement.appendChild(prevSwim.querySelector('.' + cls.SWIMLANE_HEADER_CLASS).cloneNode(true));\n this.addFrozenSwimlaneDataKey(prevSwim);\n }\n --this.frozenOrder;\n }\n }\n if (e && e.target.scrollTop === 0) {\n this.removeFrozenRows();\n }\n };\n LayoutRender.prototype.removeFrozenRows = function () {\n remove(this.frozenSwimlaneRow);\n this.frozenSwimlaneRow = null;\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n setStyleAttribute(header, { position: '', top: '' });\n setStyleAttribute(content, { position: '', top: '' });\n this.parent.scrollPosition.content = { left: this.parent.scrollPosition.content.left, top: 0 };\n content.scrollTop = 0;\n this.frozenOrder = 0;\n };\n LayoutRender.prototype.onColumnScroll = function (e) {\n var target = e.target;\n if (target.offsetParent) {\n var columnKey = target.offsetParent.getAttribute('data-key');\n this.parent.scrollPosition.column[\"\" + columnKey] = { left: target.scrollLeft, top: target.scrollTop };\n }\n };\n LayoutRender.prototype.onAdaptiveScroll = function (e) {\n if (this.parent.touchModule.tabHold && !this.parent.touchModule.mobilePopup) {\n e.preventDefault();\n }\n };\n /**\n * Check column is visible or not.\n *\n * @param {ColumnsModel} column - specifies the column.\n * @returns {boolean}\n * @private\n * @hidden\n */\n LayoutRender.prototype.isColumnVisible = function (column) {\n var _this = this;\n var isVisible = false;\n var isNumeric = typeof column.keyField === 'number';\n if (isNumeric) {\n isVisible = this.parent.actionModule.hideColumnKeys.indexOf(column.keyField.toString()) === -1;\n }\n else {\n column.keyField.split(',').forEach(function (key) { isVisible = _this.parent.actionModule.hideColumnKeys.indexOf(key) === -1; });\n }\n return isVisible;\n };\n LayoutRender.prototype.renderLimits = function (column, target) {\n var limits = createElement('div', { className: cls.LIMITS_CLASS });\n if (column.minCount) {\n limits.appendChild(createElement('div', {\n className: cls.MIN_COUNT_CLASS,\n innerHTML: this.parent.localeObj.getConstant('min') + ': ' + column.minCount.toString()\n }));\n }\n if (column.maxCount) {\n limits.appendChild(createElement('div', {\n className: cls.MAX_COUNT_CLASS,\n innerHTML: this.parent.localeObj.getConstant('max') + ': ' + column.maxCount.toString()\n }));\n }\n if (limits.childElementCount > 0) {\n if (target.querySelector('.' + cls.CARD_WRAPPER_CLASS)) {\n target.insertBefore(limits, target.firstElementChild);\n }\n else {\n target.appendChild(limits);\n }\n }\n };\n LayoutRender.prototype.renderValidation = function () {\n var _this = this;\n this.parent.columns.forEach(function (column) {\n if (!column.minCount && !column.maxCount) {\n return;\n }\n var cardData = _this.columnData[column.keyField];\n var keySelector = \"[data-key=\\\"\" + column.keyField + \"\\\"]\";\n var headerCell = _this.parent.element.querySelector(\".\" + (cls.HEADER_CELLS_CLASS + keySelector));\n var rowCells = [].slice.call(_this.parent.element.querySelectorAll(\".\" + (cls.CONTENT_CELLS_CLASS + keySelector)));\n if (_this.parent.constraintType === 'Swimlane' && _this.parent.swimlaneSettings.keyField) {\n _this.swimlaneRow.forEach(function (row, index) {\n _this.renderLimits(column, rowCells[index]);\n var rowCards = cardData.filter(function (card) {\n return card[_this.parent.swimlaneSettings.keyField] === row.keyField;\n });\n var colorClass = _this.getValidationClass(column, rowCards.length);\n if (colorClass) {\n addClass([rowCells[index]], colorClass);\n }\n });\n }\n else {\n _this.renderLimits(column, headerCell);\n var colorClass = _this.getValidationClass(column, cardData.length);\n if (colorClass) {\n addClass(rowCells.concat(headerCell), colorClass);\n }\n }\n });\n };\n LayoutRender.prototype.getValidationClass = function (column, count) {\n var colorClass;\n if (column.maxCount && count > column.maxCount) {\n colorClass = cls.MAX_COLOR_CLASS;\n }\n else if (column.minCount && count < column.minCount) {\n colorClass = cls.MIN_COLOR_CLASS;\n }\n return colorClass;\n };\n LayoutRender.prototype.refreshValidation = function () {\n var validations = [].slice.call(this.parent.element.querySelectorAll('.' + cls.LIMITS_CLASS));\n validations.forEach(function (node) { remove(node); });\n var minClass = [].slice.call(this.parent.element.querySelectorAll('.' + cls.MIN_COLOR_CLASS));\n removeClass(minClass, cls.MIN_COLOR_CLASS);\n var maxClass = [].slice.call(this.parent.element.querySelectorAll('.' + cls.MAX_COLOR_CLASS));\n removeClass(maxClass, cls.MAX_COLOR_CLASS);\n this.renderValidation();\n };\n LayoutRender.prototype.getColumnData = function (columnValue, dataSource) {\n var _this = this;\n if (dataSource === void 0) { dataSource = this.parent.kanbanData; }\n var cardData = [];\n var isNumeric = typeof columnValue === 'number';\n if (isNumeric) {\n var keyData = dataSource.filter(function (cardObj) {\n return cardObj[_this.parent.keyField] === columnValue;\n });\n cardData = cardData.concat(keyData);\n }\n else {\n var columnKeys = columnValue.split(',');\n var _loop_4 = function (key) {\n var keyData = dataSource.filter(function (cardObj) {\n return cardObj[_this.parent.keyField] === key.trim();\n });\n cardData = cardData.concat(keyData);\n };\n for (var _i = 0, columnKeys_1 = columnKeys; _i < columnKeys_1.length; _i++) {\n var key = columnKeys_1[_i];\n _loop_4(key);\n }\n }\n this.sortCategory(cardData);\n return cardData;\n };\n LayoutRender.prototype.sortCategory = function (cardData) {\n var key = this.parent.cardSettings.headerField;\n var direction = this.parent.sortSettings.direction;\n switch (this.parent.sortSettings.sortBy) {\n case 'DataSourceOrder':\n this.sortOrder(key, direction, cardData);\n break;\n case 'Custom':\n case 'Index':\n if (this.parent.sortSettings.field) {\n key = this.parent.sortSettings.field;\n }\n this.sortOrder(key, direction, cardData);\n break;\n }\n return cardData;\n };\n LayoutRender.prototype.sortOrder = function (key, direction, cardData) {\n var isNumeric = true;\n if (this.parent.kanbanData.length > 0) {\n isNumeric = typeof (this.parent.kanbanData[0])[\"\" + key] === 'number';\n }\n if (!isNumeric && this.parent.sortSettings.sortBy === 'Index') {\n return cardData;\n }\n var first;\n var second;\n cardData = cardData.sort(function (firstData, secondData) {\n if (!isNumeric) {\n first = firstData[\"\" + key].toLowerCase();\n second = secondData[\"\" + key].toLowerCase();\n }\n else {\n first = firstData[\"\" + key];\n second = secondData[\"\" + key];\n }\n return (first > second) ? 1 : ((second > first) ? -1 : 0);\n });\n if (direction === 'Descending') {\n cardData.reverse();\n }\n return cardData;\n };\n LayoutRender.prototype.documentClick = function (args) {\n if (args.target.classList.contains(cls.SWIMLANE_OVERLAY_CLASS) &&\n this.parent.element.querySelector('.' + cls.SWIMLANE_RESOURCE_CLASS).classList.contains('e-popup-open')) {\n this.treePopup.hide();\n removeClass([this.popupOverlay], 'e-enable');\n }\n if (closest(args.target, \".\" + cls.ROOT_CLASS)) {\n return;\n }\n var cards = [].slice.call(this.parent.element.querySelectorAll(\".\" + cls.CARD_CLASS + \".\" + cls.CARD_SELECTION_CLASS));\n removeClass(cards, cls.CARD_SELECTION_CLASS);\n this.disableAttributeSelection(cards);\n };\n LayoutRender.prototype.disableAttributeSelection = function (cards) {\n if (cards instanceof Element) {\n cards.setAttribute('aria-selected', 'false');\n }\n else {\n cards.forEach(function (card) { card.setAttribute('aria-selected', 'false'); });\n }\n };\n LayoutRender.prototype.getColumnCards = function (data) {\n var _this = this;\n var columnData = {};\n this.columnKeys = [];\n this.parent.columns.forEach(function (column) {\n var isNumeric = typeof column.keyField === 'number';\n if (isNumeric) {\n _this.columnKeys = _this.columnKeys.concat(column.keyField.toString());\n }\n else {\n _this.columnKeys = _this.columnKeys.concat(column.keyField.split(',').map(function (e) { return e.trim(); }));\n }\n var cardData = _this.getColumnData(column.keyField, data);\n columnData[column.keyField] = cardData;\n });\n return columnData;\n };\n LayoutRender.prototype.getSwimlaneCards = function () {\n var _this = this;\n var swimlaneData = {};\n if (this.parent.swimlaneSettings.keyField) {\n this.kanbanRows.forEach(function (row) {\n return swimlaneData[row.keyField] = _this.parent.kanbanData.filter(function (obj) {\n return !isNoU(obj[_this.parent.keyField]) &&\n _this.columnKeys.indexOf(obj[_this.parent.keyField].toString()) > -1 &&\n ((!obj[_this.parent.swimlaneSettings.keyField] && _this.parent.swimlaneSettings.showUnassignedRow) ?\n '' : obj[_this.parent.swimlaneSettings.keyField]) === row.keyField;\n });\n });\n }\n return swimlaneData;\n };\n LayoutRender.prototype.refreshHeaders = function () {\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n [].slice.call(header.children).forEach(function (child) { return remove(child); });\n this.renderHeader(header);\n };\n LayoutRender.prototype.refreshCards = function () {\n this.parent.resetTemplates(['cardTemplate']);\n var cards = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_WRAPPER_CLASS));\n cards.forEach(function (card) { return remove(card); });\n this.renderCards();\n this.wireDragEvent();\n this.parent.renderTemplates();\n };\n LayoutRender.prototype.refresh = function () {\n var _this = this;\n var isColumnTemplateRefreshed = false;\n this.parent.columns.forEach(function (column) {\n if (column.showItemCount) {\n if (column && column.template && !isColumnTemplateRefreshed) {\n _this.refreshHeaders();\n isColumnTemplateRefreshed = true;\n }\n var countSelector = \".\" + cls.HEADER_CELLS_CLASS + \"[data-key=\\\"\" + column.keyField + \"\\\"] .\" + cls.CARD_ITEM_COUNT_CLASS;\n var itemCount = _this.parent.element.querySelector(countSelector);\n if (itemCount) {\n var isNumeric = typeof column.keyField === 'number';\n var cardLength = 0;\n if (isNumeric) {\n // eslint-disable-next-line no-useless-escape\n cardLength = ([].slice.call(_this.parent.element.querySelectorAll('.' + cls.CARD_CLASS + '[data-key=\\\"' + column.keyField + '\\\"]'))).length;\n }\n else {\n var keys = column.keyField.split(',');\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n // eslint-disable-next-line no-useless-escape\n var cards = [].slice.call(_this.parent.element.querySelectorAll('.' + cls.CARD_CLASS + '[data-key=\\\"' + key.trim() + '\\\"]'));\n cardLength = cards.length + cardLength;\n }\n }\n itemCount.innerHTML = '- ' + cardLength + ' ' + _this.parent.localeObj.getConstant('items');\n }\n }\n });\n if (this.parent.swimlaneSettings.keyField) {\n var swimlaneRows = [].slice.call(this.parent.element.querySelectorAll(\".\" + cls.SWIMLANE_ROW_CLASS));\n swimlaneRows.forEach(function (swimlane) {\n var swimlaneKey = swimlane.getAttribute('data-key');\n var itemCount = swimlane.querySelector(\".\" + cls.CARD_ITEM_COUNT_CLASS);\n if (itemCount && swimlaneKey) {\n var cards = [].slice.call(swimlane.nextElementSibling.querySelectorAll('.' + cls.CARD_CLASS));\n itemCount.innerHTML = '- ' + cards.length + ' ' + _this.parent.localeObj.getConstant('items');\n }\n });\n }\n this.refreshValidation();\n };\n LayoutRender.prototype.updateScrollPosition = function () {\n var _this = this;\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n if (content) {\n if (!Browser.isIE) {\n content.scrollTo(this.parent.scrollPosition.content.left, this.parent.scrollPosition.content.top);\n }\n else {\n content.scrollTop = this.parent.scrollPosition.content.top;\n content.scrollLeft = this.parent.scrollPosition.content.left;\n }\n }\n var cardWrapper = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_WRAPPER_CLASS));\n cardWrapper.forEach(function (wrapper) {\n if (wrapper.offsetParent) {\n var scrollData = _this.parent.scrollPosition.column[wrapper.offsetParent.getAttribute('data-key')];\n if (scrollData) {\n if (!Browser.isIE) {\n wrapper.scrollTo(scrollData.left, scrollData.top);\n }\n else {\n wrapper.scrollTop = scrollData.top;\n wrapper.scrollLeft = scrollData.left;\n }\n }\n }\n });\n };\n LayoutRender.prototype.renderCardBasedOnIndex = function (data, index) {\n var _this = this;\n var key = data[this.parent.keyField];\n var cardRow = this.parent.element.querySelector('.e-content-row:not(.e-swimlane-row)');\n if (this.parent.swimlaneSettings.keyField && !this.parent.isAdaptive) {\n var rowSelector = \".e-content-row.e-swimlane-row[data-key=\\\"\" + data[this.parent.swimlaneSettings.keyField] + \"\\\"]\";\n if (this.parent.element.querySelector(rowSelector)) {\n cardRow = this.parent.element.querySelector(rowSelector).nextElementSibling;\n }\n else {\n var columnIndex = this.columnKeys.indexOf(key);\n if (columnIndex !== -1 && this.parent.actionModule.hideColumnKeys.indexOf(key) === -1) {\n var index_1 = this.kanbanRows.findIndex(function (rowData) { return rowData['keyField'] === data[_this.parent.swimlaneSettings.keyField]; });\n var swim = [].slice.call(this.parent.element.querySelectorAll('.e-swimlane-row'));\n var swimRow = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n if (swim[index_1]) {\n swimRow = swim[index_1];\n }\n this.renderSwimlaneRow(swimRow, this.kanbanRows[index_1], false);\n this.renderSingleContent(swimRow, this.kanbanRows[index_1], false);\n }\n cardRow = this.parent.element.querySelector(rowSelector).nextElementSibling;\n [].slice.call(cardRow.children).forEach(function (cell) {\n var cardWrapper = createElement('div', { className: cls.CARD_WRAPPER_CLASS });\n cell.appendChild(cardWrapper);\n cardWrapper.appendChild(_this.renderEmptyCard());\n });\n }\n }\n if (this.parent.sortSettings.sortBy !== 'Index') {\n var field_1 = this.parent.cardSettings.headerField;\n if (this.parent.sortSettings.sortBy === 'Custom') {\n field_1 = this.parent.sortSettings.field;\n }\n if (isNoU(this.parent.swimlaneSettings.keyField)) {\n index = this.getColumnData(key, this.parent.kanbanData).findIndex(function (colData) {\n return colData[\"\" + field_1] === data[\"\" + field_1];\n });\n }\n else {\n var swimlaneDatas = this.parent.getSwimlaneData(data[this.parent.swimlaneSettings.keyField]);\n index = this.getColumnData(key, swimlaneDatas).findIndex(function (colData) { return colData[\"\" + field_1] === data[\"\" + field_1]; });\n }\n }\n else if (this.parent.sortSettings.sortBy === 'Index' &&\n this.parent.sortSettings.field && this.parent.sortSettings.direction === 'Ascending') {\n index = data[this.parent.sortSettings.field] - 1;\n }\n if (cardRow) {\n var td = [].slice.call(cardRow.children).filter(function (e) {\n return e.getAttribute('data-key').replace(/\\s/g, '').split(',').indexOf(key.toString().replace(/\\s/g, '')) !== -1;\n })[0];\n var cardWrapper_2 = td.querySelector('.' + cls.CARD_WRAPPER_CLASS);\n var emptyCard = cardWrapper_2.querySelector('.' + cls.EMPTY_CARD_CLASS);\n if (emptyCard) {\n remove(emptyCard);\n }\n var cardElement_1 = this.renderCard(data);\n if (this.parent.allowDragAndDrop && td.classList.contains(cls.DRAG_CLASS)) {\n this.parent.dragAndDropModule.wireDragEvents(cardElement_1);\n addClass([cardElement_1], cls.DROPPABLE_CLASS);\n }\n var args = { data: data, element: cardElement_1, cancel: false };\n this.parent.trigger(events.cardRendered, args, function (cardArgs) {\n if (!cardArgs.cancel) {\n if (isNoU(index) || cardWrapper_2.children.length === 0) {\n cardWrapper_2.appendChild(cardElement_1);\n }\n else {\n cardWrapper_2.insertBefore(cardElement_1, cardWrapper_2.childNodes[index]);\n }\n }\n });\n }\n };\n LayoutRender.prototype.removeCard = function (data) {\n var cardKey = data[this.parent.cardSettings.headerField];\n var cardElement = this.parent.element.querySelector(\".\" + cls.CARD_CLASS + \"[data-id=\\\"\" + cardKey + \"\\\"]\");\n this.isSelectedCard = cardElement.classList.contains(cls.CARD_SELECTION_CLASS) ? true : false;\n var cardContainer = cardElement.parentElement;\n if (cardElement) {\n remove(cardElement);\n }\n if (cardContainer.querySelectorAll('.' + cls.CARD_CLASS + ':not(.' + cls.CLONED_CARD_CLASS + ')').length === 0) {\n cardContainer.appendChild(this.renderEmptyCard());\n }\n };\n LayoutRender.prototype.wireEvents = function () {\n var _this = this;\n EventHandler.add(this.parent.element, 'click', this.parent.actionModule.clickHandler, this.parent.actionModule);\n EventHandler.add(this.parent.element, 'dblclick', this.parent.actionModule.doubleClickHandler, this.parent.actionModule);\n EventHandler.add(document, Browser.touchStartEvent, this.documentClick, this);\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n EventHandler.add(content, 'scroll', this.onContentScroll, this);\n var cardWrapper = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_WRAPPER_CLASS));\n cardWrapper.forEach(function (wrapper) {\n if (_this.parent.isInitialRender && wrapper.offsetParent) {\n _this.parent.scrollPosition.column[wrapper.offsetParent.getAttribute('data-key')] = { left: 0, top: 0 };\n }\n EventHandler.add(wrapper, 'scroll', _this.onColumnScroll, _this);\n });\n if (this.parent.isAdaptive) {\n this.parent.touchModule.wireTouchEvents();\n content.scrollLeft = this.scrollLeft;\n }\n this.wireDragEvent();\n };\n LayoutRender.prototype.unWireEvents = function () {\n var _this = this;\n EventHandler.remove(this.parent.element, 'click', this.parent.actionModule.clickHandler);\n EventHandler.remove(this.parent.element, 'dblclick', this.parent.actionModule.doubleClickHandler);\n EventHandler.remove(document, Browser.touchStartEvent, this.documentClick);\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n if (content) {\n EventHandler.remove(content, 'scroll', this.onContentScroll);\n if (this.parent.allowDragAndDrop) {\n this.unWireDragEvent();\n }\n }\n var cardWrapper = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_WRAPPER_CLASS));\n if (cardWrapper.length > 0) {\n cardWrapper.forEach(function (wrapper) { EventHandler.remove(wrapper, 'scroll', _this.onColumnScroll); });\n }\n if (this.parent.isAdaptive) {\n this.parent.touchModule.unWireTouchEvents();\n }\n };\n LayoutRender.prototype.wireDragEvent = function () {\n var _this = this;\n if (this.parent.allowDragAndDrop) {\n var cards = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_CELLS_CLASS\n + '.' + cls.DRAG_CLASS + ' .' + cls.CARD_CLASS));\n addClass(cards, cls.DROPPABLE_CLASS);\n cards.forEach(function (card) { return _this.parent.dragAndDropModule.wireDragEvents(card); });\n }\n };\n LayoutRender.prototype.unWireDragEvent = function () {\n var _this = this;\n var cards = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_CELLS_CLASS\n + '.' + cls.DRAG_CLASS + ' .' + cls.CARD_CLASS));\n removeClass(cards, cls.DROPPABLE_CLASS);\n cards.forEach(function (card) { return _this.parent.dragAndDropModule.unWireDragEvents(card); });\n };\n LayoutRender.prototype.destroy = function () {\n this.parent.resetTemplates();\n this.parent.off(events.dataReady, this.initRender);\n this.parent.off(events.contentReady, this.scrollUiUpdate);\n this.unWireEvents();\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n if (header) {\n remove(header);\n }\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n if (content) {\n remove(content);\n }\n if (this.treeViewObj) {\n this.treeViewObj.destroy();\n this.treeViewObj = null;\n }\n if (this.treePopup) {\n this.treePopup.destroy();\n this.treePopup = null;\n }\n var swimlaneToolBarEle = this.parent.element.querySelector('.' + cls.SWIMLANE_HEADER_CLASS);\n if (swimlaneToolBarEle) {\n remove(swimlaneToolBarEle);\n }\n var swimlaneContent = this.parent.element.querySelector('.' + cls.SWIMLANE_CONTENT_CLASS);\n if (swimlaneContent) {\n remove(swimlaneContent);\n }\n };\n return LayoutRender;\n}(MobileLayout));\nexport { LayoutRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { append, createElement, formatUnit, EventHandler, addClass, remove, extend, Browser, isNullOrUndefined as isNoU, removeClass, closest, detach, debounce } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, UrlAdaptor, Predicate } from '@syncfusion/ej2-data';\nimport { MobileLayout } from './mobile-layout';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Kanban layout rendering module\n *\n */\nvar VirtualLayoutRender = /** @class */ (function (_super) {\n __extends(VirtualLayoutRender, _super);\n function VirtualLayoutRender(parent) {\n var _this = _super.call(this, parent) || this;\n _this.parent = parent;\n _this.kanbanRows = [];\n _this.scrollStatus = {};\n _this.offsets = {};\n _this.tempOffsets = {};\n _this.offsetKeys = [];\n _this.columnKeys = [];\n _this.scrollLeft = 0;\n _this.frozenOrder = 0;\n if (_this.parent.enableVirtualization) {\n _this.parent.on(events.dataReady, _this.initRender, _this);\n _this.parent.on(events.contentReady, _this.scrollUiUpdate, _this);\n }\n return _this;\n }\n VirtualLayoutRender.prototype.initRender = function () {\n this.isSwimlane = !isNoU(this.parent.swimlaneSettings.keyField) &&\n this.parent.swimlaneSettings.keyField.trim().length > 1 ? true : false;\n this.query = this.parent.query instanceof Query ? this.parent.query : new Query();\n if (this.parent.columns.length === 0) {\n return;\n }\n this.cardHeight = this.cardHeightCalculate();\n this.columnData = this.getColumnCards();\n this.kanbanRows = this.getRows();\n if (this.parent.isAdaptive) {\n var parent_1 = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n if (parent_1) {\n this.scrollLeft = parent_1.scrollLeft;\n }\n }\n this.destroy();\n this.parent.on(events.dataReady, this.initRender, this);\n this.parent.on(events.contentReady, this.scrollUiUpdate, this);\n var header = createElement('div', { className: cls.HEADER_CLASS });\n this.parent.element.appendChild(header);\n this.renderHeader(header);\n if (!this.isSwimlane) {\n this.renderContent();\n this.renderCards();\n }\n this.renderValidation();\n this.parent.renderTemplates();\n this.parent.notify(events.contentReady, {});\n this.wireEvents();\n if (this.parent.isInitialRender) {\n this.parent.isInitialRender = false;\n }\n };\n VirtualLayoutRender.prototype.cardHeightCalculate = function () {\n var cardHeight;\n if (this.parent.cardHeight === 'auto') {\n cardHeight = 100 + 8; // 8 is the margin bottom value of the card.\n }\n else {\n cardHeight = parseInt(formatUnit(this.parent.cardHeight).split('px')[0], 10) + 8;\n }\n return cardHeight;\n };\n VirtualLayoutRender.prototype.renderHeader = function (header) {\n var headerWrap = createElement('div', { className: this.parent.swimlaneSettings.keyField ? cls.SWIMLANE_CLASS : '' });\n header.appendChild(headerWrap);\n var headerTable = createElement('table', {\n className: cls.TABLE_CLASS + ' ' + cls.HEADER_TABLE_CLASS,\n attrs: { 'role': 'presentation' }\n });\n headerWrap.appendChild(headerTable);\n this.renderColGroup(headerTable);\n var tableHead = createElement('thead');\n headerTable.appendChild(tableHead);\n if (this.parent.stackedHeaders.length > 0) {\n tableHead.appendChild(this.createStackedRow(this.parent.stackedHeaders));\n }\n var tr = createElement('tr', { className: cls.HEADER_ROW_CLASS });\n tableHead.appendChild(tr);\n var _loop_1 = function (column) {\n if (this_1.isColumnVisible(column)) {\n var index = this_1.parent.actionModule.columnToggleArray.indexOf(column.keyField.toString());\n var th_1 = createElement('th', {\n className: index === -1 ? cls.HEADER_CELLS_CLASS : cls.HEADER_CELLS_CLASS + ' ' + cls.COLLAPSED_CLASS,\n attrs: { 'data-role': 'kanban-column', 'data-key': column.keyField.toString() }\n });\n var classList = [];\n if (column.allowToggle) {\n classList.push(cls.HEADER_ROW_TOGGLE_CLASS);\n if (!column.isExpanded) {\n classList.push(cls.COLLAPSED_CLASS);\n }\n }\n addClass([th_1], classList);\n var headerWrapper = createElement('div', { className: cls.HEADER_WRAP_CLASS });\n th_1.appendChild(headerWrapper);\n var noOfCard = this_1.parent.dataModule.isRemote() ?\n this_1.parent.columnDataCount[column.keyField] : this_1.columnData[column.keyField].length;\n var headerTitle = createElement('div', { className: cls.HEADER_TITLE_CLASS });\n headerWrapper.appendChild(headerTitle);\n if (column.template) {\n var templateArgs = {\n keyField: column.keyField, headerText: column.headerText, minCount: column.minCount, maxCount: column.maxCount,\n allowToggle: column.allowToggle, isExpanded: column.isExpanded, showItemCount: column.showItemCount, count: noOfCard\n };\n addClass([th_1], cls.TEMPLATE_CLASS);\n var templateId = this_1.parent.element.id + '_columnTemplate';\n var templateHeader = this_1.parent.templateParser(column.template)(templateArgs, this_1.parent, 'columnTemplate', templateId, false);\n append(templateHeader, headerTitle);\n }\n else {\n var header_1 = createElement('div', { className: cls.HEADER_TEXT_CLASS, innerHTML: column.headerText });\n headerTitle.appendChild(header_1);\n if (column.showItemCount) {\n var itemCount = createElement('div', {\n className: cls.CARD_ITEM_COUNT_CLASS,\n innerHTML: '- ' + noOfCard.toString() + ' ' + this_1.parent.localeObj.getConstant('items')\n });\n headerTitle.appendChild(itemCount);\n }\n }\n if (column.allowToggle) {\n var isExpand = (column.isExpanded && index === -1) ? true : false;\n var name_1 = (isExpand) ? cls.COLUMN_EXPAND_CLASS : cls.COLUMN_COLLAPSE_CLASS;\n var icon = createElement('div', {\n className: cls.HEADER_ICON_CLASS + ' ' + cls.ICON_CLASS + ' ' + name_1,\n attrs: { 'tabindex': '0' }\n });\n icon.setAttribute('aria-label', isExpand ? column.keyField + ' Expand' : column.keyField + ' Collapse');\n th_1.setAttribute('aria-expanded', isExpand.toString());\n headerWrapper.appendChild(icon);\n }\n var dataObj = [{ keyField: column.keyField, textField: column.headerText, count: noOfCard }];\n var args = { data: dataObj, element: tr, cancel: false, requestType: 'headerRow' };\n this_1.parent.trigger(events.queryCellInfo, args, function (columnArgs) {\n if (!columnArgs.cancel) {\n tr.appendChild(th_1);\n }\n });\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n _loop_1(column);\n }\n };\n VirtualLayoutRender.prototype.renderContent = function () {\n var content = createElement('div', { className: cls.CONTENT_CLASS });\n this.parent.element.appendChild(content);\n var contentWrap = createElement('div', { className: this.parent.swimlaneSettings.keyField ? cls.SWIMLANE_CLASS : '' });\n content.appendChild(contentWrap);\n var contentTable = createElement('table', {\n className: cls.TABLE_CLASS + ' ' + cls.CONTENT_TABLE_CLASS,\n attrs: { 'role': 'presentation' }\n });\n contentWrap.appendChild(contentTable);\n this.renderColGroup(contentTable);\n var tBody = createElement('tbody');\n contentTable.appendChild(tBody);\n var isCollaspsed = false;\n for (var _i = 0, _a = this.kanbanRows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (this.parent.swimlaneSettings.keyField && this.parent.swimlaneToggleArray.length !== 0) {\n var index = this.parent.swimlaneToggleArray.indexOf(row.keyField);\n isCollaspsed = index !== -1;\n }\n this.renderSingleContent(tBody, row, isCollaspsed);\n }\n };\n VirtualLayoutRender.prototype.renderSingleContent = function (tBody, row, isCollaspsed) {\n var className = isCollaspsed ? cls.CONTENT_ROW_CLASS + ' ' + cls.COLLAPSED_CLASS : cls.CONTENT_ROW_CLASS;\n var tr = createElement('tr', { className: className, attrs: { 'aria-expanded': 'true' } });\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n if (this.isColumnVisible(column)) {\n var index = this.parent.actionModule.columnToggleArray.indexOf(column.keyField.toString());\n var className_1 = index === -1 ? cls.CONTENT_CELLS_CLASS : cls.CONTENT_CELLS_CLASS + ' ' + cls.COLLAPSED_CLASS;\n var dragClass = (column.allowDrag ? ' ' + cls.DRAG_CLASS : '') + (column.allowDrop ? ' ' + cls.DROP_CLASS\n + ' ' + cls.DROPPABLE_CLASS : '');\n var td = createElement('td', {\n className: className_1 + dragClass,\n attrs: { 'data-role': 'kanban-column', 'data-key': column.keyField.toString(), 'aria-expanded': 'true',\n 'tabindex': '0', 'role': 'navigation' }\n });\n if (column.allowToggle && !column.isExpanded || index !== -1) {\n addClass([td], cls.COLLAPSED_CLASS);\n var text = (column.showItemCount ? '[' + (this.parent.dataModule.isRemote() ?\n this.parent.columnDataCount[column.keyField] : this.getColumnData(column.keyField).length) +\n '] ' : '') + column.headerText;\n td.appendChild(createElement('div', { className: cls.COLLAPSE_HEADER_TEXT_CLASS, innerHTML: text }));\n td.setAttribute('aria-expanded', 'false');\n }\n if (column.showAddButton) {\n var button = createElement('div', { className: cls.SHOW_ADD_BUTTON, attrs: { 'tabindex': '-1' } });\n button.appendChild(createElement('div', { className: cls.SHOW_ADD_ICON + ' ' + cls.ICON_CLASS }));\n td.appendChild(button);\n }\n tr.appendChild(td);\n if (this.parent.enableVirtualization) {\n var headerHeight = this.parent.element.querySelector('.e-kanban-header').getBoundingClientRect().height;\n //'15' is reduced for optimal padding in the bottom and to avoid page scrollbar appear in the height auto case.\n if (this.parent.height === 'auto') {\n td.style.height = window.innerHeight - (headerHeight + this.parent.element.getBoundingClientRect().top + 15) + 'px';\n }\n else {\n td.style.height = parseInt(formatUnit(this.parent.height).split('px')[0], 10) - (headerHeight + 15) + 'px';\n }\n }\n }\n }\n var dataObj = [{ keyField: row.keyField, textField: row.textField, count: row.count }];\n var args = { data: dataObj, element: tr, cancel: false, requestType: 'contentRow' };\n this.parent.trigger(events.queryCellInfo, args, function (columnArgs) {\n if (!columnArgs.cancel) {\n if (tBody.classList.contains('e-swimlane-row')) {\n tBody.insertAdjacentElement('beforebegin', tr);\n }\n else {\n tBody.appendChild(tr);\n }\n }\n });\n };\n VirtualLayoutRender.prototype.windowResize = function () {\n var cloumnsTDElem = this.parent.element.querySelectorAll('.' + cls.CONTENT_CELLS_CLASS);\n var headerHeight = this.parent.element.querySelector('.e-kanban-header').getBoundingClientRect().height;\n for (var j = 0; j < cloumnsTDElem.length; j++) {\n if (this.parent.height === 'auto') {\n cloumnsTDElem[j].style.height = window.innerHeight - (headerHeight + this.parent.element.getBoundingClientRect().top + 15) + 'px';\n }\n else {\n cloumnsTDElem[j].style.height = parseInt(formatUnit(this.parent.height).split('px')[0], 10) - (headerHeight + 15) + 'px';\n }\n }\n };\n VirtualLayoutRender.prototype.refreshColumnData = function (draggedColumnKey, droppedColumnKey, requestType, crudKeyField) {\n var _this = this;\n var cardRows = [].slice.call(this.parent.element.querySelectorAll('.e-content-row:not(.e-swimlane-row)'));\n var isCRUD = (requestType === 'cardChanged' || requestType === 'cardCreated' || requestType === 'cardRemoved')\n && !isNoU(crudKeyField);\n cardRows.forEach(function (tr) {\n var _loop_2 = function (column) {\n if (_this.isColumnVisible(column) && (column.keyField === draggedColumnKey || column.keyField === droppedColumnKey)\n || isCRUD) {\n var cards_1 = 0;\n var blocks = [];\n var columnData = _this.getColumnCards()[column.keyField];\n var currentColumnDataCount = _this.parent.dataModule.isRemote() ?\n _this.parent.columnDataCount[column.keyField] : columnData.length;\n var overallHeight = _this.cardHeight * currentColumnDataCount;\n // eslint-disable-next-line prefer-spread\n blocks = Array.apply(null, Array(currentColumnDataCount)).map(function () { return ++cards_1; });\n var columnWrapper = tr.querySelector('[data-key=\"' + column.keyField + '\"]');\n var singleIndexCardCount = Math.ceil(parseInt(columnWrapper.style.height.split('px')[0], 10) / _this.cardHeight);\n _this.offsets[1] = singleIndexCardCount * _this.cardHeight;\n for (var i = 1; i < blocks.length; i++) {\n _this.offsets[blocks[i]] = (_this.offsets[blocks[i - 1]]) + (singleIndexCardCount * _this.cardHeight);\n _this.tempOffsets[blocks[i]] = _this.offsets[blocks[i] - 1] | 0;\n }\n var cardWrapper = columnWrapper.querySelector('.' + cls.CARD_WRAPPER_CLASS);\n var maxBlock = currentColumnDataCount % 2 === 0 ? currentColumnDataCount - 2 : currentColumnDataCount - 1;\n var viewInfo = _this.getInfoFromView(_this.scrollStatus[column.keyField]);\n var transformY = _this.getTranslateY(viewInfo);\n var cardVirtualElement = cardWrapper.querySelector('.' + cls.CARD_VIRTUAL_WRAPPER_CLASS);\n cardVirtualElement.style.maxHeight = currentColumnDataCount * _this.cardHeight + 'px';\n _this.setPadding(transformY, cardVirtualElement, currentColumnDataCount);\n _this.currentStatus = {\n column: column.keyField,\n columnOverAllHeight: overallHeight,\n columnHeight: parseInt(columnWrapper.style.height.split('px')[0], 10),\n previousScrollTop: _this.scrollStatus[column.keyField].currentScrollTop,\n currentScrollTop: cardWrapper.scrollTop,\n scrollDirection: _this.scrollStatus[column.keyField].scrollDirection,\n currentBlockIndex: _this.scrollStatus[column.keyField].currentBlockIndex,\n oldBlockIndex: _this.scrollStatus[column.keyField].oldBlockIndex,\n offsets: _this.offsets,\n tempOffsets: _this.tempOffsets,\n totalColumnData: currentColumnDataCount,\n singleIndexCardCount: singleIndexCardCount,\n maxBlock: maxBlock\n };\n _this.scrollStatus[column.keyField] = _this.currentStatus;\n }\n };\n for (var _i = 0, _a = _this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n _loop_2(column);\n }\n });\n };\n VirtualLayoutRender.prototype.renderCards = function () {\n var _this = this;\n var cardRows = [].slice.call(this.parent.element.querySelectorAll('.e-content-row:not(.e-swimlane-row)'));\n var swimlaneRows = [].slice.call(this.parent.element.querySelectorAll('.e-content-row.e-swimlane-row'));\n var removeTrs = [];\n var columnTransition = false;\n cardRows.forEach(function (tr, index) {\n var dataCount = 0;\n var _loop_3 = function (column) {\n if (_this.isColumnVisible(column)) {\n var cards_2 = 0;\n var currentScrollIndex = 0;\n var blocks = [];\n _this.offsets = {};\n _this.tempOffsets = {};\n var columnData = _this.columnData[column.keyField];\n var currentColumnDataCount = _this.parent.dataModule.isRemote()\n ? _this.parent.columnDataCount[column.keyField] : columnData.length;\n dataCount += currentColumnDataCount;\n var overallHeight = (_this.cardHeight * currentColumnDataCount) + 7; //7 is difference between top space of the scroll element\n var columnWrapper = tr.querySelector('[data-key=\"' + column.keyField + '\"]');\n var singleIndexCardCount = Math.ceil(parseFloat(columnWrapper.style.height.split('px')[0]) / _this.cardHeight);\n var currentColumnBlock = singleIndexCardCount > currentColumnDataCount ? currentColumnDataCount :\n Math.floor(currentColumnDataCount / singleIndexCardCount);\n // eslint-disable-next-line prefer-spread\n blocks = Array.apply(null, Array(currentColumnDataCount)).map(function () { return ++cards_2; });\n _this.offsets[1] = singleIndexCardCount * _this.cardHeight + 7;\n for (var i = 1; i < blocks.length; i++) {\n _this.offsets[blocks[i]] = (_this.offsets[blocks[i - 1]]) + (singleIndexCardCount * _this.cardHeight);\n _this.tempOffsets[blocks[i]] = _this.offsets[blocks[i] - 1] | 0;\n }\n var cardWrapper = createElement('div', {\n className: cls.CARD_WRAPPER_CLASS, attrs: { 'role': 'listbox' }\n });\n var cardVirtualWrapper_1 = createElement('div', {\n className: cls.CARD_VIRTUAL_WRAPPER_CLASS, attrs: { 'role': 'listbox' }\n });\n cardWrapper.appendChild(cardVirtualWrapper_1);\n var maxBlock = currentColumnBlock % 2 === 0 ? currentColumnBlock : currentColumnBlock + 1;\n _this.currentStatus = {\n column: column.keyField,\n columnOverAllHeight: overallHeight,\n columnHeight: parseInt(columnWrapper.style.height.split('px')[0], 10),\n previousScrollTop: null,\n currentScrollTop: cardWrapper.scrollTop,\n scrollDirection: null,\n currentBlockIndex: [1, 2],\n oldBlockIndex: [1, 2],\n offsets: _this.offsets,\n tempOffsets: _this.tempOffsets,\n totalColumnData: currentColumnDataCount,\n singleIndexCardCount: singleIndexCardCount,\n maxBlock: maxBlock\n };\n _this.scrollStatus[column.keyField] = _this.currentStatus;\n if (column.transitionColumns.length > 0) {\n columnTransition = true;\n }\n if (!columnTransition && isNoU(_this.parent.swimlaneSettings.keyField)) {\n var borderElem = createElement('div', { className: cls.BORDER_CLASS });\n columnWrapper.appendChild(borderElem);\n }\n columnWrapper.appendChild(cardWrapper);\n if (currentColumnDataCount > 0) {\n var _loop_4 = function (i) {\n var cardText = columnData[i][_this.parent.cardSettings.headerField];\n var cardIndex = _this.parent.actionModule.selectionArray.indexOf(cardText);\n var cardElement = _this.renderCard(columnData[i]);\n if (cardIndex !== -1) {\n cardElement.setAttribute('aria-selected', 'true');\n addClass([cardElement], cls.CARD_SELECTION_CLASS);\n }\n var args = { data: columnData[i], element: cardElement, cancel: false };\n _this.parent.trigger(events.cardRendered, args, function (cardArgs) {\n if (!cardArgs.cancel) {\n cardVirtualWrapper_1.appendChild(cardElement);\n }\n });\n };\n for (var i = currentScrollIndex; i < singleIndexCardCount * 2 && i < columnData.length; i++) {\n _loop_4(i);\n }\n cardVirtualWrapper_1.style.maxHeight = _this.cardHeight * currentColumnDataCount + 'px';\n }\n else {\n cardVirtualWrapper_1.appendChild(_this.renderEmptyCard());\n }\n _this.setPadding(0, cardVirtualWrapper_1, currentColumnDataCount);\n }\n };\n for (var _i = 0, _a = _this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n _loop_3(column);\n }\n if (dataCount === 0) {\n removeTrs.push(tr);\n if (swimlaneRows.length > 0) {\n removeTrs.push(swimlaneRows[index]);\n }\n }\n });\n if (!this.parent.swimlaneSettings.showEmptyRow && (this.parent.kanbanData.length === 0 && !this.parent.showEmptyColumn)) {\n removeTrs.forEach(function (tr) { return remove(tr); });\n }\n };\n VirtualLayoutRender.prototype.renderCard = function (data) {\n var cardElement = createElement('div', {\n className: cls.CARD_CLASS,\n attrs: {\n 'data-id': data[this.parent.cardSettings.headerField], 'data-key': data[this.parent.keyField],\n 'aria-selected': 'false', 'tabindex': '-1', 'role': 'option'\n }\n });\n cardElement.style.height = this.cardHeight - 8 + 'px'; // Since in the public card height calculation margin bottom is added, so it reduced here.\n if (this.parent.cardSettings.template) {\n addClass([cardElement], cls.TEMPLATE_CLASS);\n var templateId = this.parent.element.id + '_cardTemplate';\n var cardTemplate = this.parent.templateParser(this.parent.cardSettings.template)(data, this.parent, 'cardTemplate', templateId, false);\n append(cardTemplate, cardElement);\n }\n else {\n var tooltipClass = this.parent.enableTooltip ? ' ' + cls.TOOLTIP_TEXT_CLASS : '';\n if (this.parent.cardSettings.showHeader) {\n var cardHeader = createElement('div', { className: cls.CARD_HEADER_CLASS });\n var cardCaption = createElement('div', { className: cls.CARD_HEADER_TEXT_CLASS });\n var cardText = createElement('div', {\n className: cls.CARD_HEADER_TITLE_CLASS + tooltipClass,\n innerHTML: data[this.parent.cardSettings.headerField] || ''\n });\n cardHeader.appendChild(cardCaption);\n cardCaption.appendChild(cardText);\n cardElement.appendChild(cardHeader);\n }\n var cardContent = createElement('div', {\n className: cls.CARD_CONTENT_CLASS + tooltipClass,\n innerHTML: data[this.parent.cardSettings.contentField] || ''\n });\n cardElement.appendChild(cardContent);\n if (this.parent.cardSettings.tagsField && data[this.parent.cardSettings.tagsField]) {\n var cardTags = createElement('div', { className: cls.CARD_TAGS_CLASS });\n var tags = data[this.parent.cardSettings.tagsField].toString().split(',');\n for (var _i = 0, tags_1 = tags; _i < tags_1.length; _i++) {\n var tag = tags_1[_i];\n cardTags.appendChild(createElement('div', {\n className: cls.CARD_TAG_CLASS + ' ' + cls.CARD_LABEL_CLASS, innerHTML: tag\n }));\n }\n cardElement.appendChild(cardTags);\n }\n if (this.parent.cardSettings.grabberField && data[this.parent.cardSettings.grabberField]) {\n addClass([cardElement], cls.CARD_COLOR_CLASS);\n cardElement.style.borderLeftColor = data[this.parent.cardSettings.grabberField];\n }\n if (this.parent.cardSettings.footerCssField) {\n var cardFields = createElement('div', { className: cls.CARD_FOOTER_CLASS });\n var keys = data[this.parent.cardSettings.footerCssField].split(',');\n for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {\n var key = keys_1[_a];\n cardFields.appendChild(createElement('div', {\n className: key.trim() + ' ' + cls.CARD_FOOTER_CSS_CLASS\n }));\n }\n cardElement.appendChild(cardFields);\n }\n }\n return cardElement;\n };\n VirtualLayoutRender.prototype.renderEmptyCard = function () {\n var emptyCard = createElement('span', {\n className: cls.EMPTY_CARD_CLASS,\n innerHTML: this.parent.localeObj.getConstant('noCard')\n });\n return emptyCard;\n };\n VirtualLayoutRender.prototype.renderColGroup = function (table) {\n var _this = this;\n var colGroup = createElement('colgroup');\n this.parent.columns.forEach(function (column) {\n if (_this.isColumnVisible(column)) {\n var index = _this.parent.actionModule.columnToggleArray.indexOf(column.keyField.toString());\n var isToggle = column.allowToggle && !column.isExpanded;\n var className = index === -1 ? (isToggle ? cls.COLLAPSED_CLASS : '') : cls.COLLAPSED_CLASS;\n var col = createElement('col', {\n className: className,\n attrs: { 'data-key': column.keyField.toString() },\n styles: _this.parent.isAdaptive ? 'width: ' +\n (isToggle ? formatUnit(events.toggleWidth) : formatUnit(_this.getWidth())) : ''\n });\n colGroup.appendChild(col);\n }\n });\n table.appendChild(colGroup);\n };\n VirtualLayoutRender.prototype.getRows = function () {\n var kanbanRows = [];\n kanbanRows.push({ keyField: '', textField: '' });\n return kanbanRows;\n };\n VirtualLayoutRender.prototype.createStackedRow = function (rows) {\n var tr = createElement('tr', { className: cls.HEADER_ROW_CLASS + ' ' + cls.STACKED_HEADER_ROW_CLASS });\n var stackedHeaders = [];\n this.parent.columns.forEach(function (column) {\n var headerText = '';\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.keyFields.indexOf(column.keyField.toString()) !== -1) {\n headerText = row.text;\n }\n }\n stackedHeaders.push(headerText);\n });\n for (var h = 0; h < stackedHeaders.length; h++) {\n var colSpan = 1;\n for (var j = h + 1; j < stackedHeaders.length; j++) {\n if ((stackedHeaders[h] !== '') && (stackedHeaders[j] !== '') && stackedHeaders[h] === stackedHeaders[j]) {\n colSpan++;\n }\n else {\n break;\n }\n }\n var div = createElement('div', { className: cls.HEADER_TEXT_CLASS, innerHTML: stackedHeaders[h] });\n var th = createElement('th', {\n className: cls.HEADER_CELLS_CLASS + ' ' + cls.STACKED_HEADER_CELL_CLASS,\n attrs: { 'colspan': colSpan.toString() }\n });\n tr.appendChild(th).appendChild(div);\n h += colSpan - 1;\n }\n return tr;\n };\n VirtualLayoutRender.prototype.scrollUiUpdate = function () {\n var _this = this;\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n var height = this.parent.element.offsetHeight - header.offsetHeight;\n if (this.parent.isAdaptive) {\n height = window.innerHeight - (header.offsetHeight + events.bottomSpace);\n var swimlaneToolbar = this.parent.element.querySelector('.' + cls.SWIMLANE_HEADER_CLASS);\n if (swimlaneToolbar) {\n height -= swimlaneToolbar.offsetHeight;\n }\n var cardWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_CELLS_CLASS));\n cardWrappers.forEach(function (cell) {\n var cardWrapper = cell.querySelector('.' + cls.CARD_WRAPPER_CLASS);\n if (!cardWrapper.classList.contains(cls.MULTI_CARD_WRAPPER_CLASS)) {\n cardWrapper.style.height = formatUnit(height);\n EventHandler.add(cell, 'touchmove', _this.onAdaptiveScroll, _this);\n }\n });\n }\n if (this.parent.height !== 'auto' && this.parent.height !== '100%') {\n content.style.height = formatUnit(height);\n }\n [].slice.call(header.children).forEach(function (node) {\n var paddingValue = 0;\n if ((content.offsetWidth - content.clientWidth) > 0) {\n paddingValue = 17;\n if ((content.offsetHeight - content.clientHeight) > 0) {\n node.style.width = formatUnit(content.clientWidth);\n }\n }\n if (_this.parent.enableRtl) {\n node.style.paddingLeft = formatUnit(paddingValue);\n }\n else {\n node.style.paddingRight = formatUnit(paddingValue);\n }\n });\n this.updateScrollPosition();\n };\n VirtualLayoutRender.prototype.onContentScroll = function (e) {\n var target = e.target;\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n [].slice.call(header.children).forEach(function (node) { node.scrollLeft = target.scrollLeft; });\n this.parent.scrollPosition.content = { left: target.scrollLeft, top: target.scrollTop };\n };\n VirtualLayoutRender.prototype.getOffset = function (block, viewInfo) {\n return Math.min(viewInfo.offsets[block] | 0, viewInfo.offsets[viewInfo.maxBlock] | 0);\n };\n VirtualLayoutRender.prototype.getTranslateY = function (viewInfo) {\n var block = (viewInfo.newBlockIndex[0] || 1) - 1;\n var translate = this.getOffset(block, viewInfo);\n var endTranslate = this.getOffset(viewInfo.newBlockIndex[viewInfo.newBlockIndex.length - 1], viewInfo);\n var result = translate > viewInfo.currentScrollTop ?\n this.getOffset(block - 1, viewInfo) : endTranslate < (viewInfo.currentScrollTop + viewInfo.columnHeight) ?\n this.getOffset(block + 1, viewInfo) : translate;\n return result;\n };\n VirtualLayoutRender.prototype.setPadding = function (paddingTop, scrollElem, dataCount, isScrolledToLast, direction) {\n if (isScrolledToLast && direction === 'down') {\n scrollElem.style.paddingTop = paddingTop + \"px\";\n scrollElem.style.paddingBottom = '0px';\n }\n else {\n scrollElem.style.paddingTop = paddingTop + \"px\";\n scrollElem.style.paddingBottom = this.cardHeight * dataCount - paddingTop + \"px\";\n }\n };\n VirtualLayoutRender.prototype.getData = function (keyField, column, take, skip) {\n var query = this.query.clone();\n var predicate = new Predicate(keyField, 'equal', column, true);\n query.where(predicate);\n query.take(take);\n query.skip(skip);\n query.addParams('KanbanVirtualScroll', 'KanbanVirtualScroll');\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise({ requestType: '' }, query);\n return def.promise;\n }\n return this.parent.dataModule.dataManager.executeQuery(query);\n };\n VirtualLayoutRender.prototype.eventPromise = function (args, query) {\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n state.updateData = def.resolve;\n state.action = args;\n return def;\n };\n VirtualLayoutRender.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 VirtualLayoutRender.prototype.dataManagerSuccess = function (e, type) {\n var _this = this;\n var resultData;\n if (type) {\n resultData = extend([], !isNoU(e.result.result) ?\n e.result.result : e.result, null, true);\n }\n else {\n this.parent.trigger(events.dataBinding, e, function (args) {\n resultData = extend([], !isNoU(args.result.result) ?\n args.result.result : args.result, null, true);\n _this.parent.trigger(events.dataBound, null, function () { return _this.parent.hideSpinner(); });\n });\n }\n return resultData;\n };\n VirtualLayoutRender.prototype.dataManagerFailure = function (e) {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.trigger(events.actionFailure, { error: e }, function () { return _this.parent.hideSpinner(); });\n };\n VirtualLayoutRender.prototype.onColScrollShowSkeleton = function (args) {\n var target = args.target;\n if (this.parent.element.querySelectorAll('.e-card-skeleton-wrapper').length > 0) {\n return;\n }\n var key = target.parentElement.getAttribute('data-key');\n var previousScrollTop = this.scrollStatus[key].previousScrollTop;\n var parentElemHeight = target.parentElement.clientHeight;\n if ((target.scrollTop - previousScrollTop) > parentElemHeight || (previousScrollTop - target.scrollTop) > parentElemHeight) {\n this.showSkeleton(target, this.scrollStatus[key].singleIndexCardCount);\n }\n };\n VirtualLayoutRender.prototype.showSkeleton = function (cardWrapper, skeletonCount) {\n var cardVirtualSkeletonWrapper = createElement('div', {\n className: 'e-card-virtual-skeleton-wrapper', attrs: { 'role': 'listbox' }\n });\n cardWrapper.parentElement.insertBefore(cardVirtualSkeletonWrapper, cardWrapper);\n cardVirtualSkeletonWrapper.style.position = 'absolute';\n cardVirtualSkeletonWrapper.style.zIndex = '10';\n for (var j = 0; j < skeletonCount; j++) {\n var skeletonWrapper = createElement('div', { className: 'e-card-skeleton-wrapper' });\n var skeleton = createElement('span', { className: 'e-skeleton e-skeleton-text e-shimmer-wave' });\n skeleton.style.height = this.cardHeight + 'px';\n // Assumption fix, issue reproduce in rare cases only .\n if (!isNoU(cardWrapper.querySelector('.e-card'))) {\n skeleton.style.width = cardWrapper.querySelector('.e-card').getBoundingClientRect().width + 'px';\n }\n skeletonWrapper.appendChild(skeleton);\n cardVirtualSkeletonWrapper.appendChild(skeletonWrapper);\n }\n };\n VirtualLayoutRender.prototype.hideSkeleton = function (cardWrapper) {\n setTimeout(function () {\n var skeletonWrapper = cardWrapper.querySelectorAll('.e-card-virtual-skeleton-wrapper');\n for (var i = 0; i < skeletonWrapper.length; i++) {\n detach(skeletonWrapper[i]);\n }\n }, 50);\n };\n VirtualLayoutRender.prototype.onColumnScroll = function (e) {\n var _this = this;\n var target = e.target;\n var currentScrolledHeight = target.scrollTop;\n var columnKey;\n if (target.offsetParent) {\n columnKey = target.offsetParent.getAttribute('data-key');\n this.parent.scrollPosition.column[columnKey] = { left: target.scrollLeft, top: target.scrollTop };\n }\n if (this.parent.enableVirtualization) {\n var cardWrapper_1 = target;\n var dataCount = 0;\n var columnData = this.getColumnCards()[columnKey];\n var currentColumnDataCount = this.parent.dataModule.isRemote() ?\n this.parent.columnDataCount[columnKey] : columnData.length;\n dataCount += currentColumnDataCount;\n var overallHeight = this.cardHeight * dataCount;\n var removeIndex = [];\n var addIndex = [];\n this.checkScrollDirection(columnKey, currentScrolledHeight);\n if (this.findScrollSpeed(target, columnKey) === 'fast' && currentScrolledHeight > overallHeight) {\n this.hideSkeleton(cardWrapper_1.parentElement);\n return;\n }\n var maxBlock = this.scrollStatus[columnKey].maxBlock;\n var isLastBlockRendered = this.scrollStatus[columnKey].currentBlockIndex.indexOf(maxBlock) > -1;\n var isDuplicateScroll = e.timeStamp - this.scrollStatus[columnKey].previousTimeStamps < 300;\n if (isLastBlockRendered && !isNoU(this.scrollStatus[columnKey].previousTimeStamps) && isDuplicateScroll) {\n this.hideSkeleton(cardWrapper_1.parentElement);\n return;\n }\n this.scrollStatus[columnKey].previousTimeStamps = e.timeStamp;\n var viewInfo_1 = this.getInfoFromView(this.scrollStatus[columnKey]);\n removeIndex = viewInfo_1.currentBlockIndex.filter(function (val) {\n return viewInfo_1.newBlockIndex.indexOf(val) === -1;\n });\n addIndex = viewInfo_1.newBlockIndex.filter(function (val) {\n return viewInfo_1.currentBlockIndex.indexOf(val) === -1;\n });\n var isScrolledToLast = currentScrolledHeight + target.clientHeight >= overallHeight;\n var transformY = isScrolledToLast ? overallHeight - (cardWrapper_1.querySelector('.' + cls.CARD_VIRTUAL_WRAPPER_CLASS).childElementCount * this.cardHeight)\n : this.getTranslateY(viewInfo_1);\n var cardVirtualElement_1 = cardWrapper_1.querySelector('.' + cls.CARD_VIRTUAL_WRAPPER_CLASS);\n if (removeIndex.length > 0) {\n var removeStartIndex = void 0;\n var removeEndIndex = void 0;\n if (removeIndex[0] === 1) {\n removeStartIndex = 0;\n removeEndIndex = (removeIndex.length * this.scrollStatus[columnKey].singleIndexCardCount) - 1;\n }\n else {\n removeStartIndex = ((removeIndex[0] - 1) * this.scrollStatus[columnKey].singleIndexCardCount);\n removeEndIndex = removeStartIndex + (removeIndex.length * this.scrollStatus[columnKey].singleIndexCardCount);\n }\n this.removeCardsOnScroll(cardVirtualElement_1, this.scrollStatus[columnKey].scrollDirection === 'down' ? true : false, removeStartIndex, removeEndIndex);\n }\n if (addIndex.length > 0) {\n if (this.parent.dataModule.isRemote()) {\n var visibleStartIndex = ((addIndex[0] - 1) * this.scrollStatus[columnKey].singleIndexCardCount);\n var resultData_1 = [];\n var dataManager = this.getData(this.parent.keyField, columnKey, (this.scrollStatus[columnKey].singleIndexCardCount * addIndex.length), visibleStartIndex);\n dataManager.then(function (e) {\n resultData_1 = _this.dataManagerSuccess(e);\n _this.scrollCardInsert(columnKey, cardVirtualElement_1, target, currentScrolledHeight, cardWrapper_1, _this.scrollStatus[columnKey].scrollDirection === 'down' ? 0 : (resultData_1.length - 1), true, resultData_1, null);\n }).catch(function (e) { return _this.dataManagerFailure(e); });\n }\n else {\n var visibleStartIndex = this.scrollStatus[columnKey].scrollDirection === 'down' ? ((addIndex[0] - 1) * this.scrollStatus[columnKey].singleIndexCardCount) :\n ((addIndex[0] - 1) * this.scrollStatus[columnKey].singleIndexCardCount)\n + (this.scrollStatus[columnKey].singleIndexCardCount * addIndex.length) - 1;\n var visibleLength = this.scrollStatus[columnKey].scrollDirection === 'down' ? visibleStartIndex + (this.scrollStatus[columnKey].singleIndexCardCount * addIndex.length) :\n ((addIndex[0] - 1) * this.scrollStatus[columnKey].singleIndexCardCount);\n this.scrollCardInsert(columnKey, cardVirtualElement_1, target, currentScrolledHeight, cardWrapper_1, visibleStartIndex, false, columnData, visibleLength);\n }\n }\n this.scrollStatus[columnKey].currentBlockIndex = this.scrollStatus[columnKey].newBlockIndex;\n this.setPadding(transformY, cardVirtualElement_1, currentColumnDataCount, isScrolledToLast, this.scrollStatus[columnKey].scrollDirection);\n viewInfo_1.currentBlockIndex = viewInfo_1.newBlockIndex;\n this.parent.renderTemplates();\n this.hideSkeleton(cardWrapper_1.parentElement);\n }\n };\n VirtualLayoutRender.prototype.checkScrollDirection = function (columnKey, currentScrolledHeight) {\n // Update the previous and current scroll top value\n this.scrollStatus[columnKey].previousScrollTop = this.scrollStatus[columnKey].currentScrollTop;\n this.scrollStatus[columnKey].currentScrollTop = currentScrolledHeight;\n // Check the scroll direction\n if (currentScrolledHeight > this.scrollStatus[columnKey].previousScrollTop) {\n this.scrollStatus[columnKey].scrollDirection = 'down';\n }\n else {\n this.scrollStatus[columnKey].scrollDirection = 'up';\n }\n };\n VirtualLayoutRender.prototype.findScrollSpeed = function (target, columnKey) {\n // Find the scroll speed\n if (this.scrollStatus[columnKey].scrollDirection === 'down' &&\n (target.scrollTop - this.scrollStatus[columnKey].previousScrollTop > target.clientHeight)) {\n return 'fast';\n }\n else if (this.scrollStatus[columnKey].scrollDirection === 'up' &&\n (this.scrollStatus[columnKey].previousScrollTop - target.scrollTop > target.clientHeight)) {\n return 'fast';\n }\n return 'slow';\n };\n VirtualLayoutRender.prototype.removeCardsOnScroll = function (cardVirtualElement, isDown, removeStartIndex, removeEndIndex) {\n for (var j = removeStartIndex; j < removeEndIndex; j++) {\n var removableElem = isDown ? cardVirtualElement.firstChild\n : cardVirtualElement.lastChild;\n while (!isNoU(removableElem) && (removableElem.classList.contains(cls.DRAGGED_CARD_CLASS) ||\n removableElem.classList.contains(cls.DRAGGED_CLONE_CLASS) ||\n removableElem.classList.contains(cls.DROPPED_CLONE_CLASS) ||\n removableElem.classList.contains(cls.CLONED_CARD_CLASS))) {\n removableElem = isDown ? removableElem.nextSibling : removableElem.previousSibling;\n }\n if (!isNoU(removableElem)) {\n detach(removableElem);\n }\n }\n };\n VirtualLayoutRender.prototype.scrollCardInsert = function (columnKey, cardVirtualElement, target, currentScrolledHeight, cardWrapper, startNumber, isRemote, resultData, visibleLength) {\n var _this = this;\n var conditonsScrollDownCase = isRemote ? resultData.length : visibleLength;\n var conditonsScrollUpCase = isRemote ? 0 : visibleLength;\n if (resultData.length > 0) {\n var _loop_5 = function (j) {\n if (!isNoU(resultData[j])) {\n var cardText = resultData[j][this_2.parent.cardSettings.headerField];\n var cardIndex = this_2.parent.actionModule.selectionArray.indexOf(cardText);\n var cardElement_1 = this_2.renderCard(resultData[j]);\n if (cardIndex !== -1) {\n cardElement_1.setAttribute('aria-selected', 'true');\n addClass([cardElement_1], cls.CARD_SELECTION_CLASS);\n }\n var args = { data: resultData[j], element: cardElement_1, cancel: false };\n this_2.parent.trigger(events.cardRendered, args, function (cardArgs) {\n if (!cardArgs.cancel) {\n if (_this.scrollStatus[columnKey].scrollDirection === 'down') {\n cardVirtualElement.appendChild(cardElement_1);\n }\n else {\n cardVirtualElement.insertBefore(cardElement_1, cardVirtualElement.firstChild);\n }\n _this.parent.dragAndDropModule.wireDragEvents(cardElement_1);\n addClass([cardElement_1], cls.DROPPABLE_CLASS);\n }\n });\n }\n };\n var this_2 = this;\n for (var j = startNumber; this.scrollStatus[columnKey].scrollDirection === 'down' ? (j < conditonsScrollDownCase) :\n j >= conditonsScrollUpCase; this.scrollStatus[columnKey].scrollDirection === 'down' ? j++ : j--) {\n _loop_5(j);\n }\n target.scrollTop = currentScrolledHeight;\n }\n else {\n cardWrapper.appendChild(this.renderEmptyCard());\n }\n };\n VirtualLayoutRender.prototype.ensureColumnNotEmpty = function (draggedColumnKey) {\n var singleIndexCardCount = this.scrollStatus[draggedColumnKey].singleIndexCardCount;\n var draggedColumnData = this.columnData[draggedColumnKey];\n var draggedTdColummElement = this.parent.element.querySelector('.e-content-row:not(.e-swimlane-row) [data-key=\"' + draggedColumnKey + '\"]');\n var wrapperELement = draggedTdColummElement.querySelector('.' + cls.CARD_VIRTUAL_WRAPPER_CLASS);\n var cardsList = wrapperELement.querySelectorAll('.' + cls.CARD_CLASS);\n if (cardsList.length > 0) {\n var lastCardDataId = cardsList[cardsList.length - 1].getAttribute('data-id');\n var firstCardDataId = cardsList[0].getAttribute('data-id');\n var lastCardIndex = void 0;\n var firstCardIndex = void 0;\n if (cardsList.length < singleIndexCardCount * 2) {\n for (var i = 0; i < draggedColumnData.length; i++) {\n if (lastCardDataId === (draggedColumnData[i][this.parent.cardSettings.headerField]).toString()) {\n lastCardIndex = i;\n }\n if (firstCardDataId === (draggedColumnData[i][this.parent.cardSettings.headerField]).toString()) {\n firstCardIndex = i;\n }\n }\n var cardCount = cardsList.length;\n for (var i = cardCount; i < singleIndexCardCount * 2; i++) {\n var isLast = lastCardIndex === draggedColumnData.length - 1 ? true : false;\n var nextCardIndex = lastCardIndex < draggedColumnData.length ? lastCardIndex + 1 : firstCardIndex - 1;\n if (nextCardIndex <= draggedColumnData.length) {\n var nextCardData = draggedColumnData[nextCardIndex];\n if (!isNoU(nextCardData)) {\n var nextCard = this.renderCard(nextCardData);\n this.triggerCardRendering(nextCard, nextCardIndex, draggedColumnData, wrapperELement, isLast);\n if (isLast) {\n firstCardIndex = nextCardIndex;\n }\n else {\n lastCardIndex = nextCardIndex;\n }\n }\n }\n }\n }\n }\n };\n VirtualLayoutRender.prototype.triggerCardRendering = function (nextCard, nextCardIndex, draggedColumnData, wrapperELement, isLast) {\n var _this = this;\n var cardText = draggedColumnData[nextCardIndex][this.parent.cardSettings.headerField];\n var cardIndex = this.parent.actionModule.selectionArray.indexOf(cardText);\n if (cardIndex !== -1) {\n nextCard.setAttribute('aria-selected', 'true');\n addClass([nextCard], cls.CARD_SELECTION_CLASS);\n }\n var args = { data: draggedColumnData[nextCardIndex], element: nextCard, cancel: false };\n this.parent.trigger(events.cardRendered, args, function (cardArgs) {\n if (!cardArgs.cancel) {\n if (!isLast) {\n wrapperELement.appendChild(nextCard);\n }\n else {\n wrapperELement.insertBefore(nextCard, wrapperELement.querySelectorAll('.' + cls.CARD_CLASS)[0]);\n }\n _this.parent.dragAndDropModule.wireDragEvents(nextCard);\n addClass([nextCard], cls.DROPPABLE_CLASS);\n }\n });\n };\n VirtualLayoutRender.prototype.ensureBlocks = function (info) {\n var index = info.newBlockIndex[info.block];\n var maxPage = Math.ceil(info.totalColumnData / info.singleIndexCardCount);\n var max = Math.max;\n var indexes;\n if (info.scrollDirection === 'down') {\n indexes = index >= maxPage ? [max(index, 1), --index, --index].reverse() :\n (index + 1 >= maxPage ? [max(index - 1, 1), index, ++index] :\n [max(index, 1), ++index, ++index]);\n }\n else {\n indexes = index === maxPage ? [max(index - 2, 1), max(index - 1, 1), index] :\n [max(index - 1, 1), index, index + 1];\n }\n // eslint-disable-next-line\n return indexes.filter(function (indexRemoveZero) { return indexRemoveZero > 0; });\n };\n VirtualLayoutRender.prototype.getInfoFromView = function (scrollStatus) {\n var isBlockAdded = false;\n var infoType = scrollStatus;\n infoType.page = this.getPageFromTop(scrollStatus);\n infoType.newBlockIndex = this.getBlockIndexes(infoType.page);\n var blocks = this.ensureBlocks(infoType);\n if (infoType.newBlockIndex.toString() !== blocks.toString()) {\n // To avoid dupilcate row index problem in key focus support\n var newBlock = blocks[blocks.length - 1];\n if (infoType.newBlockIndex.indexOf(newBlock) === -1) {\n isBlockAdded = true;\n }\n }\n infoType.newBlockIndex = isBlockAdded ? blocks : infoType.newBlockIndex;\n return infoType;\n };\n VirtualLayoutRender.prototype.getBlockIndexes = function (page) {\n return [page + (page - 1), page * 2];\n };\n VirtualLayoutRender.prototype.getPageFromTop = function (info) {\n var _this = this;\n var total = info.totalColumnData;\n var page = 0;\n this.offsetKeys = Object.keys(info.offsets);\n this.offsetKeys.some(function (offset) {\n var iOffset = Number(offset);\n var border = info.currentScrollTop <= info.offsets[parseInt(offset, 10)]\n || (iOffset === total && info.currentScrollTop > info.offsets[parseInt(offset, 10)]);\n if (border) {\n var maxPage = Math.ceil(total / info.singleIndexCardCount);\n if (_this.offsetKeys.length % 2 !== 0 && iOffset.toString() === _this.offsetKeys[_this.offsetKeys.length - 2]\n && info.currentScrollTop <= info.offsets[_this.offsetKeys.length - 1]) {\n iOffset = (iOffset + 1) > maxPage ? maxPage : iOffset + 1;\n }\n iOffset = iOffset > maxPage ? maxPage : iOffset;\n info.block = iOffset % 2 === 0 ? 1 : 0;\n page = Math.max(1, Math.min(_this.getPage(iOffset, maxPage), maxPage));\n }\n return border;\n });\n return page;\n };\n VirtualLayoutRender.prototype.getPage = function (block, maxPage) {\n if (block + 1 > maxPage) {\n return block % 2 === 0 ? block / 2 : (block - 1) / 2;\n }\n else {\n return block % 2 === 0 ? block / 2 : (block + 1) / 2;\n }\n };\n VirtualLayoutRender.prototype.onAdaptiveScroll = function (e) {\n if (this.parent.touchModule.tabHold && !this.parent.touchModule.mobilePopup) {\n e.preventDefault();\n }\n };\n /**\n * Check column is visible or not.\n *\n * @param {ColumnsModel} column - specifies the column.\n * @returns {boolean} - Check column is visible or not.\n * @private\n * @hidden\n */\n VirtualLayoutRender.prototype.isColumnVisible = function (column) {\n var _this = this;\n var isVisible = false;\n var isNumeric = typeof column.keyField === 'number';\n if (isNumeric) {\n isVisible = this.parent.actionModule.hideColumnKeys.indexOf(column.keyField.toString()) === -1;\n }\n else {\n column.keyField.split(',').forEach(function (key) { isVisible = _this.parent.actionModule.hideColumnKeys.indexOf(key) === -1; });\n }\n return isVisible;\n };\n VirtualLayoutRender.prototype.renderLimits = function (column, target) {\n var limits = createElement('div', { className: cls.LIMITS_CLASS });\n if (column.minCount) {\n limits.appendChild(createElement('div', {\n className: cls.MIN_COUNT_CLASS,\n innerHTML: this.parent.localeObj.getConstant('min') + ': ' + column.minCount.toString()\n }));\n }\n if (column.maxCount) {\n limits.appendChild(createElement('div', {\n className: cls.MAX_COUNT_CLASS,\n innerHTML: this.parent.localeObj.getConstant('max') + ': ' + column.maxCount.toString()\n }));\n }\n if (limits.childElementCount > 0) {\n if (target.querySelector('.' + cls.CARD_WRAPPER_CLASS)) {\n target.insertBefore(limits, target.firstElementChild);\n }\n else {\n target.appendChild(limits);\n }\n }\n };\n VirtualLayoutRender.prototype.renderValidation = function () {\n var _this = this;\n this.parent.columns.forEach(function (column) {\n if (!column.minCount && !column.maxCount) {\n return;\n }\n var cardData = _this.columnData[column.keyField];\n var keySelector = \"[data-key=\\\"\" + column.keyField + \"\\\"]\";\n var headerCell = _this.parent.element.querySelector(\".\" + (cls.HEADER_CELLS_CLASS + keySelector));\n var rowCells = [].slice.call(_this.parent.element.querySelectorAll(\".\" + (cls.CONTENT_CELLS_CLASS + keySelector)));\n _this.renderLimits(column, headerCell);\n var colorClass = _this.getValidationClass(column, cardData.length);\n if (colorClass) {\n addClass(rowCells.concat(headerCell), colorClass);\n }\n });\n };\n VirtualLayoutRender.prototype.getValidationClass = function (column, count) {\n var colorClass;\n if (column.maxCount && count > column.maxCount) {\n colorClass = cls.MAX_COLOR_CLASS;\n }\n else if (column.minCount && count < column.minCount) {\n colorClass = cls.MIN_COLOR_CLASS;\n }\n return colorClass;\n };\n VirtualLayoutRender.prototype.refreshValidation = function () {\n var validations = [].slice.call(this.parent.element.querySelectorAll('.' + cls.LIMITS_CLASS));\n validations.forEach(function (node) { remove(node); });\n var minClass = [].slice.call(this.parent.element.querySelectorAll('.' + cls.MIN_COLOR_CLASS));\n removeClass(minClass, cls.MIN_COLOR_CLASS);\n var maxClass = [].slice.call(this.parent.element.querySelectorAll('.' + cls.MAX_COLOR_CLASS));\n removeClass(maxClass, cls.MAX_COLOR_CLASS);\n this.renderValidation();\n };\n VirtualLayoutRender.prototype.getColumnData = function (columnValue, dataSource) {\n var _this = this;\n if (dataSource === void 0) { dataSource = this.parent.kanbanData; }\n var cardData = [];\n var isNumeric = typeof columnValue === 'number';\n if (isNumeric) {\n var keyData = dataSource.filter(function (cardObj) {\n return cardObj[_this.parent.keyField] === columnValue;\n });\n cardData = cardData.concat(keyData);\n }\n else {\n var columnKeys = columnValue.split(',');\n var _loop_6 = function (key) {\n var keyData = dataSource.filter(function (cardObj) {\n return cardObj[_this.parent.keyField] === key.trim();\n });\n cardData = cardData.concat(keyData);\n };\n for (var _i = 0, columnKeys_1 = columnKeys; _i < columnKeys_1.length; _i++) {\n var key = columnKeys_1[_i];\n _loop_6(key);\n }\n }\n this.sortCategory(cardData);\n return cardData;\n };\n VirtualLayoutRender.prototype.sortCategory = function (cardData) {\n var key = this.parent.cardSettings.headerField;\n var direction = this.parent.sortSettings.direction;\n switch (this.parent.sortSettings.sortBy) {\n case 'DataSourceOrder':\n this.sortOrder(key, direction, cardData);\n break;\n case 'Custom':\n case 'Index':\n if (this.parent.sortSettings.field) {\n key = this.parent.sortSettings.field;\n }\n this.sortOrder(key, direction, cardData);\n break;\n }\n return cardData;\n };\n VirtualLayoutRender.prototype.sortOrder = function (key, direction, cardData) {\n var isNumeric = true;\n if (this.parent.kanbanData.length > 0) {\n isNumeric = typeof (this.parent.kanbanData[0])[key] === 'number';\n }\n if (!isNumeric && this.parent.sortSettings.sortBy === 'Index') {\n return cardData;\n }\n var first;\n var second;\n cardData = cardData.sort(function (firstData, secondData) {\n if (!isNumeric) {\n first = firstData[key].toLowerCase();\n second = secondData[key].toLowerCase();\n }\n else {\n first = firstData[key];\n second = secondData[key];\n }\n return (first > second) ? 1 : ((second > first) ? -1 : 0);\n });\n if (direction === 'Descending') {\n cardData.reverse();\n }\n return cardData;\n };\n VirtualLayoutRender.prototype.documentClick = function (args) {\n if (args.target.classList.contains(cls.SWIMLANE_OVERLAY_CLASS) &&\n this.parent.element.querySelector('.' + cls.SWIMLANE_RESOURCE_CLASS).classList.contains('e-popup-open')) {\n this.treePopup.hide();\n removeClass([this.popupOverlay], 'e-enable');\n }\n if (closest(args.target, \".\" + cls.ROOT_CLASS)) {\n return;\n }\n var cards = [].slice.call(this.parent.element.querySelectorAll(\".\" + cls.CARD_CLASS + \".\" + cls.CARD_SELECTION_CLASS));\n removeClass(cards, cls.CARD_SELECTION_CLASS);\n this.disableAttributeSelection(cards);\n };\n VirtualLayoutRender.prototype.disableAttributeSelection = function (cards) {\n if (cards instanceof Element) {\n cards.setAttribute('aria-selected', 'false');\n }\n else {\n cards.forEach(function (card) { card.setAttribute('aria-selected', 'false'); });\n }\n };\n VirtualLayoutRender.prototype.getColumnCards = function (data) {\n var _this = this;\n var columnData = {};\n this.columnKeys = [];\n this.parent.columns.forEach(function (column) {\n var isNumeric = typeof column.keyField === 'number';\n if (isNumeric) {\n _this.columnKeys = _this.columnKeys.concat(column.keyField.toString());\n }\n else {\n _this.columnKeys = _this.columnKeys.concat(column.keyField.split(',').map(function (e) { return e.trim(); }));\n }\n var cardData = _this.getColumnData(column.keyField, data);\n columnData[column.keyField] = cardData;\n });\n return columnData;\n };\n VirtualLayoutRender.prototype.refreshHeaders = function () {\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n [].slice.call(header.children).forEach(function (child) { return remove(child); });\n this.renderHeader(header);\n };\n VirtualLayoutRender.prototype.refreshCards = function () {\n this.parent.resetTemplates(['cardTemplate']);\n var cards = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_VIRTUAL_WRAPPER_CLASS));\n cards.forEach(function (card) { return remove(card); });\n this.renderCards();\n this.wireDragEvent();\n this.parent.renderTemplates();\n };\n VirtualLayoutRender.prototype.refresh = function () {\n var _this = this;\n var isColumnTemplateRefreshed = false;\n this.parent.columns.forEach(function (column) {\n if (column.showItemCount) {\n if (column && column.template && !isColumnTemplateRefreshed) {\n _this.refreshHeaders();\n isColumnTemplateRefreshed = true;\n }\n var countSelector = \".\" + cls.HEADER_CELLS_CLASS + \"[data-key=\\\"\" + column.keyField + \"\\\"] .\" + cls.CARD_ITEM_COUNT_CLASS;\n var itemCount = _this.parent.element.querySelector(countSelector);\n if (itemCount) {\n var columnDataLength = _this.parent.dataModule.isRemote() ? _this.parent.columnDataCount[column.keyField]\n : _this.columnData[column.keyField].length;\n var isNumeric = typeof column.keyField === 'number';\n var cardLength = 0;\n if (isNumeric) {\n cardLength = ([].slice.call(_this.parent.element.querySelectorAll('.' + cls.CARD_CLASS + '[data-key=' + column.keyField + ']'))).length;\n }\n else {\n var keys = column.keyField.split(',');\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var cards = [].slice.call(_this.parent.element.querySelectorAll('.' + cls.CARD_CLASS + '[data-key=' + key.trim() + ']'));\n cardLength = cards.length + cardLength;\n }\n }\n itemCount.innerHTML = '- ' + columnDataLength + ' ' + _this.parent.localeObj.getConstant('items');\n }\n }\n });\n this.refreshValidation();\n };\n VirtualLayoutRender.prototype.updateScrollPosition = function () {\n var _this = this;\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n if (content) {\n if (!Browser.isIE) {\n content.scrollTo(this.parent.scrollPosition.content.left, this.parent.scrollPosition.content.top);\n }\n else {\n content.scrollTop = this.parent.scrollPosition.content.top;\n content.scrollLeft = this.parent.scrollPosition.content.left;\n }\n }\n var cardWrapper = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_WRAPPER_CLASS));\n cardWrapper.forEach(function (wrapper) {\n if (wrapper.offsetParent) {\n var scrollData = _this.parent.scrollPosition.column[wrapper.offsetParent.getAttribute('data-key')];\n if (scrollData) {\n if (!Browser.isIE) {\n wrapper.scrollTo(scrollData.left, scrollData.top);\n }\n else {\n wrapper.scrollTop = scrollData.top;\n wrapper.scrollLeft = scrollData.left;\n }\n }\n }\n });\n };\n VirtualLayoutRender.prototype.renderCardBasedOnIndex = function (data, index, isDropped, requestType) {\n var _this = this;\n var key = data[this.parent.keyField];\n var cardRow = this.parent.element.querySelector('.e-content-row:not(.e-swimlane-row)');\n if (this.parent.sortSettings.sortBy !== 'Index') {\n var field_1 = this.parent.cardSettings.headerField;\n if (this.parent.sortSettings.sortBy === 'Custom') {\n field_1 = this.parent.sortSettings.field;\n }\n if (isNoU(this.parent.swimlaneSettings.keyField)) {\n index = this.getColumnData(key, this.parent.kanbanData).findIndex(function (colData) {\n return colData[field_1] === data[field_1];\n });\n }\n else {\n var swimlaneDatas = this.parent.getSwimlaneData(data[this.parent.swimlaneSettings.keyField]);\n index = this.getColumnData(key, swimlaneDatas).findIndex(function (colData) { return colData[field_1] === data[field_1]; });\n }\n }\n else if (this.parent.sortSettings.sortBy === 'Index' &&\n this.parent.sortSettings.field && this.parent.sortSettings.direction === 'Ascending') {\n index = data[this.parent.sortSettings.field] - 1;\n }\n if (cardRow) {\n var td = [].slice.call(cardRow.children).filter(function (e) {\n return e.getAttribute('data-key').replace(/\\s/g, '').split(',').indexOf(key.toString().replace(/\\s/g, '')) !== -1;\n })[0];\n var cardWrapper_2 = td.querySelector('.' + cls.CARD_VIRTUAL_WRAPPER_CLASS);\n var emptyCard = cardWrapper_2.querySelector('.' + cls.EMPTY_CARD_CLASS);\n if (emptyCard) {\n remove(emptyCard);\n }\n var cardElement_2 = this.renderCard(data);\n if (this.parent.allowDragAndDrop && td.classList.contains(cls.DRAG_CLASS)) {\n this.parent.dragAndDropModule.wireDragEvents(cardElement_2);\n addClass([cardElement_2], cls.DROPPABLE_CLASS);\n }\n var args = { data: data, element: cardElement_2, cancel: false };\n this.parent.trigger(events.cardRendered, args, function (cardArgs) {\n var addCardCondition = isDropped ? true : cardWrapper_2.childNodes.length\n < _this.scrollStatus[key].singleIndexCardCount;\n if (!cardArgs.cancel && addCardCondition || !isNoU(requestType)) {\n if (isNoU(index) || cardWrapper_2.children.length === 0) {\n cardWrapper_2.appendChild(cardElement_2);\n }\n else {\n cardWrapper_2.insertBefore(cardElement_2, cardWrapper_2.childNodes[index]);\n }\n }\n });\n }\n };\n VirtualLayoutRender.prototype.removeCard = function (data) {\n var cardKey = data[this.parent.cardSettings.headerField];\n var cardElement = this.parent.element.querySelector(\".\" + cls.CARD_CLASS + \"[data-id=\\\"\" + cardKey + \"\\\"]\");\n this.isSelectedCard = cardElement.classList.contains(cls.CARD_SELECTION_CLASS) ? true : false;\n var cardContainer = cardElement.parentElement;\n if (cardElement) {\n remove(cardElement);\n }\n if (cardContainer.querySelectorAll('.' + cls.CARD_CLASS + ':not(.' + cls.CLONED_CARD_CLASS + ')').length === 0) {\n cardContainer.appendChild(this.renderEmptyCard());\n }\n };\n VirtualLayoutRender.prototype.wireEvents = function () {\n var _this = this;\n EventHandler.add(this.parent.element, 'click', this.parent.actionModule.clickHandler, this.parent.actionModule);\n EventHandler.add(this.parent.element, 'dblclick', this.parent.actionModule.doubleClickHandler, this.parent.actionModule);\n EventHandler.add(document, Browser.touchStartEvent, this.documentClick, this);\n window.addEventListener('resize', this.windowResize.bind(this));\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n EventHandler.add(content, 'scroll', this.onContentScroll, this);\n var cardWrapper = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_WRAPPER_CLASS));\n cardWrapper.forEach(function (wrapper) {\n if (_this.parent.isInitialRender && wrapper.offsetParent) {\n _this.parent.scrollPosition.column[wrapper.offsetParent.getAttribute('data-key')] = { left: 0, top: 0 };\n }\n EventHandler.add(wrapper, 'scroll', _this.onColScrollShowSkeleton, _this);\n EventHandler.add(wrapper, 'scroll', debounce(_this.onColumnScroll, 200), _this);\n });\n if (this.parent.isAdaptive) {\n this.parent.touchModule.wireTouchEvents();\n content.scrollLeft = this.scrollLeft;\n }\n this.wireDragEvent();\n };\n VirtualLayoutRender.prototype.unWireEvents = function () {\n var _this = this;\n EventHandler.remove(this.parent.element, 'click', this.parent.actionModule.clickHandler);\n EventHandler.remove(this.parent.element, 'dblclick', this.parent.actionModule.doubleClickHandler);\n EventHandler.remove(document, Browser.touchStartEvent, this.documentClick);\n window.removeEventListener('resize', this.windowResize.bind(this));\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n if (content) {\n EventHandler.remove(content, 'scroll', this.onContentScroll);\n EventHandler.remove(content, 'scroll', this.onColScrollShowSkeleton);\n if (this.parent.allowDragAndDrop) {\n this.unWireDragEvent();\n }\n }\n var cardWrapper = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CARD_WRAPPER_CLASS));\n if (cardWrapper.length > 0) {\n cardWrapper.forEach(function (wrapper) { EventHandler.remove(wrapper, 'scroll', debounce(_this.onColumnScroll, 200)); });\n }\n if (this.parent.isAdaptive) {\n this.parent.touchModule.unWireTouchEvents();\n }\n };\n VirtualLayoutRender.prototype.wireDragEvent = function () {\n var _this = this;\n if (this.parent.allowDragAndDrop) {\n var cards = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_CELLS_CLASS\n + '.' + cls.DRAG_CLASS + ' .' + cls.CARD_CLASS));\n addClass(cards, cls.DROPPABLE_CLASS);\n if (cards.length > 0) {\n cards.forEach(function (card) { return _this.parent.dragAndDropModule.wireDragEvents(card); });\n }\n }\n };\n VirtualLayoutRender.prototype.unWireDragEvent = function () {\n var _this = this;\n var cards = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_CELLS_CLASS\n + '.' + cls.DRAG_CLASS + ' .' + cls.CARD_CLASS));\n removeClass(cards, cls.DROPPABLE_CLASS);\n if (cards.length > 0) {\n cards.forEach(function (card) { return _this.parent.dragAndDropModule.unWireDragEvents(card); });\n }\n };\n VirtualLayoutRender.prototype.destroy = function () {\n this.parent.resetTemplates();\n this.parent.off(events.dataReady, this.initRender);\n this.parent.off(events.contentReady, this.scrollUiUpdate);\n this.unWireEvents();\n var header = this.parent.element.querySelector('.' + cls.HEADER_CLASS);\n if (header) {\n remove(header);\n }\n var content = this.parent.element.querySelector('.' + cls.CONTENT_CLASS);\n if (content) {\n remove(content);\n }\n if (this.treeViewObj) {\n this.treeViewObj.destroy();\n this.treeViewObj = null;\n }\n if (this.treePopup) {\n this.treePopup.destroy();\n this.treePopup = null;\n }\n var swimlaneToolBarEle = this.parent.element.querySelector('.' + cls.SWIMLANE_HEADER_CLASS);\n if (swimlaneToolBarEle) {\n remove(swimlaneToolBarEle);\n }\n var swimlaneContent = this.parent.element.querySelector('.' + cls.SWIMLANE_CONTENT_CLASS);\n if (swimlaneContent) {\n remove(swimlaneContent);\n }\n };\n return VirtualLayoutRender;\n}(MobileLayout));\nexport { VirtualLayoutRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, NotifyPropertyChanges, Property, Complex, Collection, detach } from '@syncfusion/ej2-base';\nimport { addClass, classList, removeClass, compile, formatUnit, L10n, Browser, Event } from '@syncfusion/ej2-base';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { Data } from './data';\nimport { SwimlaneSettings } from '../models/swimlane-settings';\nimport { CardSettings } from '../models/card-settings';\nimport { DialogSettings } from '../models/dialog-settings';\nimport { Columns } from '../models/columns';\nimport { StackedHeaders } from '../models/stacked-headers';\nimport { SortSettings } from '../models/sort-settings';\nimport { Action } from '../actions/action';\nimport { Crud } from '../actions/crud';\nimport { DragAndDrop } from '../actions/drag';\nimport { KanbanDialog } from '../actions/dialog';\nimport { Keyboard } from '../actions/keyboard';\nimport { KanbanTooltip } from '../actions/tooltip';\nimport { KanbanTouch } from '../actions/touch';\nimport { LayoutRender } from './layout-render';\nimport { VirtualLayoutRender } from './virtual-layout-render';\nimport * as events from '../base/constant';\nimport * as cls from './css-constant';\n/**\n * The Kanban board is an efficient way to visually depict various stages of a process using cards with transparent workflows.\n * The Kanban board has rich set of APIs, methods, and events used to enable or disable its features and customize them.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Kanban = /** @class */ (function (_super) {\n __extends(Kanban, _super);\n /**\n * Constructor for creating the Kanban widget\n *\n * @param {KanbanModel} options Accepts the kanban properties to render the Kanban board.\n * @param {string | HTMLElement} element Accepts the DOM element reference as either selector or element to render the Kanban Board.\n */\n function Kanban(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.columnDataCount = {};\n _this.needsID = true;\n return _this;\n }\n /**\n * Initializes the values of private members.\n *\n * @returns {void}\n * @private\n */\n Kanban.prototype.preRender = function () {\n this.isAdaptive = Browser.isDevice;\n this.kanbanData = [];\n if (!this.enablePersistence || !this.swimlaneToggleArray) {\n this.swimlaneToggleArray = [];\n }\n this.activeCardData = { data: null, element: null };\n var defaultLocale = {\n items: 'items',\n min: 'Min',\n max: 'Max',\n cardsSelected: 'Cards Selected',\n addTitle: 'Add New Card',\n editTitle: 'Edit Card Details',\n deleteTitle: 'Delete Card',\n deleteContent: 'Are you sure you want to delete this card?',\n save: 'Save',\n delete: 'Delete',\n cancel: 'Cancel',\n yes: 'Yes',\n no: 'No',\n close: 'Close',\n noCard: 'No cards to display',\n unassigned: 'Unassigned',\n cards: 'Cards'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n this.scrollPosition = { content: { left: 0, top: 0 }, column: {} };\n this.isInitialRender = true;\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]} Returns the declared modules.\n * @private\n */\n Kanban.prototype.requiredModules = function () {\n var modules = [];\n return modules;\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persistance state.\n * @private\n */\n Kanban.prototype.getPersistData = function () {\n if (this.dataSource.length > 0) {\n return this.addOnPersist(['columns', 'dataSource', 'swimlaneToggleArray']);\n }\n else {\n return this.addOnPersist(['columns', 'kanbanData', 'swimlaneToggleArray']);\n }\n };\n /**\n * Core method to return the module name.\n *\n * @returns {string} Returns the module name.\n * @private\n */\n Kanban.prototype.getModuleName = function () {\n return 'kanban';\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @returns {void}\n * @private\n */\n Kanban.prototype.render = function () {\n var addClasses = [cls.ROOT_CLASS];\n var removeClasses = [];\n if (this.enableRtl) {\n addClasses.push(cls.RTL_CLASS);\n }\n else {\n removeClasses.push(cls.RTL_CLASS);\n }\n if (this.isAdaptive) {\n addClasses.push(cls.DEVICE_CLASS);\n }\n else {\n removeClasses.push(cls.DEVICE_CLASS);\n }\n if (this.cssClass) {\n addClasses.push(this.cssClass);\n }\n classList(this.element, addClasses, removeClasses);\n this.element.style.width = formatUnit(this.width);\n this.element.style.height = formatUnit(this.height);\n this.element.setAttribute('role', 'application');\n this.element.setAttribute('aria-label', 'Kanban Board');\n createSpinner({ target: this.element });\n this.showSpinner();\n this.initializeModules();\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @param {KanbanModel} newProp Gets the updated values\n * @param {KanbanModel} oldProp Gets the previous values\n * @returns {void}\n * @private\n */\n Kanban.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 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass);\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass);\n }\n break;\n case 'enableRtl':\n case 'locale':\n this.refresh();\n break;\n case 'width':\n this.element.style.width = formatUnit(newProp.width);\n this.element.querySelector('.' + cls.HEADER_CLASS).firstElementChild.style.width = 'auto';\n this.notify(events.contentReady, {});\n break;\n case 'height':\n this.element.style.height = formatUnit(newProp.height);\n this.element.querySelector('.' + cls.CONTENT_CLASS).style.height = 'auto';\n this.notify(events.contentReady, {});\n break;\n case 'dataSource':\n case 'query':\n if (this.dataModule) {\n this.dataModule.setState({ isDataChanged: false });\n }\n this.dataModule = new Data(this);\n break;\n case 'columns':\n case 'constraintType':\n this.notify(events.dataReady, { processedData: this.kanbanData });\n break;\n case 'swimlaneSettings':\n this.onSwimlaneSettingsPropertyChanged(newProp.swimlaneSettings, oldProp.swimlaneSettings);\n break;\n case 'cardSettings':\n this.onCardSettingsPropertyChanged(newProp.cardSettings, oldProp.cardSettings);\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n if (this.enableVirtualization) {\n this.virtualLayoutModule.wireDragEvent();\n }\n else {\n this.layoutModule.wireDragEvent();\n }\n }\n else {\n if (this.enableVirtualization) {\n this.virtualLayoutModule.unWireDragEvent();\n }\n else {\n this.layoutModule.unWireDragEvent();\n }\n }\n break;\n case 'enableTooltip':\n if (this.tooltipModule) {\n this.tooltipModule.destroy();\n this.tooltipModule = null;\n }\n if (newProp.enableTooltip) {\n this.tooltipModule = new KanbanTooltip(this);\n if (this.enableVirtualization) {\n this.virtualLayoutModule.refreshCards();\n }\n else {\n this.layoutModule.refreshCards();\n }\n }\n break;\n case 'dialogSettings':\n if (newProp.dialogSettings) {\n this.dialogModule = new KanbanDialog(this);\n }\n break;\n case 'allowKeyboard':\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n this.keyboardModule = null;\n }\n if (newProp.allowKeyboard) {\n this.keyboardModule = new Keyboard(this);\n }\n break;\n case 'stackedHeaders':\n if (this.enableVirtualization) {\n this.virtualLayoutModule.refreshHeaders();\n }\n else {\n this.layoutModule.refreshHeaders();\n }\n break;\n case 'sortSettings':\n this.notify(events.dataReady, { processedData: this.kanbanData });\n break;\n default:\n break;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Kanban.prototype.onSwimlaneSettingsPropertyChanged = 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 'keyField':\n case 'textField':\n case 'showEmptyRow':\n case 'showItemCount':\n case 'template':\n case 'sortDirection':\n this.notify(events.dataReady, { processedData: this.kanbanData });\n break;\n case 'enableFrozenRows':\n if (this.layoutModule.frozenSwimlaneRow && !this.swimlaneSettings.enableFrozenRows) {\n this.layoutModule.removeFrozenRows();\n }\n break;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Kanban.prototype.onCardSettingsPropertyChanged = function (newProp, _oldProp) {\n var cards = [];\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showHeader':\n case 'headerField':\n case 'contentField':\n case 'template':\n case 'tagsField':\n case 'grabberField':\n case 'footerCssField':\n if (this.enableVirtualization) {\n this.virtualLayoutModule.refreshCards();\n }\n else {\n this.layoutModule.refreshCards();\n }\n break;\n case 'selectionType':\n cards = this.getSelectedCards();\n if (cards.length > 0) {\n removeClass(cards, cls.CARD_SELECTION_CLASS);\n if (this.enableVirtualization) {\n this.virtualLayoutModule.disableAttributeSelection(cards);\n }\n else {\n this.layoutModule.disableAttributeSelection(cards);\n }\n }\n break;\n }\n }\n };\n Kanban.prototype.initializeModules = function () {\n this.dataModule = new Data(this);\n if (this.enableVirtualization) {\n this.virtualLayoutModule = new VirtualLayoutRender(this);\n }\n else {\n this.layoutModule = new LayoutRender(this);\n }\n if (this.allowKeyboard) {\n this.keyboardModule = new Keyboard(this);\n }\n this.actionModule = new Action(this);\n this.crudModule = new Crud(this);\n this.dragAndDropModule = new DragAndDrop(this);\n this.dialogModule = new KanbanDialog(this);\n if (this.enableTooltip) {\n this.tooltipModule = new KanbanTooltip(this);\n }\n if (Browser.isDevice || Browser.isTouch) {\n this.touchModule = new KanbanTouch(this);\n }\n };\n Kanban.prototype.renderTemplates = function () {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Kanban.prototype.resetTemplates = function (templates) {\n if (this.isReact) {\n this.clearTemplate(templates);\n }\n };\n Kanban.prototype.destroyModules = function () {\n if (this.layoutModule) {\n this.layoutModule.destroy();\n this.layoutModule = null;\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n this.keyboardModule = null;\n }\n if (this.touchModule) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n if (this.tooltipModule) {\n this.tooltipModule.destroy();\n this.tooltipModule = null;\n }\n if (this.virtualLayoutModule) {\n this.virtualLayoutModule.destroy();\n this.virtualLayoutModule = null;\n }\n this.dialogModule = null;\n this.actionModule = null;\n this.crudModule = null;\n this.dataModule = null;\n this.dragAndDropModule = null;\n };\n Kanban.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template === 'function') {\n return compile(template);\n }\n else if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n /**\n * Returns the card details based on card ID from the board.\n *\n * @function getCardDetails\n * @param {Element} target Accepts the card element to get the details.\n * @returns {Object} Returns the card details based on given target.\n */\n Kanban.prototype.getCardDetails = function (target) {\n var _this = this;\n var isNumeric = typeof (this.kanbanData[0])[this.cardSettings.headerField] === 'number';\n var targetId = isNumeric ? parseInt(target.getAttribute('data-id'), 10) : target.getAttribute('data-id');\n var cardObj = this.kanbanData.filter(function (data) {\n return data[_this.cardSettings.headerField] === targetId;\n })[0];\n return cardObj;\n };\n /**\n * Returns the column data based on column key input.\n *\n * @function getColumnData\n * @param {string | number} columnKey Accepts the column key to get the objects.\n * @param {Object[]} dataSource Accepts the collection of objects to get the results based on given columnKey.\n * @returns {Object[]} Returns the collection of card objects based on given inputs.\n */\n Kanban.prototype.getColumnData = function (columnKey, dataSource) {\n if (this.enableVirtualization) {\n return this.virtualLayoutModule.getColumnCards(dataSource)[\"\" + columnKey] || [];\n }\n return this.layoutModule.getColumnCards(dataSource)[\"\" + columnKey] || [];\n };\n /**\n * Returns the swimlane column data based on swimlane keyField input.\n *\n * @function getSwimlaneData\n * @param {string} keyField Accepts the swimlane keyField to get the objects.\n * @returns {Object[]} Returns the collection of card objects based on given inputs.\n */\n Kanban.prototype.getSwimlaneData = function (keyField) {\n return this.layoutModule.getSwimlaneCards()[\"\" + keyField] || [];\n };\n /**\n * Gets the list of selected cards from the board.\n *\n * @function getSelectedCards\n * @returns {HTMLElement[]} Returns the card elements based on selection.\n */\n Kanban.prototype.getSelectedCards = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.CARD_CLASS + '.' + cls.CARD_SELECTION_CLASS));\n };\n /**\n * Allows you to show the spinner on Kanban at the required scenarios.\n *\n * @function showSpinner\n * @returns {void}\n */\n Kanban.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * When the spinner is shown manually using the showSpinner method, it can be hidden using this `hideSpinner` method.\n *\n * @function hideSpinner\n * @returns {void}\n */\n Kanban.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * To manually open the dialog.\n *\n * @function openDialog\n * @param {CurrentAction} action Accepts the action for which the dialog needs to be opened such as either for new card creation or\n * editing of existing cards. The applicable action names are `Add` and `Edit`.\n * @param {Object} data It can be card data.\n * @returns {void}\n */\n Kanban.prototype.openDialog = function (action, data) {\n this.dialogModule.openDialog(action, data);\n };\n /**\n * To manually close the dialog.\n *\n * @function closeDialog\n * @returns {void}\n */\n Kanban.prototype.closeDialog = function () {\n this.dialogModule.closeDialog();\n };\n /**\n * Adds the new card to the data source of Kanban and layout.\n *\n * @function addCard\n * @param {Object | Object[]} cardData Accepts Single card object or Collection of card objects to be added into Kanban.\n * @param {number} index Accepts the index to insert the card in column.\n * @returns {void}\n */\n Kanban.prototype.addCard = function (cardData, index) {\n this.crudModule.addCard(cardData, index);\n };\n /**\n * Updates the changes made in the card object by passing it as a parameter to the data source.\n *\n * @function updateCard\n * @param {Object | Object[]} cardData Accepts Single card object or Collection of card objects to be updated into Kanban.\n * @param {number} index Accepts the index to update the card in column.\n * @returns {void}\n */\n Kanban.prototype.updateCard = function (cardData, index) {\n this.crudModule.updateCard(cardData, index);\n };\n /**\n * Deletes the card based on the provided ID or card collection in the argument list.\n *\n * @function deleteCard\n * @param {string | number | Object | Object[]} cardData Accepts the ID of the remove card in string or number type or\n * Single card object or Collection of card objects to be removed from Kanban\n * @returns {void}\n */\n Kanban.prototype.deleteCard = function (cardData) {\n this.crudModule.deleteCard(cardData);\n };\n /**\n * Add the column to Kanban board dynamically based on the provided column options and index in the argument list.\n *\n * @function addColumn\n * @param {ColumnsModel} columnOptions Accepts the properties to new column that are going to be added in the board.\n * @param {number} index Accepts the index of column to add the new column.\n * @returns {void}\n */\n Kanban.prototype.addColumn = function (columnOptions, index) {\n this.actionModule.addColumn(columnOptions, index);\n };\n /**\n * Deletes the column based on the provided index value.\n *\n * @function deleteColumn\n * @param {number} index Accepts the index of column to delete the existing column from Kanban board.\n * @returns {void}\n */\n Kanban.prototype.deleteColumn = function (index) {\n this.actionModule.deleteColumn(index);\n };\n /**\n * Shows the column from hidden based on the provided key in the columns.\n *\n * @function showColumn\n * @param {string | number} key Accepts the hidden column key name to be shown from the hidden state in board.\n * @returns {void}\n */\n Kanban.prototype.showColumn = function (key) {\n this.actionModule.showColumn(key);\n };\n /**\n * Hides the column from Kanban board based on the provided key in the columns.\n *\n * @function hideColumn\n * @param {string | number} key Accepts the visible column key name to be hidden from the board.\n * @returns {void}\n */\n Kanban.prototype.hideColumn = function (key) {\n this.actionModule.hideColumn(key);\n };\n /**\n * Method to refresh the Kanban UI based on modified records.\n *\n * @function refreshUI\n * @param {ActionEventArgs} args Accepts the added, changed or deleted data.\n * @param {number} index Accepts the index of the changed items.\n * @returns {void}\n */\n Kanban.prototype.refreshUI = function (args, index) {\n index = index ? index : 0;\n this.dataModule.refreshUI(args, index);\n };\n /**\n * Method to refresh the column header.\n *\n * @method refreshHeader\n * @returns {void}\n */\n Kanban.prototype.refreshHeader = function () {\n this.resetTemplates(['columnTemplate']);\n if (this.enableVirtualization) {\n this.virtualLayoutModule.refreshHeaders();\n }\n else {\n this.layoutModule.refreshHeaders();\n }\n this.renderTemplates();\n };\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @function destroy\n * @returns {void}\n */\n Kanban.prototype.destroy = function () {\n this.destroyModules();\n [].slice.call(this.element.childNodes).forEach(function (node) { detach(node); });\n var removeClasses = [cls.ROOT_CLASS];\n if (this.cssClass) {\n removeClasses = removeClasses.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], removeClasses);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Kanban.prototype, \"cssClass\", void 0);\n __decorate([\n Property('auto')\n ], Kanban.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Kanban.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Kanban.prototype, \"cardHeight\", void 0);\n __decorate([\n Property()\n ], Kanban.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property([])\n ], Kanban.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Kanban.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], Kanban.prototype, \"keyField\", void 0);\n __decorate([\n Property('Column')\n ], Kanban.prototype, \"constraintType\", void 0);\n __decorate([\n Property([])\n ], Kanban.prototype, \"externalDropId\", void 0);\n __decorate([\n Collection([], Columns)\n ], Kanban.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Kanban.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(true)\n ], Kanban.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], StackedHeaders)\n ], Kanban.prototype, \"stackedHeaders\", void 0);\n __decorate([\n Complex({}, SwimlaneSettings)\n ], Kanban.prototype, \"swimlaneSettings\", void 0);\n __decorate([\n Complex({}, CardSettings)\n ], Kanban.prototype, \"cardSettings\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Kanban.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, DialogSettings)\n ], Kanban.prototype, \"dialogSettings\", void 0);\n __decorate([\n Property(true)\n ], Kanban.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], Kanban.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(false)\n ], Kanban.prototype, \"showEmptyColumn\", void 0);\n __decorate([\n Property(false)\n ], Kanban.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Kanban.prototype, \"tooltipTemplate\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"dataBinding\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"cardClick\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"cardDoubleClick\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"cardRendered\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"dialogOpen\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"dialogClose\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Kanban.prototype, \"dataSourceChanged\", void 0);\n Kanban = __decorate([\n NotifyPropertyChanges\n ], Kanban);\n return Kanban;\n}(Component));\nexport { Kanban };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Kanban } from '@syncfusion/ej2-kanban';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `KanbanComponent` represents the react Kanban.\n * ```tsx\n * \n * ```\n */\nvar KanbanComponent = /** @class */ (function (_super) {\n __extends(KanbanComponent, _super);\n function KanbanComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'columns': 'column', 'stackedHeaders': 'stackedHeader' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n KanbanComponent.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 KanbanComponent;\n}(Kanban));\nexport { KanbanComponent };\napplyMixins(KanbanComponent, [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 * `ColumnsDirective` represent a columns of the react Kanban board.\n * It must be contained in a Kanban component(`KanbanComponent`).\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 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","import React from 'react'\r\nimport { Popover , Overlay } from 'react-bootstrap'\r\nimport './PopoverStyle.css'\r\n\r\nconst PopoverTooltip = (props) => {\r\n const {\r\n target,\r\n show,\r\n showTitle,\r\n placement\r\n } = props\r\n \r\n if(!target.getAttribute){\r\n return null\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n showTitle ? \r\n Purpose\r\n :\r\n null\r\n }\r\n \r\n { target.getAttribute(\"data-tooltip\") }\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PopoverTooltip\r\n","import { callApiWithAuthorization } from \"../CallApi\";\r\n\r\nexport async function getPlanningConfiguration(organizationId) {\r\n const request = await callApiWithAuthorization(`/api/v0/organization/${organizationId}/getPlanningConfiguration`);\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function updatePlanningConfiguration(planningId, data, type) {\r\n const request = await callApiWithAuthorization(`/api/v0/updatePlanningConfiguration/${planningId}`, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({ type, data }),\r\n });\r\n const response = await request.json();\r\n return response;\r\n}\r\n\r\nexport async function getPlanningItems(projectId) {\r\n const request = await callApiWithAuthorization(`/api/v0/project/${projectId}/getPlanningItems`);\r\n const response = await request.json();\r\n return response;\r\n}","import \"./PlanningCSS/index.css\";\r\nimport \"./PlanningCSS/overview.css\";\r\nimport \"./PlanningCSS/rich-text-editor.css\";\r\nimport * as React from \"react\";\r\nimport {\r\n InsertImage,\r\n setOrganizationId,\r\n setProjectId,\r\n} from \"./Image/insertImageTool\";\r\nimport { insertImagePlugin } from \"./Image/insertImagePlugin\";\r\nimport { insertImageFiles } from \"./Image/utils\";\r\nimport { Editor, EditorTools, ProseMirror } from \"@progress/kendo-react-editor\";\r\nimport { ColorPickerComponent } from \"@syncfusion/ej2-react-inputs\";\r\nimport { createElement } from \"@syncfusion/ej2-base\";\r\nimport {\r\n KanbanComponent,\r\n ColumnsDirective,\r\n ColumnDirective,\r\n} from \"@syncfusion/ej2-react-kanban\";\r\nimport { Query } from \"@syncfusion/ej2-data\";\r\nimport { Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Upload } from \"@progress/kendo-react-upload\";\r\nimport RemoveDialog from \"../Shared/Remove/RemoveDialog\";\r\nimport PopoverTooltip from \"../Shared/Popover/PopoverTooltip\";\r\nimport { MultiSelect, ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport { PageContainer, Content, Header } from \"../Drawer/PageContainer\";\r\nimport { DeleteFile, UploadFiletoDirectory } from \"../Helpers/DateLakeStorage\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { callApiWithAuthorization } from \"../../API/CallApi\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { getPlanningItems } from \"../../API/Planning/Planning\";\r\nimport { getOrganizationUsers } from '../../API/Organization/organization';\r\n\r\nconst {\r\n Bold,\r\n Italic,\r\n Underline,\r\n AlignLeft,\r\n AlignRight,\r\n AlignCenter,\r\n InsertTable,\r\n Indent,\r\n Outdent,\r\n OrderedList,\r\n UnorderedList,\r\n Undo,\r\n Redo,\r\n DeleteRow,\r\n DeleteColumn,\r\n DeleteTable,\r\n} = EditorTools;\r\n\r\nclass Planning extends React.Component {\r\n selectedColor = \"#CCE2CB\";\r\n selectedTags = \"\";\r\n SelectedDescription = \"\";\r\n SelectedAttachments = [];\r\n assigneeData = [];\r\n formDialog = React.createRef();\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: [],\r\n allData: [],\r\n headerData: [],\r\n loading: true,\r\n value: \"None\",\r\n completeState: \"\",\r\n groupvalue: \"None\",\r\n areFiltersVisible: false,\r\n assigneeData: [],\r\n colorData: {\r\n custom: [\r\n \"#d6b027\",\r\n \"#ef612b\",\r\n \"#0e81bdcc\",\r\n \"#da976a\",\r\n \"#da6984\",\r\n \"#489045\",\r\n ],\r\n },\r\n groupByData: [\"None\", \"Type\", \"Priority\", \"Source\", \"AssignTo\"],\r\n fields: { text: \"id\", value: \"State\" },\r\n priorityData: [],\r\n cardTypeData: [],\r\n stateData: [],\r\n showFormDialog: false,\r\n cardDetails: {},\r\n filters: {\r\n priority_filter: \"None\",\r\n type_filter: \"None\",\r\n state_filter: \"None\",\r\n },\r\n };\r\n this.template = this.rowTemplate;\r\n setProjectId(this.props.projectId);\r\n setOrganizationId(this.props.organizationId);\r\n }\r\n\r\n componentDidMount = async () => {\r\n let projectUsers = await this.getProjectUsers();\r\n let requirementsData = await this.getRequirementsData();\r\n let priorities = requirementsData.priorities\r\n .slice()\r\n .sort((a, b) => a.order - b.order);\r\n priorities = priorities.map((item) => item.key);\r\n let cardTypes = requirementsData.cardTypes\r\n .slice()\r\n .sort((a, b) => a.order - b.order);\r\n cardTypes = cardTypes.map((item) => item.key);\r\n let headerData = requirementsData.states\r\n .slice()\r\n .sort((a, b) => a.order - b.order);\r\n let states = headerData.map((item) => item.key);\r\n\r\n // let cardsRequest = await callApiWithAuthorization(\r\n // \"/api/v0/\" +\r\n // this.props.projectId +\r\n // \"/getPlanningItems\"\r\n // );\r\n // let cardsResult = await cardsRequest.json();\r\n const cardsResult = await getPlanningItems(this.props.projectId);\r\n\r\n let Tags = cardsResult.map((item) => item.Tags).join(\",\");\r\n Tags = Tags.split(\",\");\r\n const uniqueSetid = new Set(Tags);\r\n Tags = [...uniqueSetid];\r\n\r\n window.addEventListener(\"mousemove\", this.drag);\r\n\r\n this.setState({\r\n data: cardsResult,\r\n allData: cardsResult,\r\n tagsData: Tags,\r\n assigneeData: projectUsers,\r\n completeState: headerData.find(\r\n (item) => item.completeState === \"true\"\r\n ),\r\n headerData: [...headerData],\r\n priorityData: [...this.state.priorityData, ...priorities],\r\n cardTypeData: [...this.state.cardTypeData, ...cardTypes],\r\n stateData: [...this.state.stateData, ...states],\r\n loading: false,\r\n });\r\n };\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"mousemove\", this.drag);\r\n }\r\n\r\n getRequirementsData = async () => {\r\n let getRequirementsDataRequest = await callApiWithAuthorization(\r\n \"/api/v0/\" +\r\n this.props.organizationId +\r\n \"/getPlanningData\"\r\n );\r\n let requirementsData = await getRequirementsDataRequest.json();\r\n return requirementsData;\r\n };\r\n\r\n getProjectUsers = async () => {\r\n const results = await getOrganizationUsers(this.props.organizationId);\r\n for (let result of results) {\r\n result.fullName = result.firstName + \" \" + result.lastName;\r\n }\r\n return results;\r\n };\r\n\r\n onColorChange = (args) => {\r\n this.selectedColor = args.value;\r\n };\r\n\r\n onTagsChange = (value) => {\r\n this.selectedTags = value;\r\n };\r\n\r\n onDescriptionChange = (value) => {\r\n this.SelectedDescription = value;\r\n };\r\n\r\n onAttachmentsChange = (value) => {\r\n this.SelectedAttachments = [...this.SelectedAttachments, ...value];\r\n };\r\n\r\n onRemoveAttachmentsChange = (value) => {\r\n this.SelectedAttachments = value;\r\n };\r\n\r\n rowTemplate(props) {\r\n let user = { ...props };\r\n if (this.state.groupvalue === \"AssignTo\") {\r\n let data = this.state.assigneeData.find(\r\n (u) => u.email === props.textField\r\n );\r\n user.textField = data ? data.fullName : \"Unassigned\";\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n {this.state.groupvalue === \"Priority\"\r\n ? \"Priority : \"\r\n : null}\r\n  {user.textField}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n columnTemplate = (props) => {\r\n return (\r\n
    \r\n
    {props.headerText}
    \r\n
    \r\n );\r\n };\r\n\r\n cardTemplate(props) {\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n {props.id} - {props.type}\r\n {props.type === \"Feedback\" &&\r\n props.source === \"Runtime\" && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n {props.title.length > 0 ? (\r\n
    \r\n
    \r\n {props.title.length > 258\r\n ? props.title.substr(0, 256) + \"...\"\r\n : props.title}\r\n
    \r\n
    \r\n ) : (\r\n
    \r\n
    Please Provide Title
    \r\n
    \r\n )}\r\n {props.tags !== \"\" && (\r\n
    \r\n {props.tags.split(\",\")\r\n .slice(0, 5)\r\n .map((tag) => (\r\n
    \r\n {tag}\r\n
    \r\n ))}\r\n {props.tags.split(\",\").length > 5 && (\r\n
    \r\n + {props.tags.split(\",\").length - 5} more\r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n {props.assignTo === null || props.assignTo === undefined ? (\r\n
    Unassigned
    \r\n ) : (\r\n
    \r\n  {this.getString(props.assignTo)}\r\n
    \r\n )}\r\n
    \r\n {props.attachments && props.attachments.length > 0 && (\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n Priority : {props.priority}\r\n \r\n
    \r\n
    \r\n this.markAsComplete(props.cardId)}\r\n disabled={props.state === this.state.completeState?.key ? true : false}\r\n checked={props.state === this.state.completeState?.key ? true : false}\r\n >\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n\r\n getString(assignee) {\r\n let user = this.state.assigneeData.find((u) => u.email === assignee);\r\n let field = user.firstName ? \"fullName\" : \"email\";\r\n return user[field]\r\n .match(/\\b(\\w)/g)\r\n .join(\"\")\r\n .toUpperCase();\r\n }\r\n\r\n addItem = (e) => {\r\n const cardDetails = {\r\n id: this.state.data.length + 1,\r\n state: this.state.stateData[0],\r\n priority: this.state.priorityData[0],\r\n assignTo: this.state.assigneeData[0]?.email,\r\n tags: \"\",\r\n title: \"\",\r\n efforts: \"\",\r\n attachments: [],\r\n type: this.state.cardTypeData[0],\r\n description: \"\",\r\n isNew: true,\r\n shouldAdd: true,\r\n createdBy: this.props.user.email,\r\n source: \"Designer\",\r\n color: this.state.colorData.custom[0],\r\n };\r\n this.setState({\r\n cardDetails,\r\n showFormDialog: true,\r\n });\r\n // this.kanbanObj.openDialog('Add', cardDetails);\r\n };\r\n\r\n closeFormDialog = (e) => {\r\n const { cardData, action } = e;\r\n\r\n let oldData = this.state.allData.find(\r\n (card) => card.id === cardData.id\r\n );\r\n\r\n if (\r\n oldData &&\r\n cardData.Description !== oldData.Description &&\r\n action === \"update\"\r\n ) {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = cardData.Description;\r\n var Images = div.getElementsByTagName(\"img\");\r\n\r\n let imageNames = [];\r\n for (let item of Images) {\r\n if (item && item.src !== \"\") {\r\n let splitElement =\r\n this.props.projectId + \"/PlanningImages/\";\r\n let imageName = item.src.split(splitElement);\r\n // let path = this.props.organizationId + \"/\" + this.props.projectId + \"/PlanningImages/\" + imageName[1]\r\n imageNames.push(imageName[1]);\r\n }\r\n }\r\n\r\n var div2 = document.createElement(\"div\");\r\n div2.innerHTML = oldData.Description;\r\n var Images = div2.getElementsByTagName(\"img\");\r\n\r\n let OldimageNames = [];\r\n\r\n for (let item of Images) {\r\n if (item && item.src !== \"\") {\r\n let splitElement =\r\n this.props.projectId + \"/PlanningImages/\";\r\n let imageName = item.src.split(splitElement);\r\n // let path = this.props.organizationId + \"/\" + this.props.projectId + \"/PlanningImages/\" + imageName[1]\r\n OldimageNames.push(imageName[1]);\r\n }\r\n }\r\n\r\n if (OldimageNames.length < imageNames.length) {\r\n let deletedItem = imageNames.filter(\r\n (image) => !OldimageNames.includes(image)\r\n );\r\n\r\n for (let item of deletedItem) {\r\n let path =\r\n this.props.organizationId +\r\n \"/\" +\r\n this.props.projectId +\r\n \"/PlanningImages/\" +\r\n item;\r\n DeleteFile(path, item);\r\n }\r\n }\r\n }\r\n if (cardData.description !== \"\" && action === \"create\") {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = cardData.Description;\r\n var Images = div.getElementsByTagName(\"img\");\r\n\r\n for (let item of Images) {\r\n if (item && item.src !== \"\") {\r\n let splitElement =\r\n this.props.projectId + \"/PlanningImages/\";\r\n let imageName = item.src.split(splitElement);\r\n let path =\r\n this.props.organizationId +\r\n \"/\" +\r\n this.props.projectId +\r\n \"/PlanningImages/\" +\r\n imageName[1];\r\n DeleteFile(path, imageName[1]);\r\n }\r\n }\r\n }\r\n this.setState({\r\n cardDetails: {},\r\n showFormDialog: false,\r\n });\r\n };\r\n\r\n submitFormDialog = async (e) => {\r\n const { cardData, action, tagsData } = e;\r\n cardData.createdBy = this.props.user.email;\r\n const data = await this.SaveCard(cardData, action);\r\n this.setState({\r\n allData: data,\r\n data: data,\r\n cardDetails: {},\r\n tagsData: tagsData,\r\n showFormDialog: false,\r\n });\r\n };\r\n\r\n toggleFilters = () => {\r\n this.setState({\r\n areFiltersVisible: !this.state.areFiltersVisible,\r\n });\r\n };\r\n\r\n filter = (e) => {\r\n let items = this.state.data;\r\n if (e.target.value !== \"\") {\r\n items = items.filter(\r\n (item) =>\r\n item.title.toLowerCase().includes(\r\n e.target.value.toLowerCase()\r\n ) ||\r\n item.type.toLowerCase().includes(\r\n e.target.value.toLowerCase()\r\n )\r\n );\r\n } else {\r\n items = this.filterData(this.state.filters);\r\n }\r\n this.setState({\r\n data: items,\r\n });\r\n };\r\n\r\n change(id, value) {\r\n const { filters, allData } = this.state;\r\n filters[id] = value;\r\n const data = this.filterData(filters);\r\n this.setState({\r\n filters,\r\n data,\r\n });\r\n }\r\n\r\n filterData(filters) {\r\n const filterableFieldsMap = {\r\n priority_filter: \"Priority\",\r\n type_filter: \"Type\",\r\n state_filter: \"State\",\r\n };\r\n const { allData } = this.state;\r\n let data = [...allData];\r\n for (let filter in filters) {\r\n if (filters[filter] !== \"None\") {\r\n data = data.filter((entry) =>\r\n entry[filterableFieldsMap[filter]]\r\n .toLowerCase()\r\n .includes(filters[filter].toLowerCase())\r\n );\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n GroupBy(args) {\r\n this.setState({\r\n groupvalue: args.value,\r\n });\r\n }\r\n\r\n resetClick = () => {\r\n document.getElementById(\"search_text\").value = \"\";\r\n this.priorityObj.setProperties({ value: \"None\" }, false);\r\n this.statusObj.setProperties({ value: \"None\" }, false);\r\n this.typeObj.setProperties({ value: \"None\" }, false);\r\n this.kanbanObj.query = new Query();\r\n let data = this.state.allData;\r\n this.setState({\r\n data: data,\r\n });\r\n };\r\n\r\n dragStart = (e) => {\r\n e.data[0].drag = true;\r\n this.initialOffset = [\r\n e.event.element.offsetLeft - e.event.event.clientX,\r\n e.event.element.offsetTop - e.event.event.clientY,\r\n ];\r\n this.draggedElement = e.event.dragElement;\r\n };\r\n\r\n drag = (event) => {\r\n const { draggedElement } = this;\r\n if (draggedElement) {\r\n const { initialOffset } = this;\r\n const { clientX, clientY } = event;\r\n const { left, top } = draggedElement.style;\r\n draggedElement.style.left = clientX + initialOffset[0] + \"px\";\r\n draggedElement.style.top = clientY + initialOffset[1] + \"px\";\r\n }\r\n };\r\n\r\n dragStop = async (e) => {\r\n const { data } = e;\r\n if (data.length === 0) return;\r\n const result = await this.SaveCard(data[0], \"update\");\r\n this.setState({\r\n data: result,\r\n allData: result,\r\n });\r\n };\r\n\r\n OnActionBegin = async (e) => {\r\n if (e.requestType === \"cardRemove\") {\r\n let result,\r\n Tags = [];\r\n result = await this.SaveCard(\r\n this.kanbanObj.activeCardData.data,\r\n \"remove\"\r\n );\r\n this.setState({\r\n data: result,\r\n allData: result,\r\n });\r\n }\r\n };\r\n\r\n dialogOpen = (e) => {\r\n e.cancel = true;\r\n const cardDetails = e.data;\r\n this.setState({\r\n cardDetails,\r\n showFormDialog: true,\r\n });\r\n };\r\n\r\n markAsComplete = async (id) => {\r\n let data = this.kanbanObj.activeCardData.data;\r\n data.State = this.state.completeState.key;\r\n let result = await this.SaveCard(data, \"update\");\r\n this.setState({\r\n data: result,\r\n allData: result,\r\n });\r\n };\r\n\r\n uploadAttachments = async (files) => {\r\n let formData = new FormData();\r\n\r\n files = [\r\n ...new Map(files.map((item) => [item[\"name\"], item])).values(),\r\n ];\r\n\r\n for (let attachment of files) {\r\n\r\n if (!attachment.validationErrors) {\r\n let fileName =\r\n attachment.name.split(\".jpg\" || \".png\" || \".pdf\")[0] +\r\n \"_\" +\r\n new Date().getTime() +\r\n attachment.extension;\r\n formData.append(`file`, attachment.getRawFile(), fileName);\r\n }\r\n }\r\n\r\n let path =\r\n this.props.organizationId +\r\n \"/\" +\r\n this.props.projectId +\r\n \"/PlanningImages\";\r\n formData.append(\"path\", path);\r\n\r\n return await UploadFiletoDirectory(formData);\r\n };\r\n\r\n removeAttachments = async (deletedAttachments) => {\r\n const request = await callApiWithAuthorization(\r\n \"/api/v0/planning/deleteAttachment\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n deletedAttachments: deletedAttachments,\r\n }),\r\n }\r\n );\r\n const response = await request.json();\r\n return response;\r\n };\r\n\r\n SaveCard = async (data, action) => {\r\n try {\r\n debugger;\r\n if (data.deletedAttachments && data.deletedAttachments.length > 0) {\r\n await this.removeAttachments(data.deletedAttachments);\r\n }\r\n if (data.newAttachments && data.newAttachments.length > 0) {\r\n const newAttachments = await this.uploadAttachments(\r\n data.newAttachments\r\n );\r\n data.attachments = [...data.attachments, ...newAttachments];\r\n data.newAttachments = newAttachments;\r\n }\r\n if (!data.newAttachments) {\r\n data.newAttachments = [];\r\n }\r\n if (!data.deletedAttachments) {\r\n data.deletedAttachments = [];\r\n }\r\n if (!data.attachments) {\r\n data.attachments = [];\r\n }\r\n let oldData = this.state.allData.find(\r\n (card) => card.id === data.id\r\n );\r\n\r\n if (\r\n oldData &&\r\n data.Description !== oldData.Description &&\r\n action === \"update\"\r\n ) {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = data.Description;\r\n var Images = div.getElementsByTagName(\"img\");\r\n\r\n let imageNames = [];\r\n for (let item of Images) {\r\n if (item && item.src !== \"\") {\r\n let splitElement =\r\n this.props.projectId + \"/PlanningImages/\";\r\n let imageName = item.src.split(splitElement);\r\n // let path = this.props.organizationId + \"/\" + this.props.projectId + \"/PlanningImages/\" + imageName[1]\r\n imageNames.push(imageName[1]);\r\n }\r\n }\r\n\r\n var div2 = document.createElement(\"div\");\r\n div2.innerHTML = oldData.Description;\r\n var Images = div2.getElementsByTagName(\"img\");\r\n\r\n let OldimageNames = [];\r\n\r\n for (let item of Images) {\r\n if (item && item.src !== \"\") {\r\n let splitElement =\r\n this.props.projectId + \"/PlanningImages/\";\r\n let imageName = item.src.split(splitElement);\r\n // let path = this.props.organizationId + \"/\" + this.props.projectId + \"/PlanningImages/\" + imageName[1]\r\n OldimageNames.push(imageName[1]);\r\n }\r\n }\r\n\r\n if (OldimageNames.length > imageNames.length) {\r\n let deletedItem = OldimageNames.filter(\r\n (image) => !imageNames.includes(image)\r\n );\r\n\r\n for (let item of deletedItem) {\r\n let path =\r\n this.props.organizationId +\r\n \"/\" +\r\n this.props.projectId +\r\n \"/PlanningImages/\" +\r\n item;\r\n DeleteFile(path, item);\r\n }\r\n }\r\n }\r\n\r\n if (data.Description !== \"\" && action === \"remove\") {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = data.Description;\r\n var Images = div.getElementsByTagName(\"img\");\r\n\r\n for (let item of Images) {\r\n if (item && item.src !== \"\") {\r\n let splitElement =\r\n this.props.projectId + \"/PlanningImages/\";\r\n let imageName = item.src.split(splitElement);\r\n let path =\r\n this.props.organizationId +\r\n \"/\" +\r\n this.props.projectId +\r\n \"/PlanningImages/\" +\r\n imageName[1];\r\n DeleteFile(path, imageName[1]);\r\n }\r\n }\r\n }\r\n\r\n let request = await callApiWithAuthorization(\r\n \"/api/v0/planning/\" +\r\n this.props.orgName +\r\n \"/\" +\r\n this.props.projectId +\r\n \"/updateItemsData\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n _id: data._id,\r\n value: data,\r\n action: action,\r\n key: data.id,\r\n organizationId: this.props.organizationId,\r\n keyColumn: \"id\",\r\n }),\r\n }\r\n );\r\n let result = await request.json();\r\n return result;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.state.showFormDialog && (\r\n <>\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n
    \r\n Group By\r\n { this.priorityObj = kanban }}\r\n className=\"form-control-custom\"\r\n data={this.state.groupByData}\r\n value={this.state.groupvalue}\r\n onChange={this.GroupBy.bind(this)}\r\n />\r\n\r\n \r\n \r\n \r\n
    \r\n \r\n {this.state.loading && }\r\n \r\n
    \r\n {this.state.areFiltersVisible && (\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
    Priority
    \r\n { this.priorityObj = kanban; }}\r\n className=\"form-control-custom\"\r\n data={[\"None\", ...this.state.priorityData]}\r\n onChange={(e) => { this.change('priority_filter', e.target.value) }}\r\n />\r\n
    \r\n\r\n
    \r\n
    State
    \r\n { this.statusObj = kanban; }}\r\n className=\"form-control-custom\"\r\n data={[\"None\", ...this.state.stateData]}\r\n onChange={(e) => { this.change('state_filter', e.target.value) }}\r\n />\r\n
    \r\n\r\n
    \r\n
    State
    \r\n { this.typeObj = kanban; }}\r\n className=\"form-control-custom\"\r\n data={[\"None\", ...this.state.cardTypeData]}\r\n onChange={(e) => { this.change('type_filter', e.target.value) }}\r\n />\r\n
    \r\n
    \r\n
     
    \r\n \r\n \r\n Reset\r\n \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n {this.state.groupvalue === \"None\" ? (\r\n { this.kanbanObj = kanban }}\r\n cssClass=\"kanban-overview\"\r\n keyField=\"state\"\r\n key=\"None\"\r\n allowToggle={true}\r\n allowDragAndDrop={true}\r\n dragStart={this.dragStart.bind(this)}\r\n dragStop={this.dragStop}\r\n actionBegin={this.OnActionBegin.bind(this)}\r\n dataSource={this.state.data}\r\n cardSettings={{\r\n headerField: \"id\",\r\n template: this.cardTemplate.bind(this),\r\n }}\r\n dialogOpen={this.dialogOpen}\r\n dialogSettings={{\r\n model: { width: \"60%\" },\r\n template: this.dialogTemplate,\r\n }}\r\n >\r\n \r\n {this.state.headerData.map(\r\n (data, index) => (\r\n \r\n 0\r\n ? true\r\n : false\r\n }\r\n template={this.columnTemplate.bind(\r\n this\r\n )}\r\n />\r\n )\r\n )}\r\n \r\n \r\n ) : (\r\n <>\r\n {\r\n this.kanbanObj = kanban;\r\n }}\r\n cssClass=\"kanban-overview\"\r\n keyField=\"State\"\r\n allowKeybard={false}\r\n key=\"grouped\"\r\n allowToggle={\r\n this.state.data.length > 0\r\n ? true\r\n : false\r\n }\r\n dragStart={this.dragStart.bind(this)}\r\n dragStop={this.dragStop}\r\n allowDragAndDrop={true}\r\n actionBegin={this.OnActionBegin.bind(this)}\r\n dataSource={this.state.data}\r\n swimlaneSettings={{\r\n showEmptyRow: true,\r\n showItemCount: true,\r\n allowToggle: true,\r\n showUnassignedRow: true,\r\n keyField:\r\n this.state.groupvalue === \"None\"\r\n ? \"\"\r\n : this.state.groupvalue,\r\n template: this.template.bind(this),\r\n allowDragAndDrop:\r\n this.state.groupvalue ===\r\n \"Source\"\r\n ? false\r\n : true,\r\n allowCustomValue: true,\r\n }}\r\n cardSettings={{\r\n contentField: \"title\",\r\n headerField: \"id\",\r\n template:\r\n this.cardTemplate.bind(this),\r\n }}\r\n dialogOpen={this.dialogOpen}\r\n dialogSettings={{\r\n model: { width: 600 },\r\n template: this.dialogTemplate,\r\n }}\r\n >\r\n \r\n {this.state.stateData.map(\r\n (data, index) => (\r\n 0\r\n ? true\r\n : false\r\n }\r\n template={this.columnTemplate.bind(\r\n this\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\nclass FormDialog extends React.Component {\r\n saveButton = React.createRef();\r\n\r\n dialog = React.createRef();\r\n AttachmentsData = [];\r\n userRender = (li, itemProps) => {\r\n const user = itemProps;\r\n const itemChildren = (\r\n
    \r\n
    \r\n {user.dataItem.email.substring(0, 2).toUpperCase()}\r\n
    \r\n     \r\n
    \r\n
    {user.dataItem.displayName}
    \r\n {user.dataItem.email}\r\n
    \r\n
    \r\n );\r\n return React.cloneElement(li, li.props, itemChildren);\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let { tags } = props;\r\n if (tags && tags.length > 0) {\r\n tags = tags.split(\",\");\r\n }\r\n const assignTo = props.assigneeData.find(\r\n (u) => u.email === props.assignTo\r\n );\r\n this.state = {\r\n assigneeData: props.assigneeData,\r\n priorityData: props.priorityData,\r\n tagsData: props.tagsData,\r\n cardTypeData: props.cardTypeData,\r\n colorData: props.colorData,\r\n stateData: props.stateData,\r\n shouldAdd: props.shouldAdd,\r\n tagsHtmlAttributes: { name: \"Tags\" },\r\n id: props.id,\r\n portalName: props.portalName,\r\n instance: props.instance,\r\n pageName: props.pageName,\r\n pageUrl: props.pageUrl,\r\n userName: props.userName,\r\n createdBy: props.createdBy,\r\n userRole: props.userRole,\r\n state: props.state,\r\n priority: props.priority,\r\n assignTo: assignTo,\r\n tooltipAnchor: {},\r\n showTooltip: false,\r\n tags: tags,\r\n color: props.color,\r\n efforts: props.efforts,\r\n source: props.source,\r\n title: props.title,\r\n type: props.type,\r\n attachments: props.attachments || [],\r\n description: props.description,\r\n isNew: props.isNew,\r\n id: props.id,\r\n showDeleteDialog: false,\r\n cover: [],\r\n deletedAttachments: [],\r\n _id: props._id\r\n\r\n };\r\n this.fields = { text: \"fullName\", value: \"email\" };\r\n this.tooltipAnchor = React.createRef();\r\n\r\n\r\n }\r\n\r\n componentDidMount() {\r\n // this.removeAttachmentDialog.hide();\r\n }\r\n\r\n isSaveDisabled = (e) => {\r\n const numAttachments = this.state.attachments.length;\r\n const numAddedAttachments = this.state.cover.length;\r\n return (\r\n this.state.title.trim() === \"\" ||\r\n numAttachments + numAddedAttachments > 3\r\n );\r\n };\r\n\r\n render() {\r\n\r\n if (this.state.showDeleteDialog) {\r\n return (\r\n {\r\n this.onSubmit(e, \"remove\");\r\n }}\r\n deleteButtonText=\"Delete\"\r\n toggleDeleteDialog={this.toggleDeleteDialog}\r\n />\r\n );\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 Description\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n attachments\r\n
    \r\n
    \r\n
    \r\n \r\n {this.state.showAttachmentsMessage && \"Maximum three attachments are allowed!\"}\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {this.state.attachments.map((item) => {\r\n return (\r\n
    \r\n \r\n
    \r\n this.showRemoveAttachmentDialog(item)}>\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 Add Tags\r\n \r\n \r\n
    \r\n Card Type\r\n \r\n \r\n
    \r\n State\r\n \r\n \r\n
    \r\n Assign to\r\n \r\n \r\n
    \r\n Priority\r\n \r\n \r\n
    \r\n Card Color\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 {this.state.isNew ? null : (\r\n \r\n \r\n \r\n \r\n )}\r\n {this.state.source === \"Runtime\" &&\r\n \r\n \r\n \r\n \r\n }\r\n \r\n
    \r\n Source\r\n \r\n {this.state.source}\r\n
    \r\n Created by\r\n \r\n {this.state.createdBy}\r\n
    \r\n {this.state.portalName} -\r\n {this.state.instance} :\r\n \r\n {this.state.pageName}\r\n \r\n - submitted by {this.state.userName} as {this.state.userRole}\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 {!this.props.isNew &&\r\n \r\n }\r\n
    \r\n
    \r\n \r\n Cancel\r\n \r\n { const event = this.props.isNew ? \"insert\" : \"update\"; this.onSubmit(e, event); }}\r\n ref={this.saveButton}\r\n disabled={this.isSaveDisabled()}\r\n className=\"btn btn-primary\"> Save\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {this.state.showRemoveAttachment && (\r\n \r\n Are you sure you want to remove the attachment?\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n handleTooltip = (e) => {\r\n this.setState({\r\n showTooltip: !this.state.showTooltip,\r\n tooltipAnchor: e.target,\r\n });\r\n };\r\n\r\n beforeCircleTileRender(args) {\r\n args.element.classList.add(\"e-circle-palette\");\r\n args.element.appendChild(\r\n createElement(\"span\", { className: \"e-circle-selection\" })\r\n );\r\n }\r\n\r\n onColorChange = (args) => {\r\n this.setState({ color: args.value });\r\n // this.props.onColorChange(args);\r\n };\r\n\r\n onChange = (args) => {\r\n let key = args.target.name;\r\n let value = args.target.value;\r\n this.setState({ [key]: value });\r\n };\r\n\r\n onDropDownChange = (args) => {\r\n const { name, value } = args.target;\r\n this.setState({ [name]: value });\r\n };\r\n\r\n handleDescription = (e) => {\r\n this.setState({ description: e.html });\r\n // this.props.onDescriptionChange(e.html)\r\n };\r\n\r\n onImageInsert = (args) => {\r\n const { files, view, event } = args;\r\n const nodeType = view.state.schema.nodes.image;\r\n\r\n const position =\r\n event.type === \"drop\"\r\n ? view.posAtCoords({ left: event.clientX, top: event.clientY })\r\n : null;\r\n\r\n insertImageFiles({ view, files, nodeType, position });\r\n\r\n return files.length > 0;\r\n };\r\n\r\n onMount = (event) => {\r\n const state = event.viewProps.state;\r\n const plugins = [\r\n ...state.plugins,\r\n insertImagePlugin(this.onImageInsert),\r\n ];\r\n\r\n return new ProseMirror.EditorView(\r\n { mount: event.dom },\r\n {\r\n ...event.viewProps,\r\n state: ProseMirror.EditorState.create({\r\n doc: state.doc,\r\n plugins,\r\n }),\r\n }\r\n );\r\n };\r\n\r\n UploadAttachement = async (event) => {\r\n let attachmentsName = [];\r\n let uploadFormData = new FormData();\r\n let counter = 0;\r\n for (let attachment of event.affectedFiles) {\r\n if (!attachment.validationErrors) {\r\n uploadFormData.append(\r\n `file[${counter}]`,\r\n attachment.getRawFile(),\r\n attachment.name\r\n );\r\n ++counter;\r\n }\r\n }\r\n let uploadRequest = await callApiWithAuthorization(\r\n \"/api/v0/uploadPlanningImage\",\r\n {\r\n method: \"POST\",\r\n body: uploadFormData,\r\n }\r\n );\r\n const uploadResponse = await uploadRequest.json();\r\n // let { AttachmentsData } = this;\r\n // AttachmentsData = [...AttachmentsData, ...attachmentsName];\r\n // this.AttachmentsData = AttachmentsData;\r\n // this.checkAttachment()\r\n // this.props.onAttachmentsChange(attachmentsName)\r\n };\r\n\r\n addFile = (event) => {\r\n if (event.newState.length < 4) {\r\n let { name } = event.target.props;\r\n this.setState({\r\n [name]: event.newState,\r\n });\r\n }\r\n if (event.newState.length + this.state.attachments.length > 3) {\r\n this.setState({\r\n showAttachmentsMessage: true,\r\n });\r\n }\r\n };\r\n\r\n removeFile = (event) => {\r\n let { name } = event.target.props;\r\n this.setState({\r\n [name]: event.newState,\r\n });\r\n\r\n if (event.newState.length + this.state.attachments.length < 4) {\r\n this.setState({\r\n showAttachmentsMessage: false,\r\n });\r\n }\r\n // this.props.onAttachmentsChange(event.newState)\r\n };\r\n\r\n removeAttachment = () => {\r\n const { Attachments: prevAttachments, deletedAttachments } = this.state;\r\n const removedAttachmentIndex = prevAttachments.findIndex(\r\n (attachment) => attachment.id === this.state.selectedAttachment.id\r\n );\r\n deletedAttachments.push(prevAttachments[removedAttachmentIndex]);\r\n const Attachments = prevAttachments.filter(\r\n (attachment) => attachment.id !== this.state.selectedAttachment.id\r\n );\r\n this.setState({\r\n Attachments,\r\n deletedAttachments,\r\n });\r\n this.hideRemoveAttachmentDialog();\r\n };\r\n\r\n closeFormDialog = (e) => {\r\n let { ...cardData } = this.state;\r\n let action = \"update\";\r\n if (this.state.isNew) {\r\n action = \"create\";\r\n }\r\n this.props.closeFormDialog({\r\n cardData,\r\n action,\r\n });\r\n };\r\n\r\n toggleDeleteDialog = (e) => {\r\n this.setState({\r\n showDeleteDialog: !this.state.showDeleteDialog,\r\n });\r\n };\r\n\r\n showRemoveAttachmentDialog = (attachment) => {\r\n this.setState({\r\n showRemoveAttachment: true,\r\n selectedAttachment: attachment,\r\n });\r\n };\r\n\r\n hideRemoveAttachmentDialog = (e) => {\r\n this.setState({\r\n showRemoveAttachment: false,\r\n selectedAttachment: \"\",\r\n });\r\n };\r\n\r\n onSubmit = (event, action) => {\r\n const { saveButton } = this;\r\n if (saveButton.current) {\r\n saveButton.current.disabled = true;\r\n }\r\n let {\r\n assigneeData,\r\n priorityData,\r\n tagsData,\r\n cardTypeData,\r\n colorData,\r\n stateData,\r\n shouldAdd,\r\n tagsHtmlAttributes,\r\n isNew,\r\n cover,\r\n deletedAttachments,\r\n ...cardData\r\n } = this.state;\r\n\r\n let newTags = [];\r\n for (let tags of cardData.tags) {\r\n let newTagsFound = !tagsData.includes(tags);\r\n if (newTagsFound) {\r\n newTags.push(tags);\r\n }\r\n }\r\n\r\n tagsData = [...tagsData, ...newTags];\r\n\r\n if (cardData.tags instanceof Array)\r\n cardData.tags = cardData.tags.join(\",\");\r\n\r\n cardData.newAttachments = cover;\r\n cardData.deletedAttachments = deletedAttachments;\r\n cardData.attachments = [...cardData.attachments];\r\n cardData.assignTo = cardData.assignTo ? cardData.assignTo.email : \"\";\r\n\r\n this.props.submitFormDialog({\r\n event,\r\n cardData,\r\n action,\r\n tagsData,\r\n });\r\n };\r\n}\r\n\r\nexport default Planning;\r\n","import { EditorUtils } from '@progress/kendo-react-editor';\r\n\r\nexport const insertImageFiles = ({ view, files, nodeType, position, attrs = {} }) => {\r\n \r\n if (EditorUtils.canInsert(view.state, nodeType)) {\r\n files.forEach(file => {\r\n let reader = new FileReader();\r\n reader.onload = function (e) {\r\n\r\n const image = nodeType.createAndFill({ ...attrs, src: e.target.result });\r\n if (position) {\r\n view.dispatch(view.state.tr.insert(position.pos, image));\r\n } else {\r\n EditorUtils.insertNode(view, image, true);\r\n }\r\n };\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n};","import React, { useContext, useEffect, useState } from 'react';\r\nimport { updateLabelsForSchema, updateProject } from '../../API/Project/project';\r\nimport Loader from '../Shared/Loader/loader';\r\nimport { Header, PageContainer } from '../Drawer/PageContainer';\r\nimport { useTranslation } from 'react-i18next';\r\nimport Scrollable from '../Shared/Edit/Scrollable';\r\nimport { LanguagesMap } from '../OrganizationSettings/LanguagesMap';\r\nimport { OverlayLoader } from '../Shared/Loader/OverlayLoader';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport SaveDialog from '../Shared/Remove/SaveDialog';\r\nimport { Dialog } from '@progress/kendo-react-dialogs';\r\nimport FailedToLoadError from '../Shared/Recommendation/Error/FailedToLoadError';\r\nimport { GlobalContext } from '../../Renderers/GlobalContext';\r\n\r\nconst AppSettings = ({ projectData, updateProjectData }) => {\r\n const { subscription } = useContext(GlobalContext).state;\r\n const [project, setProject] = useState(null);\r\n const [initialProject, setInitialProject] = useState(null);\r\n const [language, setLanguage] = useState(null);\r\n const [schemaLanguages, setSchemaLanguages] = useState([]);\r\n const { t } = useTranslation(\"project_setting/app_settings\");\r\n const [saving, setSaving] = useState(false);\r\n const [showSaveDialog, setShowSaveDialog] = useState(false);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(null);\r\n\r\n useEffect(() => {\r\n const fetchProject = async () => {\r\n setLoading(true);\r\n try {\r\n setProject(projectData); // Store project data in local state \r\n setInitialProject(projectData); // Store initial project state for comparison\r\n\r\n // Map language codes to language objects\r\n const initialLanguages = projectData.schemaLanguages.map(langCode => {\r\n const language = LanguagesMap.find(lang => lang.code === langCode);\r\n return language || { code: langCode, name: langCode }; // Fallback for missing language\r\n });\r\n const schemaLanguages = [...initialLanguages, LanguagesMap.find(lang => lang.code === projectData.language)];\r\n setLanguage(projectData.language || initialLanguages[0]);\r\n setSchemaLanguages(schemaLanguages);\r\n } catch (error) {\r\n console.error(\"Error fetching project:\", error);\r\n setError(\"Error fetching project\");\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n fetchProject();\r\n }, [projectData]);\r\n\r\n const handleSchemaLanguagesChange = (language) => {\r\n const isChecked = schemaLanguages.some(lang => lang.code === language.code);\r\n const updatedLanguages = isChecked\r\n ? schemaLanguages.filter(lang => lang.code !== language.code)\r\n : [...schemaLanguages, language];\r\n setSchemaLanguages(updatedLanguages);\r\n };\r\n\r\n // const handleLanguageChange = (selectedLanguage) => {\r\n // setLanguage(selectedLanguage);\r\n // setProject(prevProject => ({\r\n // ...prevProject,\r\n // language: selectedLanguage\r\n // }));\r\n // };\r\n\r\n const hasChanges = () => {\r\n if (!initialProject) return false;\r\n const filteredLanguages = schemaLanguages.filter(lang => lang.code !== initialProject.language);\r\n const schemaLanguageCodes = filteredLanguages.map(lang => lang.code);\r\n return (\r\n initialProject.language !== language ||\r\n JSON.stringify(initialProject.schemaLanguages.filter(lang => lang !== initialProject.language).sort()) !== JSON.stringify(schemaLanguageCodes.sort())\r\n );\r\n };\r\n\r\n const onUpdate = async () => {\r\n if (!hasChanges()) return; // Prevent update if no changes\r\n\r\n setSaving(true);\r\n try {\r\n const previousSchemaLanguages = project.schemaLanguages.filter(lang => lang !== project.language);\r\n const schemaLanguageCodes = schemaLanguages.filter(lang => lang.code !== project.language).map(lang => lang.code);\r\n const newLanguages = schemaLanguageCodes.filter(lang => !previousSchemaLanguages.includes(lang));\r\n let updateResponse;\r\n if (newLanguages.length > 0) {\r\n updateResponse = await updateLabelsForSchema(project._id, {\r\n schemaLanguages: newLanguages\r\n });\r\n }\r\n if (updateResponse.status === \"Failure\") {\r\n throw new Error(\"errors.failed_to_load_error\");\r\n }\r\n const updatedProject = {\r\n language: language,\r\n schemaLanguages: schemaLanguageCodes,\r\n };\r\n try {\r\n await updateProject(project._id, updatedProject);\r\n } catch (e) {\r\n throw new Error(\"error.update_project\");\r\n }\r\n updateProjectData({\r\n ...project,\r\n ...updatedProject\r\n }); // Update parent component state\r\n setProject({\r\n ...project,\r\n ...updatedProject\r\n }); // Update local state after successful update\r\n setInitialProject({\r\n ...project,\r\n ...updatedProject\r\n }); // Update initial state to reflect saved changes\r\n } catch (error) {\r\n console.error(\"Error updating project:\", error);\r\n setError(t(error.message));\r\n } finally {\r\n setSaving(false);\r\n setShowSaveDialog(false);\r\n }\r\n };\r\n\r\n const getNewLanguages = () => {\r\n const previousSchemaLanguages = project.schemaLanguages;\r\n const filteredLanguages = schemaLanguages.filter(lang => lang.code !== project.language);\r\n const newLanguages = filteredLanguages\r\n .filter(lang => !previousSchemaLanguages.includes(lang.code))\r\n .map(lang => lang.name.split(' - ')[0]);\r\n return newLanguages.join(', ');\r\n };\r\n\r\n const shouldCheckboxBeDisabled = (dataItem) => {\r\n const isLanguageSelected = schemaLanguages.some(lang => lang.code === dataItem.code);\r\n const isDisabled = initialProject.schemaLanguages.includes(dataItem.code) ||\r\n initialProject.language === dataItem.code ||\r\n (!isLanguageSelected && subscription.numOfLanguages <= schemaLanguages.length);\r\n return { isDisabled, isLanguageSelected };\r\n };\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n {saving && }\r\n {\r\n error && (\r\n { setError(null) }}\r\n >\r\n \r\n \r\n )\r\n }\r\n {showSaveDialog &&\r\n setShowSaveDialog(false)}\r\n toggleSaveDialog={(e) => setShowSaveDialog(!showSaveDialog)}\r\n SaveButtonText={t(\"save_dialog.buttons.confirm\")}\r\n cancelButtonText={t(\"save_dialog.buttons.cancel\")}\r\n />\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {/* */}\r\n {/* (\r\n \r\n handleLanguageChange(props.dataItem.code)}\r\n />\r\n \r\n )}\r\n /> */}\r\n {\r\n const { isDisabled, isLanguageSelected } = shouldCheckboxBeDisabled(props.dataItem);\r\n return (\r\n \r\n handleSchemaLanguagesChange(props.dataItem)}\r\n />\r\n \r\n );\r\n }}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n setShowSaveDialog(true)}\r\n className='btn btn-primary me-2'\r\n disabled={!hasChanges() || saving}>\r\n {t(\"form.buttons.save_label\")}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default AppSettings;\r\n","import { TabStrip, TabStripTab } from '@progress/kendo-react-layout';\r\nimport React, { useContext, useEffect, useMemo, useState } from 'react'\r\nimport { useNavigate } from 'react-router-dom';\r\nimport AttributesComponents from '../../Components/Attributes/Attribute';\r\nimport Entitiescomponents from '../../Components/Entities/Entities';\r\nimport { getInstances } from '../../Components/Helpers/Launch';\r\nimport LinkedEntity from '../../Components/LinkedEntities/LinkedEntity';\r\nimport Portal from '../../Components/Portal/Portal';\r\nimport PortalDetail from '../../Components/Portal/PortalDetail';\r\nimport FailurePublishDialog from '../../Components/PublishToRuntime/FailurePublish';\r\nimport InProgressPublishDialog from '../../Components/PublishToRuntime/InProgressPublish';\r\nimport { RoleContextProvider } from '../../Components/Roles/Context/RoleContext';\r\nimport Roles from '../../Components/Roles/Roles';\r\nimport ConfirmationContext from '../../Components/Shared/ConfirmationWithContext/ConfirmationContext';\r\nimport WorkspaceAppModelContext from '../../Context/Workspace/WorkspaceAppModelContext';\r\nimport usePublishApplication from '../../Hooks/Publish/usePublishApplication';\r\nimport { bindShuffleMessageI18nEvents, messagesForPublishInRuntimeIframe } from '../../Components/Shared/ShuffleMessage/MessagesHelper';\r\nimport { postMessageToRuntime } from '../../Components/Helpers/Runtime/runtime';\r\nimport { useMsal } from '@azure/msal-react';\r\nimport { ExportContent } from '../../Components/ProjectSettings/Export';\r\nimport ArtifactsContent from '../../Components/Artifacts/Artifacts';\r\nimport { ButtonGroup, Dropdown } from 'react-bootstrap';\r\nimport { Tooltip } from \"@progress/kendo-react-tooltip\";\r\nimport useInternalUserCheck from '../../Hooks/Misc/useInternalUserCheck';\r\nimport ConfirmationDialog from '../../Components/Shared/ConfirmationWithContext/ConfirmationDialog';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport InstanceManager from '../../Components/Instance/InstanceManager/InstanceManager';\r\nimport { PropStoreProvider } from '../../Context/PropStore/PropStoreContext';\r\nimport { PageContainer } from '../../Components/Drawer/PageContainer';\r\nimport Loader from '../../Components/Shared/Loader/loader';\r\nimport { useTranslation } from 'react-i18next';\r\nimport Planning from '../../Components/Planning/Planning';\r\nimport { GlobalContext } from '../../Renderers/GlobalContext';\r\nimport { updateProject } from '../../API/Project/project';\r\nimport AppSettings from '../../Components/ProjectSettings/AppSettings';\r\n\r\nfunction PublishTab({ onPublishClick, onRepublishClick }) {\r\n\r\n const { t } = useTranslation();\r\n\r\n const { confirm, closeDialog } = useContext(ConfirmationContext);\r\n\r\n const handlePublishClick = () => {\r\n onPublishClick();\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n {t(\"workspace_app_model.tabs.publish\")}\r\n \r\n \r\n \r\n \r\n {t(\"workspace_app_model.tabs.republish\")}\r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n}\r\n\r\nfunction TabRender({ title, icon, onClick }) {\r\n return (\r\n
    \r\n {!title && <> }\r\n \r\n {title ? title : <> }\r\n
    \r\n )\r\n}\r\n\r\nfunction WorkspaceAppModelPage({ project, updateProjectData }) {\r\n\r\n const { subscription, organization, user } = useContext(GlobalContext).state\r\n\r\n const { t, i18n } = useTranslation([\r\n \"translation\",\r\n \"common/attribute_type_dropdown\"\r\n ]);\r\n\r\n useEffect(() => {\r\n bindShuffleMessageI18nEvents()\r\n i18n.changeLanguage(organization.platformLanguage)\r\n }, []);\r\n\r\n const msalContext = useMsal();\r\n const navigate = useNavigate();\r\n\r\n const { confirm, closeDialog } = useContext(ConfirmationContext);\r\n const { state, mutators } = useContext(WorkspaceAppModelContext);\r\n\r\n const [productionInstance, setProductionInstance] = useState({});\r\n const [showPublishingDialog, setShowPublishingDialog] = useState(false);\r\n\r\n const [showPublishConfirmationDialog, setShowPublishConfirmationDialog] = useState(false);\r\n const [showRepublishConfirmationDialog, setShowRepublishConfirmationDialog] = useState(false);\r\n const [instances, setInstances] = useState([]);\r\n const [instanceToPublish, setInstanceToPublish] = useState({});\r\n const [showInstancesTab, setShowInstancesTab] = useState(false);\r\n const [loading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n async function getData() {\r\n try {\r\n if (subscription && subscription.showInstances) {\r\n setShowInstancesTab(true);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n getData();\r\n }, [])\r\n\r\n const [publishState, error, publishApp, performFullGeneration] = usePublishApplication(\r\n project._id, organization._id, instanceToPublish, user,\r\n instanceToPublish && instanceToPublish._id && !instanceToPublish.Published\r\n )\r\n\r\n const isInternalUser = useInternalUserCheck(user.email)\r\n const isAdvancedModeOn = project.developerMode;\r\n\r\n function getPublishButtonIndex() {\r\n let index = 5;\r\n if (isInternalUser && isAdvancedModeOn) {\r\n index = 9;\r\n }\r\n return index;\r\n }\r\n\r\n async function handleTabSelect(e) {\r\n if (e.selected !== getPublishButtonIndex()) {\r\n const { selectNextTab } = await handleUnsavedChanges();\r\n if (!selectNextTab) {\r\n return;\r\n }\r\n mutators.setFormsWithChanges({\r\n entityForm: false,\r\n attributeForm: false,\r\n linkedEntityForm: false,\r\n portalForm: false,\r\n menuItemForm: false\r\n });\r\n mutators.setSelectedTab(e.selected);\r\n }\r\n }\r\n\r\n async function handleUnsavedChanges() {\r\n const anyFormHasChanges = Object.values(state.formsWithChanges).some(value => value);\r\n if (anyFormHasChanges) {\r\n const isConfirmed = await confirm({\r\n title: t(\"workspace_app_model.unsaved_changes_dialog.title\"),\r\n content: t(\"workspace_app_model.unsaved_changes_dialog.content\"),\r\n confirmButtonText: t(\"workspace_app_model.unsaved_changes_dialog.buttons.confirm_button\"),\r\n onConfirm: state.formSaveFunction\r\n })\r\n if (!isConfirmed) {\r\n return {\r\n isConfirmed: false,\r\n selectNextTab: false\r\n };\r\n }\r\n closeDialog();\r\n mutators.setFormsWithChanges({\r\n entityForm: false,\r\n attributeForm: false,\r\n linkedEntityForm: false,\r\n portalForm: false,\r\n menuItemForm: false\r\n });\r\n return {\r\n isConfirmed: true,\r\n selectNextTab: true\r\n };\r\n }\r\n return {\r\n isConfirmed: false,\r\n selectNextTab: true\r\n }\r\n }\r\n\r\n function togglePublishConfirmationDialog() {\r\n setShowPublishConfirmationDialog(value => !value);\r\n }\r\n\r\n async function loadInstances() {\r\n const instances = project.instances;\r\n // sort instances by type Development, Test, Production\r\n // if type is same, sort by instanceName\r\n instances.sort((a, b) => {\r\n if (a.type === b.type) {\r\n return a.instanceName.localeCompare(b.instanceName);\r\n }\r\n if (a.type === \"Development\") {\r\n return -1;\r\n }\r\n if (b.type === \"Development\") {\r\n return 1;\r\n }\r\n if (a.type === \"Test\") {\r\n return -1;\r\n }\r\n if (b.type === \"Test\") {\r\n return 1;\r\n }\r\n if (a.type === \"Production\") {\r\n return -1;\r\n }\r\n if (b.type === \"Production\") {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n setInstances(instances);\r\n setInstanceToPublish(instances[0]);\r\n }\r\n\r\n async function handlePublishClick() {\r\n loadInstances();\r\n const { selectNextTab } = await handleUnsavedChanges();\r\n if (!selectNextTab) {\r\n return;\r\n }\r\n togglePublishConfirmationDialog();\r\n }\r\n\r\n async function handlePublish() {\r\n togglePublishConfirmationDialog();\r\n setShowPublishingDialog(true);\r\n debugger;\r\n const result = await publishApp();\r\n if (result && result.status === \"Success\") {\r\n await updateProject(project._id, {\r\n hasSchemaChanges: false, isDbChanged: false\r\n })\r\n // await updateNode(\"Project\", project._id, {\r\n // hasSchemaChanges: false,\r\n // isDbChanged: false\r\n // })\r\n }\r\n if (result) {\r\n setProductionInstance({\r\n ...productionInstance,\r\n Published: true,\r\n Url: result.data.url\r\n })\r\n postMessageToRuntime({\r\n designerStatus: \"Success\"\r\n })\r\n }\r\n }\r\n\r\n function toggleRepublishConfirmationDialog() {\r\n setShowRepublishConfirmationDialog(value => !value);\r\n }\r\n\r\n async function handleRepublishClick() {\r\n loadInstances();\r\n const { selectNextTab } = await handleUnsavedChanges();\r\n if (!selectNextTab) {\r\n return;\r\n }\r\n toggleRepublishConfirmationDialog();\r\n }\r\n\r\n async function handleRepublish() {\r\n toggleRepublishConfirmationDialog();\r\n setShowPublishingDialog(true);\r\n const result = await performFullGeneration();\r\n if (result && result.status === \"Success\") {\r\n await updateProject(project._id, {\r\n hasSchemaChanges: false, isDbChanged: false\r\n })\r\n // await updateNode(\"Project\", project._id, {\r\n // hasSchemaChanges: false,\r\n // isDbChanged: false\r\n // })\r\n postMessageToRuntime({\r\n designerStatus: \"Success\"\r\n })\r\n }\r\n }\r\n\r\n function handleEntitySelect(entity) {\r\n mutators.setSelectedEntity(entity);\r\n }\r\n\r\n function removeSelectedEntity() {\r\n handleEntitySelect(null);\r\n }\r\n\r\n function handlePortalSelect(portal) {\r\n mutators.setSelectedPortal(portal);\r\n }\r\n\r\n function removeSelectedPortal() {\r\n mutators.setSelectedPortal(null);\r\n }\r\n\r\n function handleEntitySelectFromLinkedEntity(entity) {\r\n handleEntitySelect(entity);\r\n mutators.setSelectedTab(0);\r\n }\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n <>\r\n {showPublishingDialog && publishState === \"InProgress\" &&\r\n \r\n }\r\n {showPublishingDialog && publishState === \"Failure\" &&\r\n { setShowPublishingDialog(false) }}\r\n />\r\n }\r\n {\r\n showPublishConfirmationDialog &&\r\n \r\n

    {t(\"workspace_app_model.publish_confirmation_dialog.warning_message\")}

    \r\n {\r\n instances && instances.length > 1 &&\r\n
    \r\n \r\n {\r\n setInstanceToPublish(e.target.value)\r\n }}\r\n />\r\n
    \r\n }\r\n \r\n }\r\n onCancel={togglePublishConfirmationDialog}\r\n onToggle={togglePublishConfirmationDialog}\r\n onConfirm={handlePublish}\r\n confirmButtonDisabled={instanceToPublish._id === undefined}\r\n cancelButtonText={t(\"workspace_app_model.publish_confirmation_dialog.buttons.cancel_button\")}\r\n confirmButtonText={t(\"workspace_app_model.publish_confirmation_dialog.buttons.confirm_button\")}\r\n />\r\n }\r\n {\r\n showRepublishConfirmationDialog &&\r\n \r\n

    {t(\"workspace_app_model.republish_confirmation_dialog.warning_message_1\")}

    \r\n

    {t(\"workspace_app_model.republish_confirmation_dialog.warning_message_2\")}

    \r\n {\r\n instances && instances.length > 1 &&\r\n
    \r\n \r\n {\r\n setInstanceToPublish(e.target.value)\r\n }}\r\n />\r\n
    \r\n }\r\n \r\n }\r\n onCancel={toggleRepublishConfirmationDialog}\r\n onToggle={toggleRepublishConfirmationDialog}\r\n onConfirm={handleRepublish}\r\n confirmButtonDisabled={instanceToPublish._id === undefined}\r\n cancelButtonText={t(\"workspace_app_model.republish_confirmation_dialog.buttons.cancel_button\")}\r\n confirmButtonText={t(\"workspace_app_model.republish_confirmation_dialog.buttons.confirm_button\")}\r\n />\r\n }\r\n \r\n \r\n }\r\n contentClassName='h-100'>\r\n {\r\n state.selectedEntity && state.selectedEntity._id ?\r\n { }}\r\n user={user}\r\n organization={organization}\r\n project={project}\r\n entity={state.selectedEntity}\r\n selectedSysName={state.selectedAttribute?.sysName}\r\n selectedTab={0}\r\n selectedId={\"\"}\r\n selectedPageName={\"\"}\r\n selectedComponentId={\"\"}\r\n isAccessedFromWorkspace={true}\r\n isUserEntity={state.selectedEntity.isUserEntity}\r\n mutators={mutators}\r\n showAIButtons={organization.isAIEnabled} />\r\n :\r\n { }}\r\n sysName=\"\"\r\n user={user}\r\n selectedTab={0}\r\n navigate={navigate}\r\n showRecommendationPopup={false}\r\n updateSearchParams={() => { }}\r\n isAccessedFromWorkspace={true}\r\n selectEntity={handleEntitySelect}\r\n showAIButtons={organization.isAIEnabled} />\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 state.selectedPortal && state.selectedPortal._id ?\r\n \r\n :\r\n \r\n }\r\n \r\n }>\r\n \r\n \r\n {\r\n isInternalUser && isAdvancedModeOn &&\r\n }>\r\n \r\n \r\n }\r\n {\r\n isInternalUser && isAdvancedModeOn &&\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {\r\n isInternalUser && isAdvancedModeOn &&\r\n }>\r\n \r\n \r\n }\r\n {\r\n isInternalUser && isAdvancedModeOn &&\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 WorkspaceAppModelPage;","import { useMsal } from \"@azure/msal-react\";\r\nimport React, { useState, useEffect, useContext } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport {\r\n\tgetLoggedInUserUsingAccessToken\r\n} from \"../API/User/User\";\r\nimport Loader from \"../Components/Shared/Loader/loader\";\r\nimport { GlobalContext } from \"./GlobalContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getUserItsOrganizationAndSubscription } from \"../API/Organization/organization\";\r\nimport { getProject } from \"../API/Project/project\";\r\nexport const WorkspaceProjectRouteRender = (props) => {\r\n\tconst { dispatch } = useContext(GlobalContext);\r\n\tconst context = useMsal();\r\n\r\n\tconst { organizationId, projectId } = useParams();\r\n\r\n\tconst [loading, setLoading] = useState(true);\r\n\tconst [hasAccess, setHasAccess] = useState(false);\r\n\tconst [accessError, setAccessError] = useState(\"\");\r\n\tconst [loggedInUser, setLoggedInUser] = useState({}); // [todo: remove this line]\r\n\r\n\tconst [organization, setOrganization] = useState({});\r\n\tconst [project, setProject] = useState({});\r\n\r\n\tconst { i18n, ready: tReady } = useTranslation();\r\n\r\n\t// useEffect hook to fetch logged-in user using access token\r\n\tuseEffect(() => {\r\n\t\tconst { inProgress } = context;\r\n\t\tconst accessToken = localStorage.getItem(\"accessToken\");\r\n\r\n\t\t// If access token is not present, redirect to login page\r\n\t\tif (!accessToken) {\r\n\t\t\tsetLoading(false);\r\n\t\t\tsetHasAccess(false);\r\n\t\t\tsetAccessError(\"Sorry, Please login to continue.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (inProgress !== \"none\") return; // Avoid duplicate code execution on page load\r\n\r\n\t\t// Fetch logged-in user using access token\r\n\t\tasync function getUser() {\r\n\t\t\tconst loggedInUser = await getLoggedInUserUsingAccessToken();\r\n\t\t\tsetLoggedInUser(loggedInUser);\r\n\t\t}\r\n\t\tgetUser();\r\n\t}, [context]);\r\n\r\n\tuseEffect(() => {\r\n\t\tasync function validateAccess() {\r\n\t\t\tif (loggedInUser && loggedInUser.emails && loggedInUser.emails.length > 0) {\r\n\t\t\t\tsetLoading(true);\r\n\t\t\t\tconst [{ organization, user, subscription }, project] = await Promise.all([\r\n\t\t\t\t\tgetUserItsOrganizationAndSubscription(loggedInUser.emails[0], organizationId),\r\n\t\t\t\t\tgetProject(projectId)\r\n\t\t\t\t]);\r\n\t\t\t\tif (organization) {\r\n\t\t\t\t\tif (!project) {\r\n\t\t\t\t\t\tsetHasAccess(false);\r\n\t\t\t\t\t\tsetAccessError(\"Sorry. This Project does not exist. Please contact the Admin(s).\");\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (project && !project.isActive) {\r\n\t\t\t\t\t\tsetHasAccess(false);\r\n\t\t\t\t\t\tsetAccessError(\"Sorry. This Project has been deactivated. Please contact the Admin(s).\");\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetHasAccess(true);\r\n\t\t\t\t\tsetAccessError(\"\");\r\n\t\t\t\t\tsetOrganization(organization || {});\r\n\t\t\t\t\tsetProject(project || {});\r\n\t\t\t\t\tdispatch({ type: \"SET_SUBSCRIPTION\", payload: subscription });\r\n\t\t\t\t\tdispatch({ type: \"SET_ORGANIZATION\", payload: organization })\r\n\t\t\t\t\tdispatch({ type: \"SET_USER\", payload: user })\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetHasAccess(false);\r\n\t\t\t\t\tsetAccessError(\"Sorry. You have not been granted access to this Organization. Please contact the Admin(s).\");\r\n\t\t\t\t}\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t}\r\n\t\t}\r\n\t\tvalidateAccess();\r\n\t}, [loggedInUser, organizationId]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (tReady) {\r\n\t\t\ti18n.changeLanguage(organization.platformLanguage || \"en\");\r\n\t\t}\r\n\t}, [tReady, organization])\r\n\r\n\tconst handleProjectUpdate = async (updatedProject) => {\r\n\t\tsetProject(updatedProject);\r\n\t}\r\n\r\n\tif (loading) return ;\r\n\r\n\tif (!hasAccess) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    {accessError}
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{React.Children.map(props.children, (child) => {\r\n\t\t\t\tif (React.isValidElement(child)) {\r\n\t\t\t\t\treturn React.cloneElement(child, {\r\n\t\t\t\t\t\tproject: { ...project },\r\n\t\t\t\t\t\tupdateProjectData: handleProjectUpdate\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t})}\r\n\t\t\r\n\t)\r\n}\r\n","// Import necessary modules and components\r\nimport React from \"react\";\r\nimport { InviteUsertoOrganizationForm } from \"../../Components/OrganizationSettings/UserManagement/InviteOrganizationUsers\";\r\nimport { useState, useEffect } from \"react\";\r\nimport Loader from \"../../Components/Shared/Loader/loader\";\r\nimport { getOrganizationUsers } from \"../../API/Organization/organization\";\r\nimport NoAccessComponent from \"../../Components/Shared/Error/NoAccess\";\r\n\r\n// Define the WorkspaceInviteUsersPage component and accept the organizationData prop\r\nconst WorkspaceInviteUsersPage = ({ organization, user, role }) => {\r\n // Define the loading, roles, and organizationUsers states using the useState hook\r\n const [loading, setLoading] = useState(true);\r\n const authorized = role.roleType === \"Owner\" || role.roleType === \"Administrator\"; // Check if the user is authorized\r\n\r\n // Define the roles state and set it to an array of three objects\r\n const [roles, setRoles] = useState([]);\r\n\r\n // Define organizationUsers states and set them to empty arrays\r\n const [organizationUsers, setOrganizationUsers] = useState([]);\r\n\r\n const [showNoAccess, setShowNoAccess] = useState(!authorized || false); // Define the showNoAccess state and set it to false\r\n\r\n // Define an useEffect hook that is called when the organizationData prop changes\r\n useEffect(() => {\r\n // Define an asynchronous function that fetches the necessary data\r\n const getOrganizationUsersData = async () => {\r\n\r\n const organizationUsers = await getOrganizationUsers(organization._id);\r\n const roles = getOrganizationRoles();\r\n // Set the roles, and organizationUsers states with the retrieved data\r\n setRoles(roles);\r\n setOrganizationUsers(organizationUsers);\r\n // Set the loading state to false since data has been retrieved\r\n setLoading(false);\r\n };\r\n if (authorized) {\r\n getOrganizationUsersData();\r\n }\r\n }, [organization]);\r\n\r\n const getOrganizationRoles = () => {\r\n let { roles } = organization;\r\n const filteredRoles = roles.filter((role) => role.roleType !== 'Owner');\r\n const sortedRoles = filteredRoles.sort((a, b) => a.order - b.order);\r\n return sortedRoles;\r\n };\r\n\r\n const postMessage = (data) => {\r\n window.parent.postMessage(JSON.stringify(data), process.env.REACT_APP_RUNTIME_URL);\r\n }\r\n\r\n const showNotification = (message) => {\r\n postMessage({ showNotificationMessage: message });\r\n }\r\n\r\n const handleCloseDialog = () => {\r\n postMessage({ closeInvitetoWorkspaceDialog: true });\r\n }\r\n\r\n // If the user is not an owner or administrator, return a message that they do not have permission to invite users\r\n if (!authorized) {\r\n return (\r\n
    \r\n
    \r\n You do not have permission to invite users to this workspace\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n // If loading is true, show a skeleton UI using the WorkspaceSettingsSkeleton component\r\n if (loading) return ;\r\n\r\n if (showNoAccess) {\r\n return \r\n }\r\n\r\n // Otherwise, return the InviteUsertoOrganizationForm component with the necessary props\r\n return (\r\n \r\n )\r\n}\r\n\r\n// Export the WorkspaceInviteUsersPage component\r\nexport default WorkspaceInviteUsersPage;","import React from 'react'\r\nimport './style.css'\r\nimport { Upload as KendoUpload } from '@progress/kendo-react-upload';\r\n\r\nexport function Upload(props) {\r\n return (\r\n \r\n )\r\n}\r\n","import { useEffect } from 'react';\r\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport React, { useState } from 'react';\r\nimport InnerLoader from '../Shared/Loader/InnerLoader';\r\nimport { OverlayLoader } from '../Shared/Loader/OverlayLoader';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nfunction DeleteProjectDialog({ toggleDialog, projectName, onDelete, organization }) {\r\n\r\n const [deleteName, setDeleteName] = useState(\"\");\r\n const [deletingProject, setDeletingProject] = useState(false);\r\n const { t, i18n } = useTranslation([\r\n \"project_setting/delete_project_dialog\",\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n useEffect(() => {\r\n // i18n.changeLanguage(organization.platformLanguage);\r\n }, [])\r\n\r\n function handleDeleteName(e) {\r\n setDeleteName(e.target.value);\r\n }\r\n\r\n async function handleDelete() {\r\n setDeletingProject(true);\r\n await onDelete();\r\n }\r\n\r\n return (\r\n \r\n
    e.preventDefault()}>\r\n
    \r\n
    \r\n {t(\"warning1\")}\r\n
    \r\n

    \r\n {t(\"warning2\")}\r\n

    \r\n

    \r\n {t(\"warning3\")}\r\n

    \r\n

    \r\n {t(\"warning4\")}\r\n \r\n {projectName}\r\n \r\n {t(\"warning4end\")}\r\n

    \r\n

    \r\n

    \r\n \r\n
    \r\n

    \r\n
    \r\n \r\n {deletingProject && (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n \r\n {t(\"buttons.cancel\")}\r\n \r\n \r\n {t(\"buttons.delete\")}\r\n \r\n
    \r\n
    \r\n {deletingProject && }\r\n \r\n )\r\n}\r\n\r\nexport default DeleteProjectDialog;","import React from 'react';\r\nimport { getDatalakeUserImageUrl } from '../Helpers/DateLakeStorage';\r\n\r\nfunction ProjectSettingFileList({ organizationId, projectId, files, onRemoveClick }) {\r\n\r\n function handleRemoveClick(fileName) {\r\n onRemoveClick(fileName);\r\n }\r\n\r\n return (\r\n
      \r\n { files.map((fileName, index) => (\r\n
    • \r\n \r\n {fileName}\r\n \r\n handleRemoveClick(fileName)}\r\n >\r\n \r\n \r\n
    • \r\n ))}\r\n
    \r\n )\r\n}\r\n\r\nexport default ProjectSettingFileList;","import { UpdateRuntimeforLabelandUrlChange } from \"../../API/Runtime/RuntimeHelper\";\r\nimport { UploadFiletoDirectory } from \"../Helpers/DateLakeStorage\";\r\n\r\nexport async function uploadFiles(files, organizationId, projectId) {\r\n const formData = new FormData();\r\n\r\n const map = new Map(files.map(item => [item[\"name\"], item]));\r\n const mapValues = map.values();\r\n const filesToUpload = [...mapValues];\r\n\r\n for (const file of filesToUpload) {\r\n if (!file.validationErrors) {\r\n const fileName = (\r\n file.name.split('.').slice(0, -1).join('.').replace(/[^a-zA-Z0-9]/g, \"\") +\r\n new Date().getTime() +\r\n file.extension\r\n );\r\n formData.append(`file`, file.getRawFile(), fileName);\r\n }\r\n }\r\n\r\n let path = `${organizationId}/${projectId}/ProjectImages`;\r\n formData.append(\"path\", path);\r\n\r\n const uploadResponse = await UploadFiletoDirectory(formData);\r\n\r\n return uploadResponse;\r\n}\r\n\r\nexport async function updateProjectLabelAndUrlOnRuntime(organizationId, projectUrl, projectName, context, instances) {\r\n for (const instance of instances) {\r\n if (instance.appId || instance._id) {\r\n const instanceId = instance.appId || instance._id;\r\n const updatedUrl = projectUrl + \"_\" + instanceId.slice(0, 5);\r\n const data = {\r\n updatedUrl,\r\n updatedLabel: projectName\r\n };\r\n try {\r\n await UpdateRuntimeforLabelandUrlChange(\r\n \"Application\", context, organizationId, instanceId, null, data\r\n )\r\n } catch (e) {\r\n return [\"error\", {\r\n instance: instance,\r\n message: \"Something went wrong while updating label on runtime for instance \" + instance.instanceType\r\n }];\r\n }\r\n }\r\n }\r\n\r\n return [\"success\", \"Updated labels and url on runtime\"];\r\n}","import { useMsal } from '@azure/msal-react';\r\nimport { MultiSelect } from '@progress/kendo-react-dropdowns';\r\nimport { Checkbox, Switch } from '@progress/kendo-react-inputs';\r\nimport React, { useCallback, useContext, useEffect, useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport useInternalUserCheck from '../../Hooks/Misc/useInternalUserCheck';\r\nimport useGetProjects from '../../Hooks/Projects/useGetProjects';\r\nimport { isLibraryOrganization } from '../Helpers/Organization/Organization';\r\nimport { disableAllInstancesOfApplicationOnRuntime, postMessageToRuntime } from '../Helpers/Runtime/runtime';\r\nimport ErrorMessage from '../Shared/Error/ErrorMessage';\r\nimport { Upload } from '../Shared/FormFields/Upload';\r\nimport IconPicker from '../Shared/IconPicker/IconPicker';\r\nimport DeleteProjectDialog from './DeleteProjectDialog';\r\nimport ProjectSettingFileList from './ProjectSettingFileList';\r\nimport { PageContainer, Header } from \"../Drawer/PageContainer\";\r\nimport Loader from '../Shared/Loader/loader';\r\nimport { updateProjectLabelAndUrlOnRuntime, uploadFiles } from './utils';\r\nimport { DeleteFile } from '../Helpers/DateLakeStorage';\r\nimport Scrollable from '../Shared/Edit/Scrollable';\r\nimport RemoveDialog from '../Shared/Remove/RemoveDialog';\r\nimport { OverlayLoader } from '../Shared/Loader/OverlayLoader';\r\nimport InnerLoader from '../Shared/Loader/InnerLoader';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { GlobalContext } from '../../Renderers/GlobalContext';\r\nimport { updateProject } from '../../API/Project/project';\r\n\r\nexport function ProjectSetting({ project, isAccessedInIframe }) {\r\n\r\n const { organization, user } = useContext(GlobalContext).state;\r\n const projectId = project._id;\r\n\r\n const msalContext = useMsal();\r\n const navigate = useNavigate();\r\n const isLibrary = isLibraryOrganization(organization._id);\r\n const { t } = useTranslation([\r\n \"project_setting/common\"\r\n ], {\r\n useSuspense: false\r\n })\r\n\r\n const isInternalUser = useInternalUserCheck(user.email);\r\n const [projectsLoading, projects, projectsLoadingError] = useGetProjects(organization._id);\r\n\r\n const [saving, setSaving] = useState(false);\r\n\r\n const [defaultProjectDetails, setDefaultProjectDetails] = useState({\r\n tags: []\r\n });\r\n const [projectDetails, setProjectDetails] = useState({\r\n tags: []\r\n });\r\n const [projectDetailsErrors, setProjectDetailErrors] = useState({\r\n name: \"\",\r\n url: \"\"\r\n })\r\n\r\n const [defaultLibraryDetails, setDefaultLibraryDetails] = useState({\r\n tilesImages: [],\r\n slideshowImages: []\r\n });\r\n const [libraryDetails, setLibraryDetails] = useState({\r\n tilesImages: [],\r\n slideshowImages: []\r\n });\r\n\r\n const [showRemoveFileDialog, setShowRemoveFileDialog] = useState(false);\r\n const [fileToRemove, setFileToRemove] = useState(\"\");\r\n\r\n const [showNetworkError, setShowNetworkError] = useState(false);\r\n useEffect(() => {\r\n if (showNetworkError) {\r\n setTimeout(() => {\r\n setShowNetworkError(false);\r\n }, 5000)\r\n }\r\n }, [showNetworkError])\r\n\r\n const [developerMode, setDeveloperMode] = useState(false);\r\n\r\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\r\n\r\n useEffect(() => {\r\n if (projects && projects.length > 0) {\r\n const project = projects.find(item => (item._id === projectId));\r\n const tags = project.tag.length === 0 ? [] : project.tag.split(',');\r\n const defaultProjectDetails = {\r\n name: project.name,\r\n url: project.url,\r\n description: project.description,\r\n tags: tags,\r\n abbreviation: project.abbreviation,\r\n icon: project.Icon,\r\n developerMode: project.developerMode === true,\r\n bgColor: project.bgColor\r\n }\r\n setDefaultProjectDetails({ ...defaultProjectDetails });\r\n setProjectDetails({ ...defaultProjectDetails });\r\n setDeveloperMode(project.developerMode === true);\r\n\r\n if (isLibrary) {\r\n const libraryDetails = {\r\n isPublished: project.isPublished === true,\r\n isSuperApp: project.isSuperApp === true,\r\n isFeaturedApp: project.isFeaturedApp === true,\r\n hasTableFeature: project.hasTableFeature === true,\r\n hasCardsFeature: project.hasCardsFeature === true,\r\n hasCalendarFeature: project.hasCalendarFeature === true,\r\n hasSplitViewFeature: project.hasSplitViewFeature === true,\r\n hasListsFeature: project.hasListsFeature === true,\r\n hasChartsFeature: project.hasChartsFeature === true,\r\n hasReportingFeature: project.hasReportingFeature === true,\r\n hasDashboardFeature: project.hasDashboardFeature === true,\r\n existingTileImages: project.TilesImages ? project.TilesImages.split(',') : [],\r\n existingSlideshowImages: project.SlideshowImages ? project.SlideshowImages.split(',') : [],\r\n tilesImages: [],\r\n slideshowImages: []\r\n }\r\n setDefaultLibraryDetails({ ...libraryDetails });\r\n setLibraryDetails({ ...libraryDetails });\r\n }\r\n }\r\n }, [projects])\r\n\r\n const [saveDisabled, setSaveDisabled] = useState(true);\r\n\r\n useEffect(() => {\r\n const isFormValuesSame = (\r\n defaultProjectDetails.name === projectDetails.name &&\r\n defaultProjectDetails.description === projectDetails.description &&\r\n defaultProjectDetails.abbreviation === projectDetails.abbreviation &&\r\n defaultProjectDetails.icon === projectDetails.icon &&\r\n developerMode === defaultProjectDetails.developerMode &&\r\n areTagsSame(defaultProjectDetails.tags, projectDetails.tags)\r\n );\r\n const projectDetailsHasErrors = Object.values(projectDetailsErrors).some(value => value);\r\n if (isLibrary) {\r\n const isLibraryFormValuesSame = (\r\n defaultLibraryDetails.isPublished === libraryDetails.isPublished &&\r\n defaultLibraryDetails.isSuperApp === libraryDetails.isSuperApp &&\r\n defaultLibraryDetails.isFeaturedApp === libraryDetails.isFeaturedApp &&\r\n defaultLibraryDetails.hasTableFeature === libraryDetails.hasTableFeature &&\r\n defaultLibraryDetails.hasCardsFeature === libraryDetails.hasCardsFeature &&\r\n defaultLibraryDetails.hasCalendarFeature === libraryDetails.hasCalendarFeature &&\r\n defaultLibraryDetails.hasSplitViewFeature === libraryDetails.hasSplitViewFeature &&\r\n defaultLibraryDetails.hasListsFeature === libraryDetails.hasListsFeature &&\r\n defaultLibraryDetails.hasChartsFeature === libraryDetails.hasChartsFeature &&\r\n defaultLibraryDetails.hasReportingFeature === libraryDetails.hasReportingFeature &&\r\n defaultLibraryDetails.hasDashboardFeature === libraryDetails.hasDashboardFeature &&\r\n libraryDetails.tilesImages.length === 0 &&\r\n libraryDetails.slideshowImages.length === 0\r\n );\r\n const tileImageHasError = libraryDetails.tilesImages.some(image => !!image.validationErrors);\r\n const slideshowImageHasError = libraryDetails.slideshowImages.some(image => !!image.validationErrors);\r\n const saveDisabled = tileImageHasError || slideshowImageHasError || projectDetailsHasErrors || (\r\n isFormValuesSame && isLibraryFormValuesSame\r\n );\r\n setSaveDisabled(saveDisabled);\r\n } else {\r\n const saveDisabled = projectDetailsHasErrors ? true : isFormValuesSame\r\n setSaveDisabled(saveDisabled);\r\n }\r\n }, [projectDetails, developerMode, libraryDetails])\r\n\r\n function areTagsSame(currentValue, defaultValue) {\r\n if (currentValue.length !== defaultValue.length) {\r\n return false;\r\n }\r\n for (let tagIndex = 0; tagIndex < currentValue.length; tagIndex++) {\r\n const tag = currentValue[tagIndex];\r\n const isTagUsedInDefault = defaultValue.some(defaultTag => defaultTag.trim() === tag.trim());\r\n if (!isTagUsedInDefault) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n const [tagField, setTagField] = useState(null);\r\n\r\n const handleEnterInField = useCallback((event) => {\r\n if (event.keyCode === 13) {\r\n const inputValue = tagField && tagField._input.value;\r\n if (inputValue) {\r\n setProjectDetails(prevValue => {\r\n const tags = [...prevValue.tags];\r\n const isValueUsed = tags.some(tag => tag.toLowerCase().trim() === inputValue.toLowerCase().trim());\r\n if (!isValueUsed) {\r\n tags.push(inputValue);\r\n }\r\n return {\r\n ...prevValue,\r\n tags\r\n }\r\n })\r\n tagField.setState({\r\n text: \"\"\r\n })\r\n }\r\n }\r\n }, [projectDetails, tagField])\r\n\r\n useEffect(() => {\r\n if (tagField && tagField._input) {\r\n tagField._input.addEventListener(\"keydown\", handleEnterInField)\r\n }\r\n }, [handleEnterInField])\r\n\r\n function handleProjectDetailsChange(e) {\r\n const { name, value } = e.target;\r\n setProjectDetails(prevValue => ({\r\n ...prevValue,\r\n [name]: value\r\n }))\r\n\r\n const error = validateField(name, value);\r\n setProjectDetailErrors(prevValue => ({\r\n ...prevValue,\r\n [name]: error\r\n }));\r\n }\r\n\r\n function handleDeveloperModeChange(e) {\r\n setDeveloperMode(e.value);\r\n }\r\n\r\n function handleIconChange(value) {\r\n handleProjectDetailsChange({ target: { name: \"icon\", value } });\r\n }\r\n\r\n function handleLibraryDetailBooleanFieldChange(e) {\r\n const { value } = e;\r\n const { name } = e.target;\r\n setLibraryDetails(prevValue => ({\r\n ...prevValue,\r\n [name]: value\r\n }))\r\n }\r\n\r\n function addFileToQueueOfUploadField(event) {\r\n if (event.newState.length <= 10) {\r\n handleLibraryDetailFileFieldChange(event);\r\n }\r\n }\r\n\r\n function handleLibraryDetailFileFieldChange(event) {\r\n const { name } = event.target.props;\r\n const { newState } = event;\r\n setLibraryDetails(prevValue => ({\r\n ...prevValue,\r\n [name]: newState\r\n }));\r\n }\r\n\r\n function validateField(name, value) {\r\n switch (name) {\r\n case 'name':\r\n if (value.trim() === \"\") {\r\n return t(\"errors.name_required\");\r\n }\r\n if (hasSpecialCharacters(value.trim())) {\r\n return t(\"errors.name_contains_special_characters\");\r\n }\r\n if (startsWithNumber(value.trim())) {\r\n return t(\"errors.name_starts_with_number\");\r\n }\r\n if (isProjectNameUsed(value.trim())) {\r\n return t(\"errors.name_already_exists\");\r\n }\r\n return \"\"\r\n default:\r\n return \"\"\r\n }\r\n }\r\n\r\n function isProjectNameUsed(name) {\r\n return projects.some(existingProject => (\r\n existingProject.name.trim().toLowerCase().replace(/[^a-zA-Z0-9]/g, \"\") === name.trim().toLowerCase().replace(/[^a-zA-Z0-9]/g, \"\") &&\r\n existingProject._id !== project._id\r\n ));\r\n }\r\n\r\n function hasSpecialCharacters(string) {\r\n return /[^a-zA-Z0-9 ]/g.test(string);\r\n }\r\n\r\n function startsWithNumber(string) {\r\n return /^\\d+/g.test(string);\r\n }\r\n\r\n async function handleSubmit(e) {\r\n e.preventDefault();\r\n try {\r\n setSaving(true);\r\n const properties = {\r\n name: projectDetails.name.trim().replace(/\\s\\s+/g, \" \"),\r\n url: projectDetails.name.trim().replace(/[^a-zA-Z0-9\\~\\_\\-\\.]/g, \"\"),\r\n abbreviation: projectDetails.abbreviation,\r\n tag: projectDetails.tags.join(','),\r\n description: projectDetails.description,\r\n Icon: projectDetails.icon,\r\n developerMode: developerMode,\r\n };\r\n\r\n if (isLibrary && developerMode) {\r\n const {\r\n tilesImages, slideshowImages, existingTileImages, existingSlideshowImages,\r\n ...requiredProperties\r\n } = libraryDetails;\r\n // set required properties in the main properties object\r\n // so it can be included while updating the node\r\n Object.keys(requiredProperties).forEach(key => properties[key] = requiredProperties[key]);\r\n\r\n if (tilesImages.length > 0) {\r\n const uploadedTileImages = await uploadFiles(tilesImages, organization._id, project._id);\r\n if (defaultLibraryDetails.existingTileImages.length > 0) {\r\n const fileName = defaultLibraryDetails.existingTileImages[0]\r\n let path = organization._id + \"/\" + project._id + \"/ProjectImages/\" + fileName;\r\n DeleteFile(path, fileName)\r\n }\r\n properties.TilesImages = uploadedTileImages.join(',');\r\n }\r\n if (slideshowImages.length > 0) {\r\n const uploadedSlideshowImages = await uploadFiles(slideshowImages, organization._id, project._id);\r\n properties.SlideshowImages = [\r\n ...defaultLibraryDetails.existingSlideshowImages, ...uploadedSlideshowImages\r\n ].join(',');\r\n }\r\n }\r\n await updateProject(project._id, properties);\r\n\r\n if (properties.name !== defaultProjectDetails.name) {\r\n const [changeOnRuntimeStatus, changeOnRuntimeMessage] = await updateProjectLabelAndUrlOnRuntime(\r\n organization._id, properties.url, properties.name, msalContext, project.instances\r\n )\r\n if (changeOnRuntimeStatus === \"error\") {\r\n console.error(changeOnRuntimeMessage);\r\n alert(\"Something went wrong while making changes. Please contact else you may lose access to your \" + changeOnRuntimeMessage.instance + \" instance\");\r\n } else {\r\n if (isAccessedInIframe) {\r\n postMessageToRuntime({\r\n reload: true,\r\n organizationUrl: organization.orgUrl,\r\n projectUrl: properties.url\r\n })\r\n } else {\r\n redirectToNewUrl();\r\n }\r\n }\r\n }\r\n\r\n if (\r\n !isAccessedInIframe &&\r\n developerMode !== defaultProjectDetails.developerMode\r\n ) {\r\n redirectToNewUrl();\r\n }\r\n\r\n // reset default project details\r\n const newProjectDetails = {\r\n ...projectDetails,\r\n url: properties.url,\r\n developerMode\r\n }\r\n setDefaultProjectDetails(newProjectDetails);\r\n setProjectDetails({ ...newProjectDetails });\r\n if (isLibrary && developerMode) {\r\n const { tilesImages, slideshowImages, ...restLibraryDetails } = libraryDetails;\r\n const clonedRestLibraryDetails = structuredClone(restLibraryDetails);\r\n clonedRestLibraryDetails.existingTileImages = properties.TilesImages ? properties.TilesImages.split(',') : defaultLibraryDetails.existingTileImages;\r\n clonedRestLibraryDetails.existingSlideshowImages = properties.SlideshowImages ? properties.SlideshowImages.split(',') : defaultLibraryDetails.existingSlideshowImages;\r\n setDefaultLibraryDetails(clonedRestLibraryDetails);\r\n setLibraryDetails(prevState => ({\r\n ...prevState,\r\n tilesImages: [],\r\n slideshowImages: []\r\n }));\r\n }\r\n } catch (e) {\r\n setShowNetworkError(true);\r\n } finally {\r\n setSaveDisabled(true);\r\n setSaving(false);\r\n }\r\n }\r\n\r\n function redirectToNewUrl() {\r\n window.location.href = `/${organization.orgName}/${projectDetails.name}/Setting/General`;\r\n }\r\n\r\n function toggleDeleteDialog() {\r\n setShowDeleteDialog(!showDeleteDialog);\r\n }\r\n\r\n async function disableProject() {\r\n const [disableStatus, disableMessage] = await disableAllInstancesOfApplicationOnRuntime(\r\n msalContext, organization._id, project.instances, defaultProjectDetails.name\r\n )\r\n\r\n if (disableStatus === \"error\") {\r\n setShowNetworkError(true);\r\n toggleDeleteDialog();\r\n return;\r\n }\r\n\r\n await updateProject(project._id, {\r\n isActive: false,\r\n deletedBy: user._id,\r\n deletedOn: new Date()\r\n });\r\n\r\n if (isAccessedInIframe) {\r\n postMessageToRuntime({\r\n reload: true,\r\n organizationUrl: organization.orgUrl\r\n })\r\n } else {\r\n navigate(`/${organization.orgName}`);\r\n }\r\n }\r\n\r\n function toggleRemoveFileDialog() {\r\n setShowRemoveFileDialog(!showRemoveFileDialog);\r\n }\r\n\r\n function handleRemoveFileClick(fileName) {\r\n setFileToRemove(fileName);\r\n toggleRemoveFileDialog();\r\n }\r\n\r\n async function removeFile() {\r\n const arrayNameToRemoveFrom = defaultLibraryDetails.existingTileImages[0] === fileToRemove ? \"existingTileImages\" : \"existingSlideshowImages\";\r\n const url = organization._id + \"/\" + project._id + \"/ProjectImages/\" + fileToRemove;\r\n DeleteFile(url);\r\n const arrayWithRemovedValue = defaultLibraryDetails[arrayNameToRemoveFrom].filter(value => value !== fileToRemove);\r\n setDefaultLibraryDetails(prevValue => ({\r\n ...prevValue,\r\n [arrayNameToRemoveFrom]: arrayWithRemovedValue\r\n }));\r\n const propertyName = arrayNameToRemoveFrom === \"existingSlideshowImages\" ? \"SlideshowImages\" : \"TilesImages\";\r\n await updateProject(project._id, {\r\n [propertyName]: arrayWithRemovedValue.join(',')\r\n })\r\n closeDeleteFileDialog();\r\n }\r\n\r\n function closeDeleteFileDialog() {\r\n setFileToRemove(\"\");\r\n toggleRemoveFileDialog();\r\n }\r\n\r\n function handleTagBlur(e, onChange) {\r\n const field = tagField\r\n const inputValue = field && field._input.value;\r\n if (inputValue) {\r\n const tags = [...projectDetails.tags];\r\n const isValueUsed = tags.some(tag => tag.toLowerCase().trim() === inputValue.toLowerCase().trim());\r\n if (!isValueUsed) {\r\n tags.push(inputValue);\r\n }\r\n field.setState(prevState => ({\r\n ...prevState,\r\n text: \"\"\r\n }))\r\n onChange({\r\n target: {\r\n name: e.target.name,\r\n value: tags\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (projectsLoading) {\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 if (projectsLoadingError) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    \r\n {t(\"errors.loading_error_warning1\")}\r\n

    \r\n

    \r\n {t(\"errors.loading_error_warning2\")}\r\n

    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n \r\n {\r\n showRemoveFileDialog &&\r\n \r\n }\r\n\r\n {!isAccessedInIframe &&\r\n \r\n }>\r\n
    \r\n }\r\n\r\n {showNetworkError &&\r\n \r\n {t(\"errors.network_error_warning\")}\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 {process.env.REACT_APP_RUNTIME_URL}/{organization.orgUrl}/\r\n {defaultProjectDetails.url}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n isInternalUser && defaultProjectDetails.developerMode &&\r\n <>\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n handleTagBlur(e, handleProjectDetailsChange)}\r\n value={projectDetails.tags}\r\n data={[]}\r\n opened={false}\r\n ref={setTagField} />\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 isInternalUser && organization.internalMode &&\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n \r\n {t(\"buttons.save\")}\r\n \r\n {\r\n saving &&\r\n \r\n  \r\n  \r\n \r\n \r\n \r\n }\r\n
    \r\n
    \r\n {\r\n isLibrary &&\r\n isInternalUser && defaultProjectDetails.developerMode &&\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 {t(\"fields.tiles_images\")}\r\n \r\n \r\n {\r\n defaultLibraryDetails.existingTileImages &&\r\n defaultLibraryDetails.existingTileImages.length > 0 &&\r\n \r\n }\r\n
    \r\n
    \r\n \r\n {t(\"fields.slideshow_images\")}\r\n \r\n \r\n {\r\n defaultLibraryDetails.existingSlideshowImages &&\r\n defaultLibraryDetails.existingSlideshowImages.length > 0 &&\r\n \r\n }\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n showDeleteDialog &&\r\n \r\n }\r\n
    \r\n
    \r\n {t(\"delete_app.title\")}\r\n
    \r\n \r\n \r\n {t(\"delete_app.buttons.delete\")}\r\n \r\n
    \r\n \r\n {t(\"delete_app.warning\")}\r\n
    \r\n
    \r\n
    \r\n
    {t(\"version_number\")}: {process.env.REACT_APP_BUILD_VERSION}
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nProjectSetting.defaultProps = {\r\n project: {\r\n tags: \"\"\r\n }\r\n}","import React from 'react';\r\nimport { ProjectSetting } from '../../Components/ProjectSettings/ProjectSetting';\r\n\r\nfunction WorkspaceProjectSettingsPage({ project }) {\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default WorkspaceProjectSettingsPage;","import React, { useState, useContext, useEffect } from 'react';\r\nimport { Switch, Checkbox } from \"@progress/kendo-react-inputs\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { PageContainer, Content, Header } from \"../Drawer/PageContainer\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport InnerLoader from \"../Shared/Loader/InnerLoader\";\r\nimport Loader from \"../Shared/Loader/loader\";\r\nimport { CheckForInternalUser } from '../Helpers/miscellaneous'\r\nimport ErrorMessage from '../Shared/Error/ErrorMessage'\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { OverlayLoader } from \"../Shared/Loader/OverlayLoader\"\r\nimport { updateCustomer } from \"../../API/Payment/Payment\";\r\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport { changeOrganizationOwner, getOrganizationUsers, updateOrganization, validateOrganizationName } from '../../API/Organization/organization';\r\nimport { LanguagesMap, runtimeLanguageMap } from './LanguagesMap';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { postMessageToRuntime } from '../Helpers/Runtime/runtime';\r\nimport { updateAdvanceModeInProject } from '../../API/Project/project';\r\n\r\n// function to render the organization users in the dropdown list\r\nconst userItemRender = (li, itemProps) => {\r\n const user = itemProps;\r\n const displayName = user.dataItem.displayName || \"\";\r\n const itemChildren = (\r\n
    \r\n
    \r\n {user.dataItem.email && user.dataItem.email.substring(0, 2).toUpperCase()}\r\n
    \r\n
    \r\n
    {displayName}
    \r\n
    {user.dataItem.email} - {user.dataItem.roleType}
    \r\n
    \r\n
    \r\n );\r\n return React.cloneElement(li, li.props, itemChildren);\r\n};\r\n\r\n// function to render the selected user in the dropdown list\r\nconst userValueRender = (li, itemProps) => {\r\n const user = itemProps;\r\n const displayName = user.displayName || \"\";\r\n const itemChildren = (\r\n
    {user.email && user.email.length > 0 &&\r\n
    \r\n
    \r\n {user.email && user.email.substring(0, 2).toUpperCase()}\r\n
    \r\n
    \r\n
    {displayName}
    \r\n
    {user.email} - {user.roleType}
    \r\n
    \r\n
    \r\n }
    \r\n );\r\n return React.cloneElement(li, li.props, itemChildren);\r\n};\r\n\r\nconst Overview = (props) => {\r\n\r\n // msal context\r\n const context = useContext(MsalContext);\r\n\r\n // loading states\r\n const [loading, setLoading] = useState(true);\r\n const [updating, setUpdating] = useState(false);\r\n const [changingOwner, setChangingOwner] = useState(false);\r\n const [deletingOrganization, setDeletingOrganization] = useState(false);\r\n\r\n // props states\r\n const [organization, setOrganization] = useState(props.organization);\r\n const [userRole, setUserRole] = useState(props.userRole);\r\n\r\n const { t, i18n } = useTranslation([\r\n \"organization/common\",\r\n \"organization/change_organization_dialog\",\r\n ], {\r\n useSuspense: false,\r\n });\r\n\r\n // user states\r\n const [organizationUsers, setOrganizationUsers] = useState([]);\r\n const [owner, setOwner] = useState({});\r\n const [selectedOwner, setSelectedOwner] = useState({});\r\n\r\n // form states\r\n const [organizationName, setOrganizationName] = useState(organization.orgName);\r\n const [organizationUrl, setOrganizationUrl] = useState(organization.orgUrl);\r\n const [organizationDescription, setOrganizationDescription] = useState(organization.description);\r\n const [internalMode, setInternalMode] = useState(organization.internalMode);\r\n const [isAIEnabled, setIsAIEnabled] = useState(organization.isAIEnabled);\r\n const organizationLanguage = LanguagesMap.find((language) => language.code === organization.platformLanguage);\r\n const [platformLanguage, setPlatformLanguage] = useState(organizationLanguage || LanguagesMap[0]);\r\n const [languageSelectionOnAppCreation, setLanguageSelectionOnAppCreation] = useState(organization.languageSelectionOnAppCreation || false);\r\n\r\n // dialog states\r\n const [showChangeOrganizationDialog, setShowChangeOrganizationDialog] = useState(false);\r\n //const [showDeleteOrganizationDialog, setShowDeleteOrganizationDialog] = useState(false);\r\n const [updatedOrganizationName, setUpdatedOrganizationName] = useState(\"\");\r\n const [consentAccepted, setConsentAccepted] = useState(false);\r\n //const [deleteOrganizationName, setDeleteOrganizationName] = useState(\"\");\r\n\r\n //error states\r\n const [error, setError] = useState({ isValid: true, message: \"\" });\r\n\r\n useEffect(() => {\r\n // Define an asynchronous function that fetches the necessary data\r\n const getOrganizationUsersData = async () => {\r\n // try catch block to catch any errors\r\n try {\r\n // get organization users and owner\r\n const { owner, organizationUsers } = await getOwnerAndOtherUsers();\r\n setOrganizationUsers(organizationUsers); // set organization users\r\n setOwner(owner); // set owner\r\n } catch (error) {\r\n console.log(error); // log error\r\n } finally {\r\n setLoading(false); // set loading to false\r\n }\r\n }\r\n getOrganizationUsersData();\r\n }, [props.organization]);\r\n\r\n // function to get organization users\r\n const getOwnerAndOtherUsers = async () => {\r\n const results = await getOrganizationUsers(organization._id);\r\n const organizationUsers = results.filter((user) => user.invitationAccepted === \"Accepted\" && user.isSubscriptionUser);\r\n const owner = organizationUsers.find((user) => user.roleType === \"Owner\");\r\n return { owner, organizationUsers };\r\n };\r\n\r\n // handle the change of the organization name\r\n const handleOrganizationNameChange = (e) => {\r\n let { value } = e.target;\r\n value = value.replace(/\\s/g, \"\").trim();\r\n let specialCharactersEntered = /[^a-zA-Z0-9\\-\\.\\_\\—]/g.test(value);\r\n\r\n if (value.trim() === \"\") {\r\n setError({ isValid: false, message: t(\"organization_settings.errors.name_required\") });\r\n } else if (value.trim().match(/^\\d/)) {\r\n setError({ isValid: false, message: t(\"organization_settings.errors.name_starts_with_number\") });\r\n } else if (specialCharactersEntered) {\r\n setError({ isValid: false, message: t(\"organization_settings.errors.name_contain_specical_character\") });\r\n } else {\r\n setError({ isValid: true, message: \"\" });\r\n }\r\n\r\n setOrganizationName(value);\r\n setOrganizationUrl(value);\r\n }\r\n\r\n // function to disable the save button if there are no changes made\r\n const shouldSaveButtonDisabled = () => {\r\n const defaultOrganizationLanguageSelectionOnAppCreation = organization.languageSelectionOnAppCreation || false;\r\n const condition =\r\n organization.description !== organizationDescription ||\r\n organization.orgName.trim() !== organizationName.trim() ||\r\n organization.orgUrl.trim() !== organizationUrl.trim() ||\r\n organization.internalMode !== internalMode ||\r\n organization.isAIEnabled !== isAIEnabled ||\r\n defaultOrganizationLanguageSelectionOnAppCreation !== languageSelectionOnAppCreation ||\r\n organization.platformLanguage !== platformLanguage.code;\r\n\r\n if (organizationName.trim() === \"\" || !error.isValid) return true;\r\n\r\n return !condition;\r\n };\r\n\r\n // function to update the organization data\r\n const onUpdateOrganization = async (e) => {\r\n e.preventDefault(); // prevent the default action of the form\r\n try {\r\n setUpdating(true); // set updating to true\r\n\r\n let isOrganizationNameTaken = organization.orgName.trim() === organizationName.trim() ? false : await checkIfOrganizationNameAvailable(); // check if organization name is available\r\n\r\n if (isOrganizationNameTaken) {\r\n setError({ isValid: false, message: t(\"organization_settings.errors.name_already_exists\") });\r\n return;\r\n }\r\n\r\n if (organization.orgName.trim() !== organizationName.trim()) {\r\n setShowChangeOrganizationDialog(true); // show change organization dialog\r\n setUpdatedOrganizationName(\"\"); // set updated organization name\r\n return;\r\n }\r\n let properties = {\r\n _id: organization._id,\r\n description: organizationDescription || \"\",\r\n internalMode: internalMode || false,\r\n isAIEnabled: isAIEnabled || false,\r\n languageSelectionOnAppCreation: languageSelectionOnAppCreation || false,\r\n platformLanguage: platformLanguage.code || \"en\"\r\n };\r\n await updateOrganization(properties)\r\n\r\n const result = { ...organization, ...properties };\r\n\r\n if (!result.internalMode && organization.internalMode) {\r\n await updateAdvanceModeInProject(organization._id); // update all project to set advance mode to false\r\n }\r\n\r\n if (organization.platformLanguage !== properties.platformLanguage) {\r\n postMessageToRuntime({\r\n eventType: \"LANGUAGE_CHANGED\",\r\n value: runtimeLanguageMap.find((language) => language.code === properties.platformLanguage).runtimeCode || \"en\"\r\n })\r\n i18n.changeLanguage(properties.platformLanguage);\r\n }\r\n\r\n setOrganizationName(result.orgName); // set organization name\r\n setOrganizationDescription(result.description); // set organization description\r\n setOrganizationUrl(result.orgUrl); // set organization url\r\n setInternalMode(result.internalMode); // set internal mode\r\n setOrganization(result); // set organization\r\n setPlatformLanguage(LanguagesMap.find((language) => language.code === result.platformLanguage)); // set platform language\r\n } catch (error) {\r\n console.log(error); // log error\r\n } finally {\r\n setUpdating(false); // set updating to false\r\n }\r\n };\r\n\r\n // function to check if organization name is available\r\n const checkIfOrganizationNameAvailable = async (e) => {\r\n let response = await validateOrganizationName(organizationName)\r\n if (organization.orgName.trim() === organizationName.trim()) {\r\n response = \"notTaken\"\r\n }\r\n return response === \"taken\" ? true : false;\r\n };\r\n\r\n // function to disable the change organizationo button if updated organization name does not match\r\n const enableChangeButton = () => {\r\n return (updatedOrganizationName.trim() !== organizationName.trim() || consentAccepted === false);\r\n };\r\n\r\n // funtion to save organization name\r\n const saveOrganizationName = async (e) => {\r\n e.preventDefault(); // prevent the default action of the form\r\n try {\r\n setUpdating(true); // set updating to true\r\n\r\n let propertiestoUpdateForDesigner = {\r\n _id: organization._id,\r\n description: organizationDescription || \"\",\r\n internalMode: internalMode || false,\r\n orgName: organizationName.trim() || \"\",\r\n orgUrl: organizationUrl.trim().replace(/\\s/g, \"\"),\r\n isAIEnabled: isAIEnabled,\r\n languageSelectionOnAppCreation: languageSelectionOnAppCreation || false,\r\n platformLanguage: platformLanguage.code || \"en\"\r\n }\r\n\r\n await updateOrganization(propertiestoUpdateForDesigner); // update organization\r\n\r\n const result = { ...organization, ...propertiestoUpdateForDesigner };\r\n\r\n if (!result.internalMode && organization.internalMode) {\r\n await updateAdvanceModeInProject(organization._id); // update all project to set advance mode to false\r\n }\r\n\r\n if (organization.platformLanguage !== propertiestoUpdateForDesigner.platformLanguage) {\r\n postMessageToRuntime({\r\n eventType: \"LANGUAGE_CHANGED\",\r\n value: runtimeLanguageMap.find((language) => language.code === propertiestoUpdateForDesigner.platformLanguage).runtimeCode || \"en\"\r\n })\r\n i18n.changeLanguage(propertiestoUpdateForDesigner.platformLanguage);\r\n }\r\n\r\n setOrganizationName(result.orgName); // set organization name \r\n setOrganizationDescription(result.description); // set organization description \r\n setOrganizationUrl(result.orgUrl); // set organization url \r\n setInternalMode(result.internalMode); // set internal mode \r\n setOrganization(result); // set organization\r\n setPlatformLanguage(LanguagesMap.find((language) => language.code === result.platformLanguage)); // set platform language\r\n localStorage.setItem(\"selectedOrganization\", result.orgName);\r\n if (props.showInIframe) {\r\n props.reload(result.orgUrl);\r\n } else {\r\n window.location.href = process.env.REACT_APP_DESIGNER_URL + \"/\" + result.orgName + \"/_Organisation/organizationOverview\";\r\n }\r\n } catch (error) {\r\n console.log(error); // log error \r\n } finally {\r\n setUpdating(false); // set updating to false \r\n setShowChangeOrganizationDialog(false); // hide change organization dialog\r\n setUpdatedOrganizationName(\"\"); // set updated organization name\r\n setConsentAccepted(false); // set consent accepted to false\r\n }\r\n };\r\n\r\n // function to change the organization owner\r\n const changeOwner = async (e) => {\r\n e.preventDefault(); // prevent the default action of the form\r\n try {\r\n setChangingOwner(true);\r\n // update the customer name and email in stripe\r\n const firstName = selectedOwner.firstName || \"\";\r\n const lastName = selectedOwner.lastName || \"\";\r\n\r\n await updateCustomer(organization._id, {\r\n stripeCustomerId: organization.stripeCustomerId,\r\n name: firstName + \" \" + lastName,\r\n email: selectedOwner.email\r\n });\r\n\r\n // change the organization owner\r\n const result = await changeOrganizationOwner(organization._id, owner._id, selectedOwner._id);\r\n setUserRole(selectedOwner.roleType) // set the user role to the selected owners role\r\n setOwner(selectedOwner); // set the owner to the selected owners\r\n if (!props.showInIframe) {\r\n window.location.reload(); // reload the page\r\n }\r\n setOrganization(result); // set the organization to the result\r\n } catch (error) { // catch any errors that may be thrown \r\n console.log(error); // log the error \r\n } finally {\r\n setSelectedOwner({}); // reset the selected owner to empty\r\n setChangingOwner(false); // reset the updating state to false \r\n }\r\n }\r\n\r\n // function to disable the deete organizationo button if updated organization name does not match\r\n // const enableDeleteButton = () => {\r\n // return (deleteOrganizationName.trim() !== organization.orgName.trim());\r\n // };\r\n\r\n //funtion to delete organization\r\n // const deleteOrganization = async (e) => {\r\n // e.preventDefault();\r\n\r\n // try {\r\n // setDeletingOrganization(true);\r\n // await enabledisableOnRuntime(context, \"Organization\", organization.orgName, organization._id, null, null, true);\r\n // await updateOrganization({ _id: organization._id, isActive: false });\r\n // if (props.showInIframe) {\r\n // props.reload()\r\n // } else {\r\n // window.location.href = \"/_CreateOrganization\";\r\n // }\r\n // } catch (error) {\r\n // console.error(error); // log error as an error instead of a log message \r\n // } finally {\r\n // setDeletingOrganization(false);\r\n // setShowDeleteOrganizationDialog(false);\r\n // setDeleteOrganizationName(\"\");\r\n // }\r\n // }\r\n\r\n // set loading to true while the data is being fetched\r\n if (loading) return \r\n\r\n // render the organization overview page\r\n return (\r\n \r\n {\r\n !props.showInIframe &&\r\n \r\n \r\n }\r\n \r\n \r\n {(updating || changingOwner || deletingOrganization) && }\r\n {showChangeOrganizationDialog &&\r\n { setShowChangeOrganizationDialog(false); setUpdatedOrganizationName(\"\"); setConsentAccepted(false); }}\r\n >\r\n
    \r\n
    \r\n {t(\"warning1\", { ns: \"organization/change_organization_dialog\" })}\r\n
    \r\n
    \r\n {t(\"warning2\", { ns: \"organization/change_organization_dialog\" })}\r\n
    \r\n
    \r\n {t(\"warning3\", { ns: \"organization/change_organization_dialog\", url: process.env.REACT_APP_DESIGNER_URL + \"/\" + organization.orgName })}\r\n
    \r\n
    \r\n {t(\"warning4\", { ns: \"organization/change_organization_dialog\" })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {t(\"current_organization_name_field_label\", { ns: \"organization/change_organization_dialog\" })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {t(\"new_organization_name_field_label\", { ns: \"organization/change_organization_dialog\" })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n setUpdatedOrganizationName(e.target.value)}\r\n value={updatedOrganizationName}\r\n className=\"form-control\"\r\n />\r\n
    \r\n
    \r\n
    \r\n setConsentAccepted(e.target.value)}\r\n label={t(\"terms_and_conditions_label\", { ns: \"organization/change_organization_dialog\" })} />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {updating && (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n {\r\n setShowChangeOrganizationDialog(false);\r\n setUpdatedOrganizationName(\"\");\r\n setConsentAccepted(false);\r\n }}\r\n type={\"button\"}\r\n className=\"btn btn-secondary\"\r\n >\r\n {t(\"buttons.cancel_button_label\", { ns: \"organization/change_organization_dialog\" })}\r\n \r\n \r\n
    \r\n
    \r\n \r\n }\r\n {/* {showDeleteOrganizationDialog &&\r\n { setShowDeleteOrganizationDialog(false); setDeleteOrganizationName(\"\") }}>\r\n
    \r\n
    Please read the following before you proceed:
    \r\n

    \r\n All users in your organization will immediately lose access to the organization and all apps created under it.\r\n

    \r\n

    \r\n You will have up to 30 days to recover this organization, after which it will be permanently deleted.\r\n

    \r\n

    \r\n This will result in the loss of all organizations and related app artifacts.\r\n

    \r\n
    \r\n The existing organization URL:\r\n {process.env.REACT_APP_DESIGNER_URL + \"/\" + organization.orgName} \r\n \r\n will not be redirected.\r\n
    \r\n
    \r\n\r\n
    \r\n To confirm this action, please type\r\n {organization.orgName}\r\n
    \r\n
    \r\n setDeleteOrganizationName(e.target.value)}\r\n value={deleteOrganizationName}\r\n className=\"my-3 form-control w-50\"\r\n />\r\n
    \r\n
    By clicking delete, you agree to the\r\n Terms of Service and\r\n Privacy Statement.\r\n
    \r\n\r\n \r\n
    \r\n {deletingOrganization && (\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 {t(\"organization_settings.name_field_label\")}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {\r\n CheckForInternalUser(props.user.email) &&\r\n
    \r\n
    \r\n {t(\"organization_settings.description_field_label\")}\r\n
    \r\n setOrganizationDescription(e.target.value)}\r\n value={organizationDescription}\r\n />\r\n
    \r\n }\r\n
    \r\n {t(\"organization_settings.url_field_label\")}\r\n
    \r\n
    \r\n {process.env.REACT_APP_RUNTIME_URL}/{organization.orgUrl}\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n CheckForInternalUser(props.user.email) &&\r\n
    \r\n
    \r\n {t(\"organization_settings.internal_mode_field_label\")}\r\n
    \r\n setInternalMode(e.target.value)}\r\n checked={internalMode}\r\n />\r\n
    \r\n }\r\n
    \r\n
    \r\n {t(\"organization_settings.ai_enabled_field_label\")}\r\n
    \r\n setIsAIEnabled(e.target.value)}\r\n checked={isAIEnabled}\r\n />\r\n
    \r\n
    \r\n
    \r\n {t(\"organization_settings.language_field_label\")}\r\n
    \r\n {\r\n setPlatformLanguage(e.target.value);\r\n if(e.target.value.code === \"en\") {\r\n setLanguageSelectionOnAppCreation(false);\r\n }\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n {t(\"organization_settings.language_selection_app_creation_field_label\")}\r\n
    \r\n setLanguageSelectionOnAppCreation(e.target.value)}\r\n checked={languageSelectionOnAppCreation}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"organization_settings.buttons.save_button_label\")}\r\n \r\n {updating && (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {t(\"change_owner_settings.title\")}\r\n
    \r\n\r\n
    \r\n
    \r\n {owner.email && owner.email.substring(0, 2).toUpperCase()}\r\n
    \r\n
    \r\n
    {owner.displayName}
    \r\n
    {owner.email}
    \r\n
    \r\n
    \r\n\r\n {(userRole === \"Owner\" && organization._id !== process.env.REACT_APP_LIBRARY_ORGANIZATION_ID) && (\r\n
    \r\n
    \r\n {t(\"change_owner_settings.change_owner_field_label\")}\r\n
    \r\n
    \r\n
    \r\n user._id !== owner._id)}\r\n className=\"form-control-custom show-x-button\"\r\n textField=\"email\"\r\n itemRender={userItemRender}\r\n valueRender={userValueRender}\r\n onChange={(e) => setSelectedOwner(e.target.value)}\r\n value={selectedOwner}\r\n />\r\n
    \r\n
    \r\n \r\n {t(\"change_owner_settings.buttons.change_owner_button_label\")}\r\n \r\n {changingOwner && (\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 Delete Organization\r\n
    \r\n\r\n setShowDeleteOrganizationDialog(true)}>\r\n \r\n Delete Organization\r\n \r\n \r\n
    \r\n \r\n This will affect all apps and members of this organization.\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 Overview;","import React from \"react\";\r\nimport Overview from \"../../Components/OrganizationSettings/Overview\";\r\nimport NoAccessComponent from \"../../Components/Shared/Error/NoAccess\";\r\n\r\nconst WorkspaceOrganizationSettingPage = ({ organization, user, role }) => {\r\n\r\n const reload = (url) => {\r\n window.parent.postMessage(JSON.stringify({ reload: true, organizationUrl: url }), process.env.REACT_APP_RUNTIME_URL);\r\n }\r\n\r\n const authorized = role.roleType === 'Owner' || role.roleType === 'Administrator';\r\n if (!authorized) {\r\n return \r\n }\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default WorkspaceOrganizationSettingPage; ","import { useMsal } from '@azure/msal-react';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { getUserAndOrganizationData } from '../../Components/Helpers/Schema/Schema';\r\nimport PricingForm from '../../Components/Pricing/PricingForm';\r\nimport PricingContextProvider from '../../Context/Pricing/PricingContext';\r\n\r\nfunction WorkspacePaymentPage({organization}) {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default WorkspacePaymentPage;","import { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { getDatalakeImageUrl } from \"../../Helpers/DateLakeStorage\";\r\nimport { useState } from \"react\";\r\n\r\nfunction ErrorDialog({ errorId, errorMessage, toggleErrorDialog }) {\r\n\r\n const [showMore, setShowMore] = useState(false);\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    It seems something went wrong

    \r\n
    \r\n
    \r\n

    \r\n

    \r\n Error Id - {errorId}\r\n
    \r\n {\r\n showMore &&\r\n
    \r\n Error: { errorMessage }\r\n
    \r\n }\r\n setShowMore(!showMore)}\r\n >\r\n {\r\n showMore ? \"Show less\" : \"Show more\"\r\n }\r\n \r\n

    \r\n
    \r\n
    \r\n

    \r\n Please contact the Codeless ONE support team if you want to report this issue.\r\n

    \r\n

    \r\n \r\n support@codelessone.com\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default ErrorDialog;","import { useMsal } from \"@azure/msal-react\"\r\nimport { useEffect } from \"react\"\r\nimport { postMessageToRuntime } from \"../../Components/Helpers/Runtime/runtime\";\r\n\r\nfunction AccessStorage() {\r\n\r\n const context = useMsal();\r\n\r\n useEffect(() => {\r\n window.addEventListener('message', handleMessage)\r\n return () => {\r\n window.removeEventListener('message', handleMessage)\r\n }\r\n }, [])\r\n\r\n function handleMessage(event) {\r\n if (event.origin === process.env.REACT_APP_RUNTIME_URL) {\r\n try {\r\n const data = JSON.parse(event.data);\r\n if (data.type === \"REFRESH_TOKEN\") {\r\n localStorage.setItem('accessToken', data.token)\r\n postMessageToRuntime(JSON.stringify({\r\n status: \"Success\"\r\n }))\r\n } else if (data.type === \"LOGOUT\") {\r\n const account = context.accounts[0];\r\n localStorage.clear();\r\n if (account) {\r\n context.instance.logoutRedirect({\r\n account: context.instance.getAccountByHomeId(account.homeAccountId)\r\n })\r\n }\r\n postMessageToRuntime(JSON.stringify({\r\n status: \"Success\"\r\n }))\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n postMessageToRuntime(JSON.stringify({\r\n status: \"Failure\",\r\n error: error.message\r\n }))\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n

    Access Storage

    \r\n
    \r\n )\r\n}\r\n\r\nexport default AccessStorage","import React from 'react';\r\nimport Loader from '../../Components/Shared/Loader/loader';\r\n\r\nconst NoRoutes = ({ didCheckUser, context }) => {\r\n\r\n if (context.inProgress !== 'none' || !didCheckUser) return \r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n 404 - Page not found\r\n

    \r\n
    \r\n Oops this is not the page you are looking for.\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default NoRoutes;\r\n","import { useMsal } from \"@azure/msal-react\";\r\nimport React from \"react\"\r\n\r\nconst SessionExpired = () => {\r\n\r\n\tconst context = useMsal();\r\n\r\n\tconst handleSignOut = (e) => {\r\n\t\tconst isInIframe = window.parent !== window.self;\r\n\t\tconst iframeParentOrigin = isInIframe ? document.referrer : \"\";\r\n\t\tconst isAccessedFromRuntime = isInIframe && iframeParentOrigin === (process.env.REACT_APP_RUNTIME_URL + \"/\");\r\n\t\tif (isAccessedFromRuntime) {\t\r\n\t\t\tlocalStorage.clear();\r\n\t\t\twindow.parent.postMessage(JSON.stringify({\r\n\t\t\t\tdesignerStatus: \"Signout\",\r\n\t\t\t}), process.env.REACT_APP_RUNTIME_URL);\r\n\t\t} else {\r\n\t\t\tlocalStorage.clear();\r\n\t\t\tcontext.instance.logoutRedirect();\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t

    Your session has expired

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tPlease log in again to continue using the application\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t)\r\n}\r\n\r\nexport default SessionExpired\r\n","import React, { useEffect, useState } from \"react\"\r\nimport { useParams } from \"react-router-dom\";\r\nimport Loader from \"../../Components/Shared/Loader/loader\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport WelcomeUser from \"../../Components/Dashboard/Project/WelcomeUser\";\r\nimport WorkspaceCreateProjectPage from \"./Recommendation/WorkspaceCreateProjectPage\";\r\nimport { AliceGPTContextProvider } from \"../../Context/AliceGPT/AliceGPTContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getUserAndItsOrganizations } from \"../../API/Organization/organization\";\r\n\r\nexport const WorkspaceCreateAppPage = (props) => {\r\n\r\n const params = useParams()\r\n const context = useMsal()\r\n\r\n const [state, setState] = useState({\r\n loading: true,\r\n organization: {},\r\n user: {},\r\n error: {\r\n isValid: true,\r\n type: \"\",\r\n message: \"\"\r\n }\r\n })\r\n\r\n const { i18n, ready: tReady } = useTranslation();\r\n\r\n const validateAccess = async () => {\r\n let error = {\r\n isValid: true,\r\n type: \"\",\r\n message: \"\"\r\n }\r\n let organization = {}\r\n let user = {}\r\n const accessToken = localStorage.getItem(\"accessToken\")\r\n if (!accessToken) {\r\n error.isValid = false\r\n error.type = \"login\"\r\n error.message = \"You are not logged in\"\r\n } else {\r\n let { organizations, user } = await getUserAndItsOrganizations(params.userEmail)\r\n \r\n organization = organizations.find(org => org._id === params.organizationId)\r\n if (user._id === undefined) {\r\n error.isValid = false\r\n error.type = \"user \"\r\n error.message = \"User not found\"\r\n } else if (organization.length === 0) {\r\n error.isValid = false\r\n error.type = \"organization\"\r\n error.message = \"No organization found for User\"\r\n } else if (organization._id !== params.organizationId) {\r\n error.isValid = false\r\n error.type = \"organization\"\r\n error.message = \"You do not have access to this organization\"\r\n } else if (!organization.isActive) {\r\n error.isValid = false\r\n error.type = \"organization\"\r\n error.message = \"Organization is not active anymore\"\r\n }\r\n }\r\n setState(prevState => ({\r\n ...prevState,\r\n error,\r\n loading: false,\r\n user,\r\n organization\r\n }))\r\n }\r\n\r\n useEffect(() => {\r\n validateAccess();\r\n }, [context]);\r\n\r\n useEffect(() => {\r\n if (tReady) {\r\n i18n.changeLanguage(state.organization.platformLanguage || \"en\");\r\n }\r\n }, [tReady, state.organization])\r\n\r\n if (state.loading) return \r\n\r\n if (state.error.isValid === false && state.error.type === \"subscription\") {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (state.error.isValid === false) {\r\n return (\r\n
    \r\n
    \r\n {state.error.message}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport React from 'react'; // Get all possible permutations of all power sets\n//\n// Super simple, non-algorithmic solution since the\n// number of class names will not be greater than 4\n\nfunction powerSetPermutations(arr) {\n var arrLength = arr.length;\n if (arrLength === 0 || arrLength === 1) return arr;\n\n if (arrLength === 2) {\n // prettier-ignore\n return [arr[0], arr[1], \"\".concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[1], \".\").concat(arr[0])];\n }\n\n if (arrLength === 3) {\n return [arr[0], arr[1], arr[2], \"\".concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0])];\n }\n\n if (arrLength >= 4) {\n // Currently does not support more than 4 extra\n // class names (after `.token` has been removed)\n return [arr[0], arr[1], arr[2], arr[3], \"\".concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0])];\n }\n}\n\nvar classNameCombinations = {};\n\nfunction getClassNameCombinations(classNames) {\n if (classNames.length === 0 || classNames.length === 1) return classNames;\n var key = classNames.join('.');\n\n if (!classNameCombinations[key]) {\n classNameCombinations[key] = powerSetPermutations(classNames);\n }\n\n return classNameCombinations[key];\n}\n\nexport function createStyleObject(classNames) {\n var elementStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var stylesheet = arguments.length > 2 ? arguments[2] : undefined;\n var nonTokenClassNames = classNames.filter(function (className) {\n return className !== 'token';\n });\n var classNamesCombinations = getClassNameCombinations(nonTokenClassNames);\n return classNamesCombinations.reduce(function (styleObject, className) {\n return _objectSpread(_objectSpread({}, styleObject), stylesheet[className]);\n }, elementStyle);\n}\nexport function createClassNameString(classNames) {\n return classNames.join(' ');\n}\nexport function createChildren(stylesheet, useInlineStyles) {\n var childrenCount = 0;\n return function (children) {\n childrenCount += 1;\n return children.map(function (child, i) {\n return createElement({\n node: child,\n stylesheet: stylesheet,\n useInlineStyles: useInlineStyles,\n key: \"code-segment-\".concat(childrenCount, \"-\").concat(i)\n });\n });\n };\n}\nexport default function createElement(_ref) {\n var node = _ref.node,\n stylesheet = _ref.stylesheet,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style,\n useInlineStyles = _ref.useInlineStyles,\n key = _ref.key;\n var properties = node.properties,\n type = node.type,\n TagName = node.tagName,\n value = node.value;\n\n if (type === 'text') {\n return value;\n } else if (TagName) {\n var childrenCreator = createChildren(stylesheet, useInlineStyles);\n var props;\n\n if (!useInlineStyles) {\n props = _objectSpread(_objectSpread({}, properties), {}, {\n className: createClassNameString(properties.className)\n });\n } else {\n var allStylesheetSelectors = Object.keys(stylesheet).reduce(function (classes, selector) {\n selector.split('.').forEach(function (className) {\n if (!classes.includes(className)) classes.push(className);\n });\n return classes;\n }, []); // For compatibility with older versions of react-syntax-highlighter\n\n var startingClassName = properties.className && properties.className.includes('token') ? ['token'] : [];\n var className = properties.className && startingClassName.concat(properties.className.filter(function (className) {\n return !allStylesheetSelectors.includes(className);\n }));\n props = _objectSpread(_objectSpread({}, properties), {}, {\n className: createClassNameString(className) || undefined,\n style: createStyleObject(properties.className, Object.assign({}, properties.style, style), stylesheet)\n });\n }\n\n var children = childrenCreator(node.children);\n return /*#__PURE__*/React.createElement(TagName, _extends({\n key: key\n }, props), children);\n }\n}","export default (function (astGenerator, language) {\n var langs = astGenerator.listLanguages();\n return langs.indexOf(language) !== -1;\n});","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"language\", \"children\", \"style\", \"customStyle\", \"codeTagProps\", \"useInlineStyles\", \"showLineNumbers\", \"showInlineLineNumbers\", \"startingLineNumber\", \"lineNumberContainerStyle\", \"lineNumberStyle\", \"wrapLines\", \"wrapLongLines\", \"lineProps\", \"renderer\", \"PreTag\", \"CodeTag\", \"code\", \"astGenerator\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport React from 'react';\nimport createElement from './create-element';\nimport checkForListedLanguage from './checkForListedLanguage';\nvar newLineRegex = /\\n/g;\n\nfunction getNewLines(str) {\n return str.match(newLineRegex);\n}\n\nfunction getAllLineNumbers(_ref) {\n var lines = _ref.lines,\n startingLineNumber = _ref.startingLineNumber,\n style = _ref.style;\n return lines.map(function (_, i) {\n var number = i + startingLineNumber;\n return /*#__PURE__*/React.createElement(\"span\", {\n key: \"line-\".concat(i),\n className: \"react-syntax-highlighter-line-number\",\n style: typeof style === 'function' ? style(number) : style\n }, \"\".concat(number, \"\\n\"));\n });\n}\n\nfunction AllLineNumbers(_ref2) {\n var codeString = _ref2.codeString,\n codeStyle = _ref2.codeStyle,\n _ref2$containerStyle = _ref2.containerStyle,\n containerStyle = _ref2$containerStyle === void 0 ? {\n \"float\": 'left',\n paddingRight: '10px'\n } : _ref2$containerStyle,\n _ref2$numberStyle = _ref2.numberStyle,\n numberStyle = _ref2$numberStyle === void 0 ? {} : _ref2$numberStyle,\n startingLineNumber = _ref2.startingLineNumber;\n return /*#__PURE__*/React.createElement(\"code\", {\n style: Object.assign({}, codeStyle, containerStyle)\n }, getAllLineNumbers({\n lines: codeString.replace(/\\n$/, '').split('\\n'),\n style: numberStyle,\n startingLineNumber: startingLineNumber\n }));\n}\n\nfunction getEmWidthOfNumber(num) {\n return \"\".concat(num.toString().length, \".25em\");\n}\n\nfunction getInlineLineNumber(lineNumber, inlineLineNumberStyle) {\n return {\n type: 'element',\n tagName: 'span',\n properties: {\n key: \"line-number--\".concat(lineNumber),\n className: ['comment', 'linenumber', 'react-syntax-highlighter-line-number'],\n style: inlineLineNumberStyle\n },\n children: [{\n type: 'text',\n value: lineNumber\n }]\n };\n}\n\nfunction assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber) {\n // minimally necessary styling for line numbers\n var defaultLineNumberStyle = {\n display: 'inline-block',\n minWidth: getEmWidthOfNumber(largestLineNumber),\n paddingRight: '1em',\n textAlign: 'right',\n userSelect: 'none'\n }; // prep custom styling\n\n var customLineNumberStyle = typeof lineNumberStyle === 'function' ? lineNumberStyle(lineNumber) : lineNumberStyle; // combine\n\n var assembledStyle = _objectSpread(_objectSpread({}, defaultLineNumberStyle), customLineNumberStyle);\n\n return assembledStyle;\n}\n\nfunction createLineElement(_ref3) {\n var children = _ref3.children,\n lineNumber = _ref3.lineNumber,\n lineNumberStyle = _ref3.lineNumberStyle,\n largestLineNumber = _ref3.largestLineNumber,\n showInlineLineNumbers = _ref3.showInlineLineNumbers,\n _ref3$lineProps = _ref3.lineProps,\n lineProps = _ref3$lineProps === void 0 ? {} : _ref3$lineProps,\n _ref3$className = _ref3.className,\n className = _ref3$className === void 0 ? [] : _ref3$className,\n showLineNumbers = _ref3.showLineNumbers,\n wrapLongLines = _ref3.wrapLongLines;\n var properties = typeof lineProps === 'function' ? lineProps(lineNumber) : lineProps;\n properties['className'] = className;\n\n if (lineNumber && showInlineLineNumbers) {\n var inlineLineNumberStyle = assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber);\n children.unshift(getInlineLineNumber(lineNumber, inlineLineNumberStyle));\n }\n\n if (wrapLongLines & showLineNumbers) {\n properties.style = _objectSpread(_objectSpread({}, properties.style), {}, {\n display: 'flex'\n });\n }\n\n return {\n type: 'element',\n tagName: 'span',\n properties: properties,\n children: children\n };\n}\n\nfunction flattenCodeTree(tree) {\n var className = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var newTree = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n\n if (node.type === 'text') {\n newTree.push(createLineElement({\n children: [node],\n className: _toConsumableArray(new Set(className))\n }));\n } else if (node.children) {\n var classNames = className.concat(node.properties.className);\n flattenCodeTree(node.children, classNames).forEach(function (i) {\n return newTree.push(i);\n });\n }\n }\n\n return newTree;\n}\n\nfunction processLines(codeTree, wrapLines, lineProps, showLineNumbers, showInlineLineNumbers, startingLineNumber, largestLineNumber, lineNumberStyle, wrapLongLines) {\n var _ref4;\n\n var tree = flattenCodeTree(codeTree.value);\n var newTree = [];\n var lastLineBreakIndex = -1;\n var index = 0;\n\n function createWrappedLine(children, lineNumber) {\n var className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n return createLineElement({\n children: children,\n lineNumber: lineNumber,\n lineNumberStyle: lineNumberStyle,\n largestLineNumber: largestLineNumber,\n showInlineLineNumbers: showInlineLineNumbers,\n lineProps: lineProps,\n className: className,\n showLineNumbers: showLineNumbers,\n wrapLongLines: wrapLongLines\n });\n }\n\n function createUnwrappedLine(children, lineNumber) {\n if (showLineNumbers && lineNumber && showInlineLineNumbers) {\n var inlineLineNumberStyle = assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber);\n children.unshift(getInlineLineNumber(lineNumber, inlineLineNumberStyle));\n }\n\n return children;\n }\n\n function createLine(children, lineNumber) {\n var className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n return wrapLines || className.length > 0 ? createWrappedLine(children, lineNumber, className) : createUnwrappedLine(children, lineNumber);\n }\n\n var _loop = function _loop() {\n var node = tree[index];\n var value = node.children[0].value;\n var newLines = getNewLines(value);\n\n if (newLines) {\n var splitValue = value.split('\\n');\n splitValue.forEach(function (text, i) {\n var lineNumber = showLineNumbers && newTree.length + startingLineNumber;\n var newChild = {\n type: 'text',\n value: \"\".concat(text, \"\\n\")\n }; // if it's the first line\n\n if (i === 0) {\n var _children = tree.slice(lastLineBreakIndex + 1, index).concat(createLineElement({\n children: [newChild],\n className: node.properties.className\n }));\n\n var _line = createLine(_children, lineNumber);\n\n newTree.push(_line); // if it's the last line\n } else if (i === splitValue.length - 1) {\n var stringChild = tree[index + 1] && tree[index + 1].children && tree[index + 1].children[0];\n var lastLineInPreviousSpan = {\n type: 'text',\n value: \"\".concat(text)\n };\n\n if (stringChild) {\n var newElem = createLineElement({\n children: [lastLineInPreviousSpan],\n className: node.properties.className\n });\n tree.splice(index + 1, 0, newElem);\n } else {\n var _children2 = [lastLineInPreviousSpan];\n\n var _line2 = createLine(_children2, lineNumber, node.properties.className);\n\n newTree.push(_line2);\n } // if it's neither the first nor the last line\n\n } else {\n var _children3 = [newChild];\n\n var _line3 = createLine(_children3, lineNumber, node.properties.className);\n\n newTree.push(_line3);\n }\n });\n lastLineBreakIndex = index;\n }\n\n index++;\n };\n\n while (index < tree.length) {\n _loop();\n }\n\n if (lastLineBreakIndex !== tree.length - 1) {\n var children = tree.slice(lastLineBreakIndex + 1, tree.length);\n\n if (children && children.length) {\n var lineNumber = showLineNumbers && newTree.length + startingLineNumber;\n var line = createLine(children, lineNumber);\n newTree.push(line);\n }\n }\n\n return wrapLines ? newTree : (_ref4 = []).concat.apply(_ref4, newTree);\n}\n\nfunction defaultRenderer(_ref5) {\n var rows = _ref5.rows,\n stylesheet = _ref5.stylesheet,\n useInlineStyles = _ref5.useInlineStyles;\n return rows.map(function (node, i) {\n return createElement({\n node: node,\n stylesheet: stylesheet,\n useInlineStyles: useInlineStyles,\n key: \"code-segement\".concat(i)\n });\n });\n} // only highlight.js has the highlightAuto method\n\n\nfunction isHighlightJs(astGenerator) {\n return astGenerator && typeof astGenerator.highlightAuto !== 'undefined';\n}\n\nfunction getCodeTree(_ref6) {\n var astGenerator = _ref6.astGenerator,\n language = _ref6.language,\n code = _ref6.code,\n defaultCodeValue = _ref6.defaultCodeValue;\n\n // figure out whether we're using lowlight/highlight or refractor/prism\n // then attempt highlighting accordingly\n // lowlight/highlight?\n if (isHighlightJs(astGenerator)) {\n var hasLanguage = checkForListedLanguage(astGenerator, language);\n\n if (language === 'text') {\n return {\n value: defaultCodeValue,\n language: 'text'\n };\n } else if (hasLanguage) {\n return astGenerator.highlight(language, code);\n } else {\n return astGenerator.highlightAuto(code);\n }\n } // must be refractor/prism, then\n\n\n try {\n return language && language !== 'text' ? {\n value: astGenerator.highlight(code, language)\n } : {\n value: defaultCodeValue\n };\n } catch (e) {\n return {\n value: defaultCodeValue\n };\n }\n}\n\nexport default function (defaultAstGenerator, defaultStyle) {\n return function SyntaxHighlighter(_ref7) {\n var language = _ref7.language,\n children = _ref7.children,\n _ref7$style = _ref7.style,\n style = _ref7$style === void 0 ? defaultStyle : _ref7$style,\n _ref7$customStyle = _ref7.customStyle,\n customStyle = _ref7$customStyle === void 0 ? {} : _ref7$customStyle,\n _ref7$codeTagProps = _ref7.codeTagProps,\n codeTagProps = _ref7$codeTagProps === void 0 ? {\n className: language ? \"language-\".concat(language) : undefined,\n style: _objectSpread(_objectSpread({}, style['code[class*=\"language-\"]']), style[\"code[class*=\\\"language-\".concat(language, \"\\\"]\")])\n } : _ref7$codeTagProps,\n _ref7$useInlineStyles = _ref7.useInlineStyles,\n useInlineStyles = _ref7$useInlineStyles === void 0 ? true : _ref7$useInlineStyles,\n _ref7$showLineNumbers = _ref7.showLineNumbers,\n showLineNumbers = _ref7$showLineNumbers === void 0 ? false : _ref7$showLineNumbers,\n _ref7$showInlineLineN = _ref7.showInlineLineNumbers,\n showInlineLineNumbers = _ref7$showInlineLineN === void 0 ? true : _ref7$showInlineLineN,\n _ref7$startingLineNum = _ref7.startingLineNumber,\n startingLineNumber = _ref7$startingLineNum === void 0 ? 1 : _ref7$startingLineNum,\n lineNumberContainerStyle = _ref7.lineNumberContainerStyle,\n _ref7$lineNumberStyle = _ref7.lineNumberStyle,\n lineNumberStyle = _ref7$lineNumberStyle === void 0 ? {} : _ref7$lineNumberStyle,\n wrapLines = _ref7.wrapLines,\n _ref7$wrapLongLines = _ref7.wrapLongLines,\n wrapLongLines = _ref7$wrapLongLines === void 0 ? false : _ref7$wrapLongLines,\n _ref7$lineProps = _ref7.lineProps,\n lineProps = _ref7$lineProps === void 0 ? {} : _ref7$lineProps,\n renderer = _ref7.renderer,\n _ref7$PreTag = _ref7.PreTag,\n PreTag = _ref7$PreTag === void 0 ? 'pre' : _ref7$PreTag,\n _ref7$CodeTag = _ref7.CodeTag,\n CodeTag = _ref7$CodeTag === void 0 ? 'code' : _ref7$CodeTag,\n _ref7$code = _ref7.code,\n code = _ref7$code === void 0 ? (Array.isArray(children) ? children[0] : children) || '' : _ref7$code,\n astGenerator = _ref7.astGenerator,\n rest = _objectWithoutProperties(_ref7, _excluded);\n\n astGenerator = astGenerator || defaultAstGenerator;\n var allLineNumbers = showLineNumbers ? /*#__PURE__*/React.createElement(AllLineNumbers, {\n containerStyle: lineNumberContainerStyle,\n codeStyle: codeTagProps.style || {},\n numberStyle: lineNumberStyle,\n startingLineNumber: startingLineNumber,\n codeString: code\n }) : null;\n var defaultPreStyle = style.hljs || style['pre[class*=\"language-\"]'] || {\n backgroundColor: '#fff'\n };\n var generatorClassName = isHighlightJs(astGenerator) ? 'hljs' : 'prismjs';\n var preProps = useInlineStyles ? Object.assign({}, rest, {\n style: Object.assign({}, defaultPreStyle, customStyle)\n }) : Object.assign({}, rest, {\n className: rest.className ? \"\".concat(generatorClassName, \" \").concat(rest.className) : generatorClassName,\n style: Object.assign({}, customStyle)\n });\n\n if (wrapLongLines) {\n codeTagProps.style = _objectSpread(_objectSpread({}, codeTagProps.style), {}, {\n whiteSpace: 'pre-wrap'\n });\n } else {\n codeTagProps.style = _objectSpread(_objectSpread({}, codeTagProps.style), {}, {\n whiteSpace: 'pre'\n });\n }\n\n if (!astGenerator) {\n return /*#__PURE__*/React.createElement(PreTag, preProps, allLineNumbers, /*#__PURE__*/React.createElement(CodeTag, codeTagProps, code));\n }\n /*\n * Some custom renderers rely on individual row elements so we need to turn wrapLines on\n * if renderer is provided and wrapLines is undefined.\n */\n\n\n if (wrapLines === undefined && renderer || wrapLongLines) wrapLines = true;\n renderer = renderer || defaultRenderer;\n var defaultCodeValue = [{\n type: 'text',\n value: code\n }];\n var codeTree = getCodeTree({\n astGenerator: astGenerator,\n language: language,\n code: code,\n defaultCodeValue: defaultCodeValue\n });\n\n if (codeTree.language === null) {\n codeTree.value = defaultCodeValue;\n } // determine largest line number so that we can force minWidth on all linenumber elements\n\n\n var largestLineNumber = codeTree.value.length + startingLineNumber;\n var rows = processLines(codeTree, wrapLines, lineProps, showLineNumbers, showInlineLineNumbers, startingLineNumber, largestLineNumber, lineNumberStyle, wrapLongLines);\n return /*#__PURE__*/React.createElement(PreTag, preProps, /*#__PURE__*/React.createElement(CodeTag, codeTagProps, !showInlineLineNumbers && allLineNumbers, renderer({\n rows: rows,\n stylesheet: style,\n useInlineStyles: useInlineStyles\n })));\n };\n}","export default {\n \"code[class*=\\\"language-\\\"]\": {\n \"color\": \"black\",\n \"background\": \"none\",\n \"textShadow\": \"0 1px white\",\n \"fontFamily\": \"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace\",\n \"fontSize\": \"1em\",\n \"textAlign\": \"left\",\n \"whiteSpace\": \"pre\",\n \"wordSpacing\": \"normal\",\n \"wordBreak\": \"normal\",\n \"wordWrap\": \"normal\",\n \"lineHeight\": \"1.5\",\n \"MozTabSize\": \"4\",\n \"OTabSize\": \"4\",\n \"tabSize\": \"4\",\n \"WebkitHyphens\": \"none\",\n \"MozHyphens\": \"none\",\n \"msHyphens\": \"none\",\n \"hyphens\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"]\": {\n \"color\": \"black\",\n \"background\": \"#f5f2f0\",\n \"textShadow\": \"0 1px white\",\n \"fontFamily\": \"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace\",\n \"fontSize\": \"1em\",\n \"textAlign\": \"left\",\n \"whiteSpace\": \"pre\",\n \"wordSpacing\": \"normal\",\n \"wordBreak\": \"normal\",\n \"wordWrap\": \"normal\",\n \"lineHeight\": \"1.5\",\n \"MozTabSize\": \"4\",\n \"OTabSize\": \"4\",\n \"tabSize\": \"4\",\n \"WebkitHyphens\": \"none\",\n \"MozHyphens\": \"none\",\n \"msHyphens\": \"none\",\n \"hyphens\": \"none\",\n \"padding\": \"1em\",\n \"margin\": \".5em 0\",\n \"overflow\": \"auto\"\n },\n \"pre[class*=\\\"language-\\\"]::-moz-selection\": {\n \"textShadow\": \"none\",\n \"background\": \"#b3d4fc\"\n },\n \"pre[class*=\\\"language-\\\"] ::-moz-selection\": {\n \"textShadow\": \"none\",\n \"background\": \"#b3d4fc\"\n },\n \"code[class*=\\\"language-\\\"]::-moz-selection\": {\n \"textShadow\": \"none\",\n \"background\": \"#b3d4fc\"\n },\n \"code[class*=\\\"language-\\\"] ::-moz-selection\": {\n \"textShadow\": \"none\",\n \"background\": \"#b3d4fc\"\n },\n \"pre[class*=\\\"language-\\\"]::selection\": {\n \"textShadow\": \"none\",\n \"background\": \"#b3d4fc\"\n },\n \"pre[class*=\\\"language-\\\"] ::selection\": {\n \"textShadow\": \"none\",\n \"background\": \"#b3d4fc\"\n },\n \"code[class*=\\\"language-\\\"]::selection\": {\n \"textShadow\": \"none\",\n \"background\": \"#b3d4fc\"\n },\n \"code[class*=\\\"language-\\\"] ::selection\": {\n \"textShadow\": \"none\",\n \"background\": \"#b3d4fc\"\n },\n \":not(pre) > code[class*=\\\"language-\\\"]\": {\n \"background\": \"#f5f2f0\",\n \"padding\": \".1em\",\n \"borderRadius\": \".3em\",\n \"whiteSpace\": \"normal\"\n },\n \"comment\": {\n \"color\": \"slategray\"\n },\n \"prolog\": {\n \"color\": \"slategray\"\n },\n \"doctype\": {\n \"color\": \"slategray\"\n },\n \"cdata\": {\n \"color\": \"slategray\"\n },\n \"punctuation\": {\n \"color\": \"#999\"\n },\n \"namespace\": {\n \"Opacity\": \".7\"\n },\n \"property\": {\n \"color\": \"#905\"\n },\n \"tag\": {\n \"color\": \"#905\"\n },\n \"boolean\": {\n \"color\": \"#905\"\n },\n \"number\": {\n \"color\": \"#905\"\n },\n \"constant\": {\n \"color\": \"#905\"\n },\n \"symbol\": {\n \"color\": \"#905\"\n },\n \"deleted\": {\n \"color\": \"#905\"\n },\n \"selector\": {\n \"color\": \"#690\"\n },\n \"attr-name\": {\n \"color\": \"#690\"\n },\n \"string\": {\n \"color\": \"#690\"\n },\n \"char\": {\n \"color\": \"#690\"\n },\n \"builtin\": {\n \"color\": \"#690\"\n },\n \"inserted\": {\n \"color\": \"#690\"\n },\n \"operator\": {\n \"color\": \"#9a6e3a\",\n \"background\": \"hsla(0, 0%, 100%, .5)\"\n },\n \"entity\": {\n \"color\": \"#9a6e3a\",\n \"background\": \"hsla(0, 0%, 100%, .5)\",\n \"cursor\": \"help\"\n },\n \"url\": {\n \"color\": \"#9a6e3a\",\n \"background\": \"hsla(0, 0%, 100%, .5)\"\n },\n \".language-css .token.string\": {\n \"color\": \"#9a6e3a\",\n \"background\": \"hsla(0, 0%, 100%, .5)\"\n },\n \".style .token.string\": {\n \"color\": \"#9a6e3a\",\n \"background\": \"hsla(0, 0%, 100%, .5)\"\n },\n \"atrule\": {\n \"color\": \"#07a\"\n },\n \"attr-value\": {\n \"color\": \"#07a\"\n },\n \"keyword\": {\n \"color\": \"#07a\"\n },\n \"function\": {\n \"color\": \"#DD4A68\"\n },\n \"class-name\": {\n \"color\": \"#DD4A68\"\n },\n \"regex\": {\n \"color\": \"#e90\"\n },\n \"important\": {\n \"color\": \"#e90\",\n \"fontWeight\": \"bold\"\n },\n \"variable\": {\n \"color\": \"#e90\"\n },\n \"bold\": {\n \"fontWeight\": \"bold\"\n },\n \"italic\": {\n \"fontStyle\": \"italic\"\n }\n};","import highlight from './highlight';\nimport defaultStyle from './styles/prism/prism';\nimport refractor from 'refractor';\nimport supportedLanguages from './languages/prism/supported-languages';\nvar highlighter = highlight(refractor, defaultStyle);\nhighlighter.supportedLanguages = supportedLanguages;\nexport default highlighter;","//\n// This file has been auto-generated by the `npm run build-languages-prism` task\n//\nexport default ['abap', 'abnf', 'actionscript', 'ada', 'agda', 'al', 'antlr4', 'apacheconf', 'apex', 'apl', 'applescript', 'aql', 'arduino', 'arff', 'asciidoc', 'asm6502', 'asmatmel', 'aspnet', 'autohotkey', 'autoit', 'avisynth', 'avro-idl', 'bash', 'basic', 'batch', 'bbcode', 'bicep', 'birb', 'bison', 'bnf', 'brainfuck', 'brightscript', 'bro', 'bsl', 'c', 'cfscript', 'chaiscript', 'cil', 'clike', 'clojure', 'cmake', 'cobol', 'coffeescript', 'concurnas', 'coq', 'cpp', 'crystal', 'csharp', 'cshtml', 'csp', 'css-extras', 'css', 'csv', 'cypher', 'd', 'dart', 'dataweave', 'dax', 'dhall', 'diff', 'django', 'dns-zone-file', 'docker', 'dot', 'ebnf', 'editorconfig', 'eiffel', 'ejs', 'elixir', 'elm', 'erb', 'erlang', 'etlua', 'excel-formula', 'factor', 'false', 'firestore-security-rules', 'flow', 'fortran', 'fsharp', 'ftl', 'gap', 'gcode', 'gdscript', 'gedcom', 'gherkin', 'git', 'glsl', 'gml', 'gn', 'go-module', 'go', 'graphql', 'groovy', 'haml', 'handlebars', 'haskell', 'haxe', 'hcl', 'hlsl', 'hoon', 'hpkp', 'hsts', 'http', 'ichigojam', 'icon', 'icu-message-format', 'idris', 'iecst', 'ignore', 'inform7', 'ini', 'io', 'j', 'java', 'javadoc', 'javadoclike', 'javascript', 'javastacktrace', 'jexl', 'jolie', 'jq', 'js-extras', 'js-templates', 'jsdoc', 'json', 'json5', 'jsonp', 'jsstacktrace', 'jsx', 'julia', 'keepalived', 'keyman', 'kotlin', 'kumir', 'kusto', 'latex', 'latte', 'less', 'lilypond', 'liquid', 'lisp', 'livescript', 'llvm', 'log', 'lolcode', 'lua', 'magma', 'makefile', 'markdown', 'markup-templating', 'markup', 'matlab', 'maxscript', 'mel', 'mermaid', 'mizar', 'mongodb', 'monkey', 'moonscript', 'n1ql', 'n4js', 'nand2tetris-hdl', 'naniscript', 'nasm', 'neon', 'nevod', 'nginx', 'nim', 'nix', 'nsis', 'objectivec', 'ocaml', 'opencl', 'openqasm', 'oz', 'parigp', 'parser', 'pascal', 'pascaligo', 'pcaxis', 'peoplecode', 'perl', 'php-extras', 'php', 'phpdoc', 'plsql', 'powerquery', 'powershell', 'processing', 'prolog', 'promql', 'properties', 'protobuf', 'psl', 'pug', 'puppet', 'pure', 'purebasic', 'purescript', 'python', 'q', 'qml', 'qore', 'qsharp', 'r', 'racket', 'reason', 'regex', 'rego', 'renpy', 'rest', 'rip', 'roboconf', 'robotframework', 'ruby', 'rust', 'sas', 'sass', 'scala', 'scheme', 'scss', 'shell-session', 'smali', 'smalltalk', 'smarty', 'sml', 'solidity', 'solution-file', 'soy', 'sparql', 'splunk-spl', 'sqf', 'sql', 'squirrel', 'stan', 'stylus', 'swift', 'systemd', 't4-cs', 't4-templating', 't4-vb', 'tap', 'tcl', 'textile', 'toml', 'tremor', 'tsx', 'tt2', 'turtle', 'twig', 'typescript', 'typoscript', 'unrealscript', 'uorazor', 'uri', 'v', 'vala', 'vbnet', 'velocity', 'verilog', 'vhdl', 'vim', 'visual-basic', 'warpscript', 'wasm', 'web-idl', 'wiki', 'wolfram', 'wren', 'xeora', 'xml-doc', 'xojo', 'xquery', 'yaml', 'yang', 'zig'];","export default {\n \"code[class*=\\\"language-\\\"]\": {\n \"background\": \"hsl(220, 13%, 18%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"textShadow\": \"0 1px rgba(0, 0, 0, 0.3)\",\n \"fontFamily\": \"\\\"Fira Code\\\", \\\"Fira Mono\\\", Menlo, Consolas, \\\"DejaVu Sans Mono\\\", monospace\",\n \"direction\": \"ltr\",\n \"textAlign\": \"left\",\n \"whiteSpace\": \"pre\",\n \"wordSpacing\": \"normal\",\n \"wordBreak\": \"normal\",\n \"lineHeight\": \"1.5\",\n \"MozTabSize\": \"2\",\n \"OTabSize\": \"2\",\n \"tabSize\": \"2\",\n \"WebkitHyphens\": \"none\",\n \"MozHyphens\": \"none\",\n \"msHyphens\": \"none\",\n \"hyphens\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"]\": {\n \"background\": \"hsl(220, 13%, 18%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"textShadow\": \"0 1px rgba(0, 0, 0, 0.3)\",\n \"fontFamily\": \"\\\"Fira Code\\\", \\\"Fira Mono\\\", Menlo, Consolas, \\\"DejaVu Sans Mono\\\", monospace\",\n \"direction\": \"ltr\",\n \"textAlign\": \"left\",\n \"whiteSpace\": \"pre\",\n \"wordSpacing\": \"normal\",\n \"wordBreak\": \"normal\",\n \"lineHeight\": \"1.5\",\n \"MozTabSize\": \"2\",\n \"OTabSize\": \"2\",\n \"tabSize\": \"2\",\n \"WebkitHyphens\": \"none\",\n \"MozHyphens\": \"none\",\n \"msHyphens\": \"none\",\n \"hyphens\": \"none\",\n \"padding\": \"1em\",\n \"margin\": \"0.5em 0\",\n \"overflow\": \"auto\",\n \"borderRadius\": \"0.3em\"\n },\n \"code[class*=\\\"language-\\\"]::-moz-selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"code[class*=\\\"language-\\\"] *::-moz-selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"] *::-moz-selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"code[class*=\\\"language-\\\"]::selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"code[class*=\\\"language-\\\"] *::selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"] *::selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \":not(pre) > code[class*=\\\"language-\\\"]\": {\n \"padding\": \"0.2em 0.3em\",\n \"borderRadius\": \"0.3em\",\n \"whiteSpace\": \"normal\"\n },\n \"comment\": {\n \"color\": \"hsl(220, 10%, 40%)\",\n \"fontStyle\": \"italic\"\n },\n \"prolog\": {\n \"color\": \"hsl(220, 10%, 40%)\"\n },\n \"cdata\": {\n \"color\": \"hsl(220, 10%, 40%)\"\n },\n \"doctype\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"punctuation\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"entity\": {\n \"color\": \"hsl(220, 14%, 71%)\",\n \"cursor\": \"help\"\n },\n \"attr-name\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"class-name\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"boolean\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"constant\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"number\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"atrule\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"keyword\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \"property\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"tag\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"symbol\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"deleted\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"important\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"selector\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"string\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"char\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"builtin\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"inserted\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"regex\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"attr-value\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"attr-value > .token.punctuation\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"variable\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \"operator\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \"function\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \"url\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \"attr-value > .token.punctuation.attr-equals\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"special-attr > .token.attr-value > .token.value.css\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-css .token.selector\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-css .token.property\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-css .token.function\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-css .token.url > .token.function\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-css .token.url > .token.string.url\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".language-css .token.important\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-css .token.atrule .token.rule\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-javascript .token.operator\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation\": {\n \"color\": \"hsl(5, 48%, 51%)\"\n },\n \".language-json .token.operator\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-json .token.null.keyword\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \".language-markdown .token.url\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-markdown .token.url > .token.operator\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-markdown .token.url-reference.url > .token.string\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-markdown .token.url > .token.content\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".language-markdown .token.url > .token.url\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-markdown .token.url-reference.url\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-markdown .token.blockquote.punctuation\": {\n \"color\": \"hsl(220, 10%, 40%)\",\n \"fontStyle\": \"italic\"\n },\n \".language-markdown .token.hr.punctuation\": {\n \"color\": \"hsl(220, 10%, 40%)\",\n \"fontStyle\": \"italic\"\n },\n \".language-markdown .token.code-snippet\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".language-markdown .token.bold .token.content\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \".language-markdown .token.italic .token.content\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-markdown .token.strike .token.content\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-markdown .token.strike .token.punctuation\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-markdown .token.list.punctuation\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-markdown .token.title.important > .token.punctuation\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"bold\": {\n \"fontWeight\": \"bold\"\n },\n \"italic\": {\n \"fontStyle\": \"italic\"\n },\n \"namespace\": {\n \"Opacity\": \"0.8\"\n },\n \"token.tab:not(:empty):before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"token.cr:before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"token.lf:before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"token.space:before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item\": {\n \"marginRight\": \"0.4em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 9%, 55%)\",\n \"padding\": \"0.1em 0.4em\",\n \"borderRadius\": \"0.3em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 9%, 55%)\",\n \"padding\": \"0.1em 0.4em\",\n \"borderRadius\": \"0.3em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 9%, 55%)\",\n \"padding\": \"0.1em 0.4em\",\n \"borderRadius\": \"0.3em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".line-highlight.line-highlight\": {\n \"background\": \"hsla(220, 100%, 80%, 0.04)\"\n },\n \".line-highlight.line-highlight:before\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"padding\": \"0.1em 0.6em\",\n \"borderRadius\": \"0.3em\",\n \"boxShadow\": \"0 2px 0 0 rgba(0, 0, 0, 0.2)\"\n },\n \".line-highlight.line-highlight[data-end]:after\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"padding\": \"0.1em 0.6em\",\n \"borderRadius\": \"0.3em\",\n \"boxShadow\": \"0 2px 0 0 rgba(0, 0, 0, 0.2)\"\n },\n \"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before\": {\n \"backgroundColor\": \"hsla(220, 100%, 80%, 0.04)\"\n },\n \".line-numbers.line-numbers .line-numbers-rows\": {\n \"borderRightColor\": \"hsla(220, 14%, 71%, 0.15)\"\n },\n \".command-line .command-line-prompt\": {\n \"borderRightColor\": \"hsla(220, 14%, 71%, 0.15)\"\n },\n \".line-numbers .line-numbers-rows > span:before\": {\n \"color\": \"hsl(220, 14%, 45%)\"\n },\n \".command-line .command-line-prompt > span:before\": {\n \"color\": \"hsl(220, 14%, 45%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-1\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-5\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-9\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-2\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-6\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-10\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-3\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-7\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-11\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-4\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-8\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-12\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(353, 100%, 66%, 0.15)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(353, 100%, 66%, 0.15)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(137, 100%, 55%, 0.15)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(137, 100%, 55%, 0.15)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \".prism-previewer.prism-previewer:before\": {\n \"borderColor\": \"hsl(224, 13%, 17%)\"\n },\n \".prism-previewer-gradient.prism-previewer-gradient div\": {\n \"borderColor\": \"hsl(224, 13%, 17%)\",\n \"borderRadius\": \"0.3em\"\n },\n \".prism-previewer-color.prism-previewer-color:before\": {\n \"borderRadius\": \"0.3em\"\n },\n \".prism-previewer-easing.prism-previewer-easing:before\": {\n \"borderRadius\": \"0.3em\"\n },\n \".prism-previewer.prism-previewer:after\": {\n \"borderTopColor\": \"hsl(224, 13%, 17%)\"\n },\n \".prism-previewer-flipped.prism-previewer-flipped.after\": {\n \"borderBottomColor\": \"hsl(224, 13%, 17%)\"\n },\n \".prism-previewer-angle.prism-previewer-angle:before\": {\n \"background\": \"hsl(219, 13%, 22%)\"\n },\n \".prism-previewer-time.prism-previewer-time:before\": {\n \"background\": \"hsl(219, 13%, 22%)\"\n },\n \".prism-previewer-easing.prism-previewer-easing\": {\n \"background\": \"hsl(219, 13%, 22%)\"\n },\n \".prism-previewer-angle.prism-previewer-angle circle\": {\n \"stroke\": \"hsl(220, 14%, 71%)\",\n \"strokeOpacity\": \"1\"\n },\n \".prism-previewer-time.prism-previewer-time circle\": {\n \"stroke\": \"hsl(220, 14%, 71%)\",\n \"strokeOpacity\": \"1\"\n },\n \".prism-previewer-easing.prism-previewer-easing circle\": {\n \"stroke\": \"hsl(220, 14%, 71%)\",\n \"fill\": \"transparent\"\n },\n \".prism-previewer-easing.prism-previewer-easing path\": {\n \"stroke\": \"hsl(220, 14%, 71%)\"\n },\n \".prism-previewer-easing.prism-previewer-easing line\": {\n \"stroke\": \"hsl(220, 14%, 71%)\"\n }\n};","import { decryptMessage, encryptMessage } from \"../Helpers/Crypto\";\r\n\r\nconst CodelessDataEncKey = \"F9C3F5E7-A55B-481C-BBC8-08BC74D24FF6\";\r\n\r\nexport function encryptData(data) {\r\n let cypherText = \"\";\r\n const dataToEncrypt = \"!\" + data + \"|\" + new Date().toUTCString() + \"!\";\r\n\r\n cypherText = encryptMessage(dataToEncrypt, CodelessDataEncKey);\r\n\r\n return cypherText;\r\n}\r\n\r\nexport function decryptData(cypherText) {\r\n let data = decryptMessage(cypherText, CodelessDataEncKey);\r\n\r\n if (data.startsWith(\"!\") && data.endsWith(\"!\")) {\r\n data = data.substring(1, data.length - 1);\r\n\r\n const parts = data.split(\"|\");\r\n\r\n if (parts.length === 2) {\r\n // Get Current UTC date time. \r\n\r\n const currentDate = new Date(new Date().toUTCString());\r\n // Get cypher date time.\r\n let cypherDate = new Date(parts[1]);\r\n\r\n // Add 2 minutes to cypher date time.\r\n cypherDate = addSecondsToDate(cypherDate, 120);\r\n\r\n // Check if current date is less than or equal to cypher date.\r\n if (currentDate <= cypherDate) {\r\n data = parts[0]; // Cypher is valid.\r\n }\r\n else {\r\n throw new Error(\"Cypher is expired.\")\r\n }\r\n } else {\r\n throw new Error(\"Invalid cypher.\")\r\n }\r\n } else {\r\n throw new Error(\"Invalid cypher.\")\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport function addSecondsToDate(myDate, seconds) {\r\n myDate.setSeconds(myDate.getSeconds() + seconds);\r\n return myDate;\r\n}","import CryptoJS from \"crypto-js\";\r\n\r\nexport function encryptMessage(message, secretKey) {\r\n const cypherText = CryptoJS.AES.encrypt(\r\n message,\r\n secretKey\r\n ).toString();\r\n\r\n return encodeURIComponent(cypherText);\r\n}\r\n\r\nexport function decryptMessage(ciphertext, secretKey) {\r\n const ciphertextDecoded = decodeURIComponent(ciphertext);\r\n let wordArray = CryptoJS.AES.decrypt(\r\n ciphertextDecoded,\r\n secretKey\r\n );\r\n\r\n // If not properly decrypted then try again.\r\n if (wordArray == null || wordArray == undefined || wordArray.sigBytes == 0) {\r\n wordArray = CryptoJS.AES.decrypt(ciphertextDecoded, secretKey);\r\n }\r\n\r\n return wordArray.toString(CryptoJS.enc.Utf8);\r\n}","import React from 'react';\r\nimport useAliceGPT from '../../Hooks/AliceGPT/useAliceGPT';\r\nimport * as AliceGPTEvents from '../../Context/AliceGPT/AliceGPTContextEvents';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport startsWithNumber from '../Helpers/Validators/startsWithNumber';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { LanguagesMap } from '../OrganizationSettings/LanguagesMap';\r\n\r\nfunction CopilotProjectDetailsForm({ checkDuplicateProjectName, showAIFields, showLanguageDropdown }) {\r\n\r\n const { t } = useTranslation(\"create_project/alice_project_details_form\", { useSuspense: false });\r\n\r\n const [{ form, showAdvancedConfigurations }, dispatch] = useAliceGPT();\r\n\r\n const isProjectNameUsed = checkDuplicateProjectName();\r\n const hasSpecialCharacters = /[^a-zA-Z0-9 ]/g.test(form.projectName);\r\n\r\n function handleFormChange(e) {\r\n const { name, value, maxLength } = e.target;\r\n let newValue = value;\r\n if (maxLength && maxLength > 0 && value.length > maxLength) {\r\n newValue = value.substring(0, maxLength);\r\n };\r\n const newFormDetails = { ...form, [name]: newValue };\r\n dispatch({ type: AliceGPTEvents.FORM_UPDATED, payload: newFormDetails });\r\n }\r\n\r\n function toggleAdvancedConfiguration() {\r\n if (showAdvancedConfigurations) {\r\n dispatch({ type: AliceGPTEvents.HIDE_ADVANCED_CONFIGURATIONS });\r\n } else {\r\n dispatch({ type: AliceGPTEvents.SHOW_ADVANCED_CONFIGURATIONS });\r\n }\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

    Introducing AI-Powered No-code Prototyping

    \r\n

    \r\n Codeless ONE empowers you to build business applications with AI and automation. It streamlines the process by suggesting app\r\n structures, prototyping quickly, and automatically validating your design and requirements - all without writing code.\r\n

    \r\n

    \r\n Let's build your first application prototype in minutes.\r\n

    \r\n
    \r\n e.preventDefault()}\r\n >\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {\r\n showLanguageDropdown &&\r\n
    \r\n {/* TODO: Support static translation */}\r\n \r\n \r\n
    \r\n }\r\n {\r\n showAIFields &&\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 CopilotProjectDetailsForm;","import React, { useEffect, useState } from 'react';\r\nimport useAliceGPT from '../../Hooks/AliceGPT/useAliceGPT';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport Scrollable from '../Shared/Edit/Scrollable';\r\nimport * as AliceGPTEvents from '../../Context/AliceGPT/AliceGPTContextEvents';\r\nimport AliceRecommendedEntities from '../Dashboard/Project/AliceGPT/AliceRecommendedEntities';\r\nimport AliceRecommendedRelations from '../Dashboard/Project/AliceGPT/AliceRecommendedRelations';\r\nimport EditPageConfiguration from '../Dashboard/Project/AliceGPT/EditPageConfiguration';\r\nimport { USER_PROFILE_ENTITY } from '../Dashboard/Project/AliceGPT/variables';\r\n\r\nimport startsWithNumber from '../Helpers/Validators/startsWithNumber';\r\nimport { bindShuffleMessageI18nEvents } from '../Shared/ShuffleMessage/MessagesHelper';\r\nimport { bindI18nEvents as bindAttributeTypeDropdowni18n } from '../Attributes/Fields/AttributeTypeField';\r\nimport { bindI18nEvents as bindAttributeTypeFieldi18n } from '../Shared/Recommendation/AttributeTypeDropdown';\r\nimport { generateDDL, generateSchemaSpecificationPDF, storeAppInMongoDB } from '../../API/Integrations/Integrations';\r\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\r\nimport { oneDark } from 'react-syntax-highlighter/dist/esm/styles/prism';\r\nimport { decryptData } from './utils';\r\nimport { useSearchParams } from 'react-router-dom';\r\nimport CopilotProjectDetailsForm from './CopilotProjectDetailsForm';\r\nimport { Button } from '@progress/kendo-react-buttons';\r\nimport { getDatalakeImageUrl } from '../Helpers/DateLakeStorage';\r\n\r\nexport function CreateAppFromCopilotForDevops() {\r\n\r\n const { t } = useTranslation([\r\n \"create_project/alice_gpt_dialog\",\r\n \"create_project/alice_project_details_form\",\r\n \"create_project/alice_recommended_entities\",\r\n \"create_project/alice_recommended_attributes_list\",\r\n \"create_project/alice_recommended_relations\",\r\n \"create_project/edit_page_configurations\",\r\n \"linked_entity/recommended_relation_card\",\r\n \"common/attribute_type_dropdown\",\r\n \"common/attribute_type_field\"\r\n ], { useSuspense: false });\r\n\r\n const [params] = useSearchParams();\r\n\r\n const [state, dispatch] = useAliceGPT();\r\n const [email, setEmail] = useState(\"\");\r\n const [error, setError] = useState(\"\");\r\n const [emailError, setEmailError] = useState(\"\");\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [showComplete, setShowComplete] = useState(false);\r\n\r\n const [ddlScript, setDDLScript] = useState(\"\");\r\n\r\n useEffect(() => {\r\n bindShuffleMessageI18nEvents()\r\n bindAttributeTypeDropdowni18n()\r\n bindAttributeTypeFieldi18n()\r\n\r\n try {\r\n const emailParam = decodeURIComponent(params.get(\"d\"));\r\n const email = decryptData(emailParam.replace(\" \", \"+\"));\r\n setEmail(email)\r\n } catch (e) {\r\n setError(e.message);\r\n }\r\n }, []);\r\n\r\n function handleMessage(event) {\r\n // extract email from event.data\r\n // set email to state\r\n // const { userEmail } = typeof event.data === \"string\" ? JSON.parse(event.data) : event.data;\r\n // setEmail(userEmail);\r\n }\r\n\r\n function isNextDisabled() {\r\n switch (state.step) {\r\n case 0:\r\n return (\r\n !state.form.projectName.trim() ||\r\n /[^a-zA-Z0-9 ]/g.test(state.form.projectName) ||\r\n entityWithErrorSelected() ||\r\n startsWithNumber(state.form.projectName.trim())\r\n )\r\n case 1:\r\n const selectedEntities = state.entities.filter(entity => entity.checked);\r\n const hasSameNameAsAnotherEntity = selectedEntities.some((entity, entityIndex) => {\r\n if (entity.checked) {\r\n const entityName = entity.name.trim().toLowerCase();\r\n return selectedEntities.some((e, i) =>\r\n e.name.trim().toLowerCase() === entityName &&\r\n i !== entityIndex\r\n );\r\n }\r\n return false;\r\n });\r\n const hasEmptyEntityName = selectedEntities.some(entity => entity.name.trim().length === 0);\r\n const hasEntityNameStartingWithNumber = selectedEntities.some(entity => startsWithNumber(entity.name.trim()));\r\n const entityHasAttributesWithSameName = selectedEntities.some(entity => {\r\n if (entity.checked) {\r\n const attributes = entity.attributes.filter(attribute => attribute.selected);\r\n const attributeNames = attributes.map(attribute => attribute.name.trim().toLowerCase());\r\n return attributeNames.some(name => attributeNames.filter(n => n === name).length > 1);\r\n }\r\n return false;\r\n });\r\n const entityWithNoAttributesSelected = selectedEntities.some(entity => entity.attributes.filter(attribute => attribute.selected).length === 0);\r\n const entityWithMoreThanOneStateAttribute = selectedEntities.some(entity => entity.attributes.filter(attribute => attribute.selected && attribute.type === \"State Field\").length > 1);\r\n const entityWithPicklistOrStateWith0AttributeSelected = selectedEntities.some(entity => (\r\n entity.attributes.find(attribute => (\r\n attribute.selected &&\r\n (attribute.type === \"Picklist String\" || attribute.type === \"State Field\") &&\r\n (!attribute.picklist || attribute.picklist.length === 0)\r\n ))\r\n ))\r\n const entityWithAttributesNameWithError = selectedEntities.some(entity => (\r\n entity.attributes.some(attribute => (\r\n attribute.selected &&\r\n (attribute.name.trim().length === 0 || /^\\d/g.test(attribute.name))\r\n ))\r\n ))\r\n const entityWithNoPagesSelected = selectedEntities.some(entity => (\r\n Object.values(entity.pageConfiguration).every(value => !value)\r\n ))\r\n if (\r\n hasSameNameAsAnotherEntity ||\r\n entityHasAttributesWithSameName ||\r\n hasEmptyEntityName ||\r\n hasEntityNameStartingWithNumber ||\r\n entityWithNoAttributesSelected ||\r\n entityWithMoreThanOneStateAttribute ||\r\n entityWithPicklistOrStateWith0AttributeSelected ||\r\n entityWithAttributesNameWithError\r\n ) return true;\r\n if (entityWithNoPagesSelected) return false;\r\n return isCreateAppDisabled();\r\n case 2:\r\n const selectedRelations = state.relations.filter(relation => relation.selected);\r\n const selectedEntitiesWithNoPagesSelected = state.entities.some(entity => (\r\n entity.checked &&\r\n Object.values(entity.pageConfiguration).every(value => !value)\r\n ));\r\n if (selectedEntitiesWithNoPagesSelected) return false;\r\n return (\r\n state.error ||\r\n !state.initialAttributesLoaded ||\r\n selectedRelations.length > state.subscription.maxRelationsPerApp\r\n );\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n function isCreateAppDisabled() {\r\n const selectedEntities = state.entities.filter(entity => entity.checked);\r\n const isInLoading = selectedEntities.some(entity => entity.attributesLoading);\r\n if (isInLoading) return true;\r\n const hasSameNameAsAnotherEntity = selectedEntities.some((entity, entityIndex) => {\r\n if (entity.checked) {\r\n const entityName = entity.name.trim().toLowerCase();\r\n return selectedEntities.some((e, i) =>\r\n e.name.trim().toLowerCase() === entityName &&\r\n i !== entityIndex\r\n );\r\n }\r\n return false;\r\n });\r\n const entityHasAttributesWithSameName = selectedEntities.some(entity => {\r\n if (entity.checked) {\r\n const attributes = entity.attributes.filter(attribute => attribute.selected);\r\n const attributeNames = attributes.map(attribute => attribute.name.trim().toLowerCase());\r\n return attributeNames.some(name => attributeNames.filter(n => n === name).length > 1);\r\n }\r\n return false;\r\n });\r\n const entityWithNoAttributesSelected = selectedEntities.some(entity => entity.attributes.filter(attribute => attribute.selected).length === 0);\r\n const entityWithMoreThanOneStateAttribute = selectedEntities.some(entity => entity.attributes.filter(attribute => attribute.selected && attribute.type === \"State Field\").length > 1);\r\n const entityWithPicklistOrStateWith0AttributeSelected = selectedEntities.some(entity => (\r\n entity.attributes.find(attribute => (\r\n attribute.selected &&\r\n (attribute.type === \"Picklist String\" || attribute.type === \"State Field\") &&\r\n (!attribute.picklist || attribute.picklist.length === 0)\r\n ))\r\n ))\r\n const entityWithAttributesNameWithError = selectedEntities.some(entity => (\r\n entity.attributes.some(attribute => (\r\n attribute.selected &&\r\n (attribute.name.trim().length === 0 || /^\\d/g.test(attribute.name))\r\n ))\r\n ))\r\n const entityWithNoPagesSelected = selectedEntities.some(entity => (\r\n Object.values(entity.pageConfiguration).every(value => !value)\r\n ))\r\n return (\r\n entityWithNoAttributesSelected ||\r\n entityWithMoreThanOneStateAttribute ||\r\n entityWithPicklistOrStateWith0AttributeSelected ||\r\n hasSameNameAsAnotherEntity ||\r\n entityHasAttributesWithSameName ||\r\n entityWithAttributesNameWithError ||\r\n entityWithNoPagesSelected\r\n )\r\n }\r\n\r\n function entityWithErrorSelected() {\r\n return state.entities.some(entity => entity.hasAttributeLoadingError && entity.checked);\r\n }\r\n\r\n function handleNext() {\r\n if (state.step === 1) {\r\n const numSelectedEntities = state.entities.filter(entity => entity.checked).length;\r\n // if (numSelectedEntities <= 2) {\r\n // dispatch({ type: AliceGPTEvents.NEXT });\r\n // }\r\n }\r\n dispatch({ type: AliceGPTEvents.NEXT });\r\n }\r\n\r\n function handleBack() {\r\n if (state.step === 3) {\r\n const numSelectedEntities = state.entities.filter(entity => entity.checked).length;\r\n if (numSelectedEntities <= 2) {\r\n dispatch({ type: AliceGPTEvents.BACK });\r\n }\r\n }\r\n dispatch({ type: AliceGPTEvents.BACK })\r\n }\r\n\r\n const handleSubmit = async () => {\r\n setShowComplete(true);\r\n\r\n // const selectedEntities = state.entities.length === 0 ? [USER_PROFILE_ENTITY] : getSelectedEntities();\r\n // const selectedRelations = state.entities.length === 0 ? [] : getSelectedRelations();\r\n\r\n // const entitiesAndAttributes = selectedEntities.map((entity) => ({\r\n // name: entity.name,\r\n // icon: entity.icon,\r\n // isUserEntity: entity.isUserEntity,\r\n // attributes: entity.attributes.map((attribute) => {\r\n // let picklist = attribute.picklist;\r\n // if (attribute.type === \"State Field\" && attribute.picklist.length === 0) {\r\n // picklist = [\"Not Started\", \"In Progress\", \"Completed\"];\r\n // }\r\n // return {\r\n // name: attribute.name,\r\n // type: attribute.type,\r\n // picklist: picklist,\r\n // required: attribute.required,\r\n // unique: attribute.unique,\r\n // isAzureAttribute: attribute.isAzureAttribute,\r\n // sysName: attribute.sysName\r\n // }\r\n // }),\r\n // pageConfiguration: entity.pageConfiguration\r\n // }));\r\n\r\n // setLoading(true);\r\n\r\n // const response = await storeAppInMongoDB(\r\n // email,\r\n // {\r\n // projectName: state.form.projectName,\r\n // description: state.form.description,\r\n // entities: entitiesAndAttributes,\r\n // relations: selectedRelations\r\n // }\r\n // );\r\n\r\n // setLoading(false);\r\n\r\n // setShowComplete(true);\r\n }\r\n\r\n async function storeAppMetaDataInMongoDB() {\r\n const selectedEntities = state.entities.length === 0 ? [USER_PROFILE_ENTITY] : getSelectedEntities();\r\n const selectedRelations = state.entities.length === 0 ? [] : getSelectedRelations();\r\n\r\n const entitiesAndAttributes = selectedEntities.map((entity) => ({\r\n name: entity.name,\r\n icon: entity.icon,\r\n isUserEntity: entity.isUserEntity,\r\n attributes: entity.attributes.map((attribute) => {\r\n let picklist = attribute.picklist;\r\n if (attribute.type === \"State Field\" && attribute.picklist.length === 0) {\r\n picklist = [\"Not Started\", \"In Progress\", \"Completed\"];\r\n }\r\n return {\r\n name: attribute.name,\r\n type: attribute.type,\r\n picklist: picklist,\r\n required: attribute.required,\r\n unique: attribute.unique,\r\n isAzureAttribute: attribute.isAzureAttribute,\r\n sysName: attribute.sysName\r\n }\r\n }),\r\n pageConfiguration: entity.pageConfiguration\r\n }));\r\n\r\n setLoading(true);\r\n\r\n const response = await storeAppInMongoDB(\r\n email,\r\n {\r\n projectName: state.form.projectName,\r\n description: state.form.description,\r\n entities: entitiesAndAttributes,\r\n relations: selectedRelations\r\n }\r\n );\r\n\r\n setLoading(false);\r\n }\r\n\r\n function getSelectedEntities() {\r\n return state.entities.filter(entity => entity.checked).map(entity => ({\r\n ...entity,\r\n attributes: entity.attributes.filter(attribute => {\r\n return attribute.selected\r\n })\r\n }));\r\n }\r\n\r\n function getSelectedRelations() {\r\n return state.relations.filter(relation => relation.selected);\r\n }\r\n\r\n // May require changes\r\n function showActions() {\r\n if (state.step === 2) {\r\n const selectedEntities = state.entities.filter(entity => entity.checked);\r\n return selectedEntities.length > 1 ? state.relationsLoaded : true;\r\n }\r\n return true;\r\n }\r\n\r\n // function isThereEntityWithDuplicateNames() {\r\n // const selectedEntities = state.entities.filter(entity => entity.checked);\r\n // return selectedEntities.some((entity, entityIndex) => {\r\n // const entityName = entity.name.trim().toLowerCase();\r\n // return selectedEntities.some((e, i) =>\r\n // e.name.trim().toLowerCase() === entityName &&\r\n // i !== entityIndex\r\n // );\r\n // });\r\n // }\r\n\r\n async function handleCreate() {\r\n await storeAppMetaDataInMongoDB();\r\n\r\n const url = `${process.env.REACT_APP_DESIGNER_URL}/signup?email=${email}&isFromCopilot=true`;\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.target = '_blank';\r\n a.click();\r\n }\r\n\r\n function handleEmailError() {\r\n const email = email.trim();\r\n if (email.length === 0) {\r\n setEmailError(\"Email is required.\");\r\n } else if (!isValidEmail(email)) {\r\n setEmailError(\"Email format not accepted.\");\r\n } else {\r\n setEmailError(\"\");\r\n }\r\n }\r\n\r\n function isValidEmail(email) {\r\n return String(email)\r\n .toLowerCase()\r\n .match(\r\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\r\n );\r\n }\r\n async function handleCreate() {\r\n await storeAppMetaDataInMongoDB();\r\n \r\n const url = `${process.env.REACT_APP_DESIGNER_URL}/signup?email=${email}&isFromCopilot=true`;\r\n\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.target = '_blank';\r\n a.click();\r\n }\r\n\r\n const stepContent = [\r\n false} />,\r\n ,\r\n ,\r\n // below is temporarily removed so commented\r\n // \r\n ]\r\n\r\n const stepDialogActions = [\r\n \r\n
    \r\n \r\n
    \r\n
    ,\r\n \r\n
    \r\n {\r\n state.isLoadingEntities ?\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n :\r\n <>\r\n {/* {\r\n state.entities.some(entity => (\r\n entity.attributes.filter(attribute => (\r\n attribute.selected && attribute.type === \"State Field\"\r\n )).length > 1\r\n )) &&\r\n \r\n {t(\"errors.only_one_state_allowed\")}\r\n \r\n } */}\r\n {/* {\r\n isThereEntityWithDuplicateNames() &&\r\n \r\n {t(\"errors.duplicate_entity_names\")}\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 // below is temporarily altered so commented\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 if (loading) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n if (showComplete) {\r\n return (\r\n
    \r\n \r\n

    \r\n Congratulations, your application is on the way.\r\n
    \r\n Please provide an email to use for your Codeless ONE account. This will allow you to access the app you've just created.\r\n

    \r\n
    \r\n setEmail(e.target.value)}\r\n onBlur={handleEmailError}\r\n />\r\n {\r\n emailError &&\r\n \r\n {emailError}\r\n \r\n }\r\n
    \r\n 0 && email.trim().length > 0 && isValidEmail(email))}\r\n >\r\n \r\n Sign up / Sign in\r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n if (error) {\r\n return (\r\n
    \r\n

    Error: {error}

    \r\n
    \r\n )\r\n }\r\n\r\n if (ddlScript && ddlScript.length > 0) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n {ddlScript}\r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n {stepContent[state.step]}\r\n \r\n
    \r\n {\r\n showActions() && stepDialogActions[state.step]\r\n }\r\n \r\n )\r\n}\r\n\r\nexport default CreateAppFromCopilotForDevops;","import { CreateAppFromCopilotForDevops } from \"../../../Components/Integrations/CreateAppForm\";\r\nimport { AliceGPTContextProvider } from \"../../../Context/AliceGPT/AliceGPTContext\";\r\n\r\nfunction CreateApp() {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CreateApp;","import * as React from \"react\";\r\nimport { useRef, useState } from \"react\";\r\nimport { ComboBox } from \"@progress/kendo-react-dropdowns\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { deleteNode } from \"../Helpers/Nodes\";\r\nimport EditorActions from \"../Shared/Edit/EditorActions\";\r\nimport RemoveDialog from \"../Shared/Remove/RemoveDialog\";\r\nimport Scrollable from \"../Shared/Edit/Scrollable\";\r\nimport { uuidv4 } from \"../Attributes/Fields/TreeDropdownHelper\";\r\nimport { updatePlanningConfiguration } from \"../../API/Planning/Planning\";\r\n\r\nclass DragCell extends React.Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t {\r\n\t\t\t\t\tDragCell.reorder(this.props.dataItem);\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.dataTransfer.dropEffect = \"copy\";\r\n\t\t\t\t}}\r\n\t\t\t\tonDragEnd={(e) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tDragCell.endDrag(this.props.dataItem);\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tDragCell.dragStart(this.props.dataItem);\r\n\t\t\t\t\t\te.dataTransfer.setData(\"dragging\", \"\");\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t{this.props.dataItem.indexId}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction InputCell(props) {\r\n\tconst [initValue, na] = useState(props.dataItem.key);\r\n\tconst ref = useRef(null);\r\n\treturn (\r\n\t\t\r\n\t\t\t {\r\n\t\t\t\t\tif (ref.current.value !== initValue) props.dataItem.onSave();\r\n\t\t\t\t}}\r\n\t\t\t\tdata-id={props.dataItem._id}\r\n\t\t\t\tdisabled={props.dataItem.key === \"Feedback\" ? true : false}\r\n\t\t\t\tkey={props.dataItem._id}\r\n\t\t\t\tonChange={props.dataItem.onChange}\r\n\t\t\t\tclassName={`form-control ${props.dataItem.error && \"is-invalid\"} `}\r\n\t\t\t\tvalue={props.dataItem.key}\r\n\t\t\t/>\r\n\r\n\t\t\t{props.dataItem.error && (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tThis field can not be empty. You can use button to remove it.\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n}\r\n\r\nclass OrganisationPlanningSidebar extends React.Component {\r\n\toldData = [];\r\n\tsaveButton = React.createRef();\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tpropsdata: props.SideData,\r\n\t\t\tfieldName: props.SideData.fieldName,\r\n\t\t\tdata: [],\r\n\t\t\ttoDeleteItem: [],\r\n\t\t\tdelete: {\r\n\t\t\t\tkey: false,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t},\r\n\t\t\tcompleteState: [],\r\n\t\t\tDeletePopup: false,\r\n\t\t\tolddata: [],\r\n\t\t};\r\n\t\tDragCell.reorder = this.reorder.bind(this);\r\n\t\tDragCell.dragStart = this.dragStart.bind(this);\r\n\t\tDragCell.endDrag = this.endDrag.bind(this);\r\n\t}\r\n\r\n\tcomponentDidMount = () => {\r\n\r\n\t\tthis.userRole = this.props.userRole;\r\n\t\tlet sortedData = this.props.SideData.data.slice().sort((a, b) => a.order - b.order);\r\n\t\tthis.oldData = this.props.SideData.data.slice();\r\n\t\tlet data = sortedData.map((i) => ({ ...i }));\r\n\t\tthis.oldcompleteState = sortedData.find((item) => item.completeState);\r\n\t\tlet options = [];\r\n\r\n\t\tif (this.props.SideData.fieldName === \"State\") {\r\n\t\t\toptions = [...data];\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tdata: data,\r\n\t\t\tcompleteState: sortedData.find((item) => item.completeState),\r\n\t\t\tolddata: data.slice(),\r\n\t\t\toptions,\r\n\t\t});\r\n\t\tthis.rowClick(sortedData[0]._id);\r\n\t};\r\n\r\n\tcomponentWillReceiveProps(props) {\r\n\t\tlet sortedData = props.SideData.data.slice().sort((a, b) => a.order - b.order);\r\n\t\tthis.oldData = props.SideData.data.slice();\r\n\t\tlet data = sortedData.map((i) => ({ ...i }));\r\n\t\tthis.oldcompleteState = sortedData.find((item) => item.completeState);\r\n\r\n\t\tlet options = [];\r\n\t\tif (props.SideData.fieldName === \"State\") {\r\n\t\t\toptions = [...data];\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tdata: data,\r\n\t\t\tcompleteState: sortedData.find((item) => item.completeState),\r\n\t\t\tolddata: data.slice(),\r\n\t\t\toptions,\r\n\t\t});\r\n\t\tthis.rowClick(sortedData[0]._id);\r\n\t}\r\n\r\n\treorder(dataItem) {\r\n\t\tif (this.state.activeItem === dataItem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet reorderedData = this.state.data.slice();\r\n\r\n\t\tlet prevIndex = reorderedData.findIndex((p) => p._id === this.state.activeItem._id);\r\n\t\tlet nextIndex = reorderedData.findIndex((p) => p._id === dataItem._id);\r\n\r\n\t\treorderedData.splice(prevIndex, 1);\r\n\t\treorderedData.splice(nextIndex, 0, this.state.activeItem);\r\n\r\n\t\tthis.setState({\r\n\t\t\tdata: reorderedData,\r\n\t\t\tactive: this.state.activeItem,\r\n\t\t});\r\n\t}\r\n\r\n\tupdateOrder = (id, ordertoUpdate) => {\r\n\t};\r\n\r\n\tendDrag(dataItem) {\r\n\t\tlet reorderedData = this.state.data.slice();\r\n\t\tlet index = reorderedData.findIndex((x) => x._id === this.state.activeItem._id);\r\n\r\n\t\tlet newOrder;\r\n\r\n\t\tif (reorderedData.length > 2) {\r\n\t\t\tif (index === reorderedData.length - 1) {\r\n\t\t\t\tnewOrder = parseInt(reorderedData[index - 1][\"order\"]) + 10000000000;\r\n\t\t\t\treorderedData[index][\"order\"] = newOrder.toString();\r\n\t\t\t\tthis.updateOrder(reorderedData[index]._id, newOrder);\r\n\t\t\t} else if (index === 0) {\r\n\t\t\t\tnewOrder = parseInt(reorderedData[1][\"order\"]);\r\n\t\t\t\tlet prevElementOrder = parseInt(reorderedData[2][\"order\"]);\r\n\t\t\t\tlet orderToSet = (prevElementOrder + newOrder) / 2;\r\n\t\t\t\tnewOrder = newOrder.toString();\r\n\t\t\t\treorderedData[index][\"order\"] = newOrder.toString();\r\n\t\t\t\treorderedData[1][\"order\"] = orderToSet.toString();\r\n\t\t\t\tthis.updateOrder(reorderedData[index]._id, newOrder);\r\n\t\t\t\tthis.updateOrder(reorderedData[1]._id, orderToSet);\r\n\t\t\t\t////console.log(prevElementOrder, orderToSet, index);\r\n\t\t\t} else {\r\n\t\t\t\tlet prevItemOrder = parseInt(reorderedData[index - 1][\"order\"]);\r\n\t\t\t\tlet nextItemOrder = parseInt(reorderedData[index + 1][\"order\"]);\r\n\t\t\t\tnewOrder = (prevItemOrder + nextItemOrder) / 2;\r\n\t\t\t\treorderedData[index][\"order\"] = newOrder.toString();\r\n\t\t\t\tthis.updateOrder(reorderedData[index]._id, newOrder);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet firstOrder = reorderedData[0][\"order\"];\r\n\t\t\tlet secondOrder = reorderedData[1][\"order\"];\r\n\r\n\t\t\treorderedData[0][\"order\"] = secondOrder.toString();\r\n\t\t\treorderedData[1][\"order\"] = firstOrder.toString();\r\n\r\n\t\t\tthis.updateOrder(reorderedData[0]._id, secondOrder);\r\n\t\t\tthis.updateOrder(reorderedData[1]._id, firstOrder);\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < reorderedData.length; i++) {\r\n\t\t\treorderedData[i]._id = i + 1;\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tdata: reorderedData,\r\n\t\t\tselectedId: this.state.oldSelectedId,\r\n\t\t});\r\n\t}\r\n\r\n\tdragStart(dataItem) {\r\n\t\tvar oldSelectedId = this.state.selectedId;\r\n\t\tthis.setState({\r\n\t\t\tdata: this.state.data,\r\n\t\t\tactiveItem: dataItem,\r\n\t\t\toldSelectedId: oldSelectedId,\r\n\t\t\tselectedId: dataItem._id,\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t{this.state.DeletePopup && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t ({\r\n\t\t\t\t\t\t\t\t\t\t...item,\r\n\t\t\t\t\t\t\t\t\t\tselected: item._id === this.state.selectedId,\r\n\t\t\t\t\t\t\t\t\t\tindexId: index + 1,\r\n\t\t\t\t\t\t\t\t\t\tonChange: this.onChange,\r\n\t\t\t\t\t\t\t\t\t\t//onSave: this.save,\r\n\t\t\t\t\t\t\t\t\t}))}\r\n\t\t\t\t\t\t\t\t\tonRowClick={this.rowClick}\r\n\t\t\t\t\t\t\t\t\t// style={{ height: 'calc(100%)', width: '100%' }}\r\n\t\t\t\t\t\t\t\t\tresizable={false}\r\n\t\t\t\t\t\t\t\t\treorderable={true}\r\n\t\t\t\t\t\t\t\t\tclassName=\"planning-grid\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{this.props.userRole !== \"Member\" && (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tprops.dataItem.key === \"Feedback\" || this.state.data.length === 1 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t this.delete(props.dataItem)} className=\"fa fa-times\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{this.props.SideData.fieldName === \"State\" && (\r\n\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t
    Complete state
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\taddColumn = (e) => {\r\n\t\te.preventDefault();\r\n\t\tlet data = {\r\n\t\t\t_id: uuidv4(),\r\n\t\t\tisNew: true,\r\n\t\t\tkey: \"\"\r\n\t\t};\r\n\t\tlet dataitem = this.state.data;\r\n\t\tdataitem.push(data);\r\n\t\tthis.setState({\r\n\t\t\tdata: dataitem,\r\n\t\t});\r\n\t};\r\n\r\n\ttoggleDeleteDialog = (e) => {\r\n\t\tthis.setState({\r\n\t\t\tDeletePopup: false,\r\n\t\t\tdelete: {\r\n\t\t\t\tkey: false,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t},\r\n\t\t});\r\n\t};\r\n\r\n\tDeleteConfirmation = async (e) => {\r\n\t\te.target.disabled = true;\r\n\t\tconst id = this.state.toDeleteItem._id;\r\n\t\tconst data = this.state.data.filter((x) => x._id !== id);\r\n\t\tlet field = \"\";\r\n\t\tfor (let Item of data) {\r\n\t\t\tfield = field + Item.key + \", \";\r\n\t\t}\r\n\t\tlet olddata = this.props.SideData;\r\n\t\tfield = field.slice(0, -2);\r\n\t\tolddata.fieldValues = field;\r\n\t\tolddata.data = data;\r\n\r\n\t\tdeleteNode(id);\r\n\t\tthis.setState({\r\n\t\t\tDeletePopup: !this.state.DeletePopup,\r\n\t\t\ttoDeleteItem: [],\r\n\t\t\tdata: [...data],\r\n\t\t\tolddata: [...data],\r\n\t\t});\r\n\t\tthis.props.onSidebarchange(olddata);\r\n\t};\r\n\r\n\trowClick = (value) => {\r\n\t\tvar id = \"\";\r\n\t\tif (value[\"dataItem\"]) {\r\n\t\t\tid = value.dataItem._id;\r\n\t\t} else {\r\n\t\t\tid = value;\r\n\t\t}\r\n\t\tthis.setState({ selectedId: id });\r\n\t};\r\n\r\n\tonChange = (dataItem) => {\r\n\t\tlet data = this.state.data;\r\n\t\tlet targetId = dataItem.target.getAttribute(\"data-id\");\r\n\t\tlet index = data.findIndex((item) => item._id === targetId);\r\n\t\tdata[index].key = dataItem.target.value;\r\n\t\tdata[index].error = dataItem.target.value === \"\";\r\n\t\tthis.setState({ data: data, }, () => {\r\n\t\t\tthis.isSaveDisabled();\r\n\t\t});\r\n\t};\r\n\r\n\thandleCompleteState = (e) => {\r\n\t\tthis.setState({ completeState: e.target.value });\r\n\t};\r\n\r\n\tsave = async (e) => {\r\n\t\tif (e) e.preventDefault();\r\n\t\tlet field = \"\";\r\n\t\tlet NewData = [];\r\n\t\tlet oldData = this.state.data.filter((x) => !x.isNew);\r\n\t\tlet newData = this.state.data.filter((x) => x.key !== \"\" && x.isNew);\r\n\t\tlet SaveData = [...oldData, ...newData];\r\n\t\tlet completeState = {};\r\n\t\tfor (let data of SaveData) {\r\n\t\t\tif (this.props.SideData.fieldName === \"State\") {\r\n\t\t\t\tif (data._id === this.state.completeState._id || data.key === this.state.completeState.key) {\r\n\t\t\t\t\tdata.completeState = true;\r\n\t\t\t\t\tcompleteState = { ...data };\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdata.completeState = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (data.isNew) {\r\n\t\t\t\tlet order = 10000000000;\r\n\t\t\t\tif (SaveData.length > 0) {\r\n\t\t\t\t\torder = parseInt(SaveData[SaveData.length - 2].order) + 10000000000;\r\n\t\t\t\t}\r\n\t\t\t\tdata.order = order.toString();\r\n\t\t\t}\r\n\t\t\tdelete data.error;\r\n\t\t\tdata.isNew = false;\r\n\t\t\tfield = field + data.key + \", \";\r\n\t\t\tNewData.push(data);\r\n\t\t}\r\n\t\tawait updatePlanningConfiguration(this.props.planningId, SaveData, this.props.SideData.databaseField);\r\n\t\tlet data = this.props.SideData;\r\n\t\tfield = field.slice(0, -2);\r\n\t\tdata.fieldValues = field;\r\n\t\tdata.data = NewData;\r\n\t\tlet options = [];\r\n\t\tif (this.props.SideData.fieldName === \"State\") {\r\n\t\t\toptions = [...NewData];\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tdata: NewData,\r\n\t\t\tolddata: NewData,\r\n\t\t\toptions,\r\n\t\t});\r\n\t\tthis.props.onSidebarchange(data);\r\n\t};\r\n\r\n\tdelete = async (dataItem) => {\r\n\t\tconst updatedData = this.state.data.filter((x) => x._id !== dataItem._id);\r\n\t\tthis.setState({\r\n\t\t\tdata: [...updatedData]\r\n\t\t});\r\n\t};\r\n\r\n\tsetDefault = () => {\r\n\t\tlet sortedData = this.props.SideData.data.slice().sort((a, b) => a.order - b.order);\r\n\t\tthis.oldData = this.props.SideData.data.slice();\r\n\t\tlet data = sortedData.map((i) => ({ ...i }));\r\n\t\tthis.setState({\r\n\t\t\tdata: data,\r\n\t\t\tcompleteState: sortedData.find((item) => item.completeState),\r\n\t\t\tolddata: data.slice(),\r\n\t\t});\r\n\t};\r\n\r\n\tisSaveDisabled = () => {\r\n\t\tif (this.state.data.length !== this.oldData.length) return false;\r\n\t\tfor (let i = 0; i < this.state.data.length; i++) {\r\n\t\t\tif (this.oldData[i] && this.oldData[i].key !== this.state.data[i].key) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.props.SideData.fieldName === \"State\") {\r\n\t\t\tif (this.state.completeState._id !== this.oldcompleteState._id) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n}\r\n\r\nexport default OrganisationPlanningSidebar;","import * as React from \"react\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport OrganisationPlanningSidebar from \"./OrganisationPlanningSidebar\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport { PageContainer, Content, Header } from \"../Drawer/PageContainer\";\r\nimport Loader from '../Shared/Loader/loader'\r\nimport ServerError from \"../Shared/Error/ServerError\";\r\nimport { getPlanningConfiguration } from \"../../API/Planning/Planning\";\r\n\r\nclass OrganisationPlanning extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: [],\r\n planningId: \"\",\r\n loading: true,\r\n panes: [\r\n { collapsible: false },\r\n { size: \"475px\", min: \"475px\", collapsible: false },\r\n ],\r\n SideData: [],\r\n selectedId: null,\r\n selected: 0,\r\n showServerError: false\r\n };\r\n }\r\n\r\n onSplitterSizeChange = (e) => {\r\n this.setState({ panes: e.newState });\r\n };\r\n\r\n componentDidMount = async () => {\r\n try {\r\n await this.getRequirementsData();\r\n } catch (error) {\r\n console.error(error)\r\n this.setState({\r\n showServerError: true\r\n })\r\n }\r\n };\r\n render() {\r\n if (this.state.showServerError) return \r\n if (this.state.loading) return ;\r\n return (\r\n \r\n
    \r\n {/* Go to planning */}\r\n
    \r\n \r\n \r\n
    \r\n ({\r\n ...item,\r\n selected:\r\n item.fieldName === this.state.selectedId,\r\n indexId: index + 1,\r\n }))}\r\n onRowClick={this.rowClick}\r\n style={{ height: \"100%\" }}\r\n selectedField=\"selected\"\r\n resizable\r\n reorderable={true}\r\n id=\"entity_grid\"\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {\r\n this.state.SideData &&\r\n this.state.SideData.data &&\r\n this.state.SideData.data.length > 0 ? (\r\n \r\n ) : null}\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getRequirementsData = async () => {\r\n let response = await getPlanningConfiguration(this.props.organization._id)\r\n debugger\r\n if (response && response.cardTypes.length > 0) {\r\n let fields = [\r\n {\r\n databaseField: \"cardTypes\",\r\n fieldName: \"Card Type\",\r\n fieldValues: \"\",\r\n data: [],\r\n },\r\n {\r\n databaseField: \"priorities\",\r\n fieldName: \"Priority\",\r\n fieldValues: \"\",\r\n data: [],\r\n },\r\n {\r\n databaseField: \"states\",\r\n fieldName: \"State\",\r\n fieldValues: \"\",\r\n data: [],\r\n },\r\n ];\r\n\r\n for (let field of fields) {\r\n let fielddata = response[field.databaseField];\r\n fielddata = fielddata.slice().sort((a, b) => a.order - b.order);\r\n field.data = fielddata;\r\n field.fieldValues = field.data.map((d) => d.key).join(\", \");\r\n }\r\n this.setState({\r\n data: fields,\r\n planningId: response._id,\r\n }, () => {\r\n if (fields.length > 0) {\r\n this.rowClick(fields[0]);\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n loading: false,\r\n });\r\n }\r\n };\r\n\r\n onSidebarchange = (propsData) => {\r\n let data = this.state.data;\r\n let index = data.findIndex((item) => item._id === this.state.selectedId);\r\n data[index] = propsData;\r\n this.setState({ data: data });\r\n };\r\n\r\n rowClick = (value) => {\r\n this.setState({\r\n SideData: [],\r\n });\r\n var fieldName = \"\";\r\n if (value[\"dataItem\"]) {\r\n fieldName = value.dataItem.fieldName;\r\n } else {\r\n fieldName = value.fieldName;\r\n }\r\n this.setState({ selectedId: fieldName });\r\n let element = this.state.data.find((x) => x.fieldName === fieldName);\r\n this.setState({ SideData: element, loading: false });\r\n };\r\n}\r\n\r\nexport default OrganisationPlanning;\r\n","import React from \"react\";\r\nimport Lookup from \"../../Components/Attributes/AttributeTemplate/Lookup\";\r\nimport OrganisationPlanning from \"../../Components/Planning/OrganisationPlanning\";\r\n\r\nconst WorkspaceOrganizationPlanningPage = ({ organization, user, role }) => {\r\n return (\r\n \r\n\r\n );\r\n};\r\n\r\nexport default WorkspaceOrganizationPlanningPage; ","import \"@progress/kendo-theme-bootstrap/dist/all.css\";\r\nimport \"./assets/Css/App.css\";\r\nimport \"./assets/Css/style.css\";\r\nimport \"bootstrap/dist/css/bootstrap.css\";\r\nimport \"/node_modules/react-grid-layout/css/styles.css\"\r\nimport \"/node_modules/react-resizable/css/styles.css\"\r\nimport React, { Component, Suspense, createRef } from \"react\";\r\nimport { BrowserRouter as Router, Route, Routes } from \"react-router-dom\";\r\nimport Welcome from \"./Components/Welcome\";\r\nimport SignUp from \"./Auth/SignUp\";\r\nimport SignIn from \"./Auth/SignIn\";\r\nimport { AuthMiddleware } from \"./Auth/AuthMiddleware\";\r\nimport { GetEarlyAccess } from \"./Auth/getEarlyAccess\";\r\nimport { VerifyAccount } from \"./Auth/VerifyAccount\";\r\nimport { RuntimeConfigPage } from \"./Pages/Runtime/RuntimeConfigPage\";\r\nimport RuntimePortalConfigPage from \"./Components/Portal/RuntimeConfigPage\";\r\nimport { SubscriptionPortalPage } from \"./Pages/Subscription/SubscriptionPortalPage\";\r\nimport { setShowErrorDialog } from \"./API/CallApi\";\r\nimport { AdminRouteRender } from \"./Renderers/AdminRouteRender\";\r\nimport { MsalContext } from \"@azure/msal-react\";\r\nimport { WorkspacePage } from \"./Pages/Project/WorkspacePage\";\r\nimport { PricingPage } from \"./Pages/Pricing/PricingPage\";\r\nimport { GlobalContextProvider } from \"./Renderers/GlobalContext\";\r\nimport MobilePage from \"./Pages/Mobileview/MobilePage\";\r\nimport WorkspaceUserPage from \"./Pages/WorkspaceSettings/WorkspaceUserPage\";\r\nimport WorkspaceSubscriptionPage from \"./Pages/WorkspaceSettings/WorkspaceSubscriptionPage\";\r\nimport { WorkspaceOrganizationRouteRender } from \"./Renderers/WorkspaceOrganizationRouteRender\";\r\nimport WorkspacePropertyTemplatesPage from \"./Pages/WorkspaceSettings/WorkspacePropertyTemplatesPage\";\r\nimport WorkspaceRecyclebinPage from \"./Pages/WorkspaceSettings/WorkspaceRecyclebinPage\";\r\nimport WorkspaceAppModelPage from \"./Pages/WorkspaceSettings/WorkspaceAppModelPage\";\r\nimport { WorkspaceProjectRouteRender } from \"./Renderers/WorkspaceProjectRouteRender\";\r\nimport { ConfirmationContextProvider } from \"./Components/Shared/ConfirmationWithContext/ConfirmationContext\";\r\nimport { WorkspaceAppModelContextProvider } from \"./Context/Workspace/WorkspaceAppModelContext\";\r\nimport WorkspaceInviteUsersPage from \"./Pages/WorkspaceSettings/WorkspaceInviteUsersPage\";\r\nimport WorkspaceProjectSettingsPage from \"./Pages/WorkspaceSettings/WorkspaceProjectSettingsPage\";\r\nimport WorkspaceOrganizationSettingPage from \"./Pages/WorkspaceSettings/WorkspaceOrganizationSettingPage\";\r\nimport WorkspacePaymentPage from \"./Pages/WorkspaceSettings/WorkspacePaymentPage\";\r\nimport ErrorDialog from \"./Components/Shared/Error/ErrorDialog\";\r\nimport { FeatureFlagProvider } from \"./Context/FeatureFlag/FeatureFlagContext\";\r\nimport AccessStorage from \"./Pages/AccessStorage/AccessStorage\";\r\nimport NoRoutes from \"./Pages/404/NoRoutes\";\r\nimport { getAzureUser } from \"./API/User/User\";\r\nimport Loader from \"./Components/Shared/Loader/loader\";\r\nimport SessionExpired from \"./Components/SessionExpired\";\r\nimport { WorkspaceCreateAppPage } from \"./Pages/Project/WorkspaceCreateAppPage\";\r\nimport CreateApp from \"./Pages/Integrations/CopilotForDevOps/CreateApp\";\r\nimport WorkspaceOrganizationPlanningPage from \"./Pages/WorkspaceSettings/WorkspaceOrganizationPlanningPage\";\r\n\r\nclass App extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n innerWidth: window.innerWidth,\r\n showErrorDialog: false,\r\n error: {},\r\n isInternalUser: false,\r\n isAuthCompleted: false,\r\n isTokenExpired: false\r\n }\r\n }\r\n\r\n static contextType = MsalContext;\r\n refreshTokenTimeout;\r\n\r\n didCheckUser = createRef();\r\n\r\n componentDidMount = async () => {\r\n window.addEventListener(\"resize\", this.resize.bind(this))\r\n this.resize()\r\n setShowErrorDialog(this.showErrorDialog);\r\n if (window.self === window.top)\r\n window.addEventListener(\"focus\", this.handleSignOut);\r\n this.didCheckUser.current = false;\r\n }\r\n\r\n checkUser = async () => {\r\n const user = await getAzureUser(this.context);\r\n if (user && user.oid) {\r\n const email = user.emails[0];\r\n const whiteList = process.env.REACT_APP_WHITELIST.split(' ');\r\n const isInternalUser = whiteList.includes(email);\r\n return isInternalUser;\r\n }\r\n return false;\r\n }\r\n\r\n componentDidUpdate = async () => {\r\n const { inProgress, accounts } = this.context;\r\n\r\n if (inProgress !== \"none\" || this.didCheckUser.current) {\r\n return;\r\n }\r\n\r\n const isInIframe = window.parent !== window.self;\r\n const iframeParentOrigin = isInIframe ? document.referrer : \"\";\r\n const isAccessedFromRuntime = isInIframe && iframeParentOrigin === (process.env.REACT_APP_RUNTIME_URL + \"/\");\r\n\r\n try {\r\n if (isAccessedFromRuntime) {\r\n if (accounts.length === 0) {\r\n } else if (accounts.length > 0) {\r\n await this.handleAccessToken();\r\n await this.setInternalUser();\r\n }\r\n } else if (accounts.length > 0) {\r\n await this.handleAccessToken();\r\n await this.setInternalUser();\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n } finally {\r\n this.setAuthCompleted();\r\n }\r\n }\r\n\r\n handleAccessToken = async () => {\r\n try {\r\n await this.getAccessToken(this.context);\r\n this.refreshTokenTimeout = setInterval(async () => {\r\n await this.getAccessToken(this.context);\r\n }, 5 * 60 * 1000);\r\n } catch (error) {\r\n this.setState({ isTokenExpired: true });\r\n }\r\n }\r\n\r\n getAccessToken = async (context) => {\r\n const { instance, accounts } = context;\r\n if (!accounts) {\r\n return this.setState({ isTokenExpired: true });\r\n }\r\n try {\r\n const response = await instance.acquireTokenSilent({\r\n scopes: [process.env.REACT_APP_AZURE_SCOPE],\r\n account: accounts[0], // Choose the account you want to use\r\n });\r\n this.setAccessToken(response.accessToken);\r\n } catch (error) {\r\n return this.setState({ isTokenExpired: true });\r\n }\r\n }\r\n\r\n setAccessToken = async (token) => {\r\n localStorage.setItem(\"accessToken\", token);\r\n }\r\n\r\n setInternalUser = async () => {\r\n const isInternalUser = await this.checkUser()\r\n this.setState({ isInternalUser: isInternalUser })\r\n }\r\n\r\n setAuthCompleted = () => {\r\n const { isAuthCompleted } = this.state;\r\n if (!isAuthCompleted) {\r\n this.setState({ isAuthCompleted: true });\r\n }\r\n this.didCheckUser.current = true;\r\n }\r\n\r\n resize() {\r\n this.setState({ innerWidth: window.innerWidth })\r\n }\r\n\r\n componentWillUnmount() {\r\n if (window.self === window.top)\r\n window.removeEventListener(\"focus\", this.handleSignOut);\r\n }\r\n\r\n handleSignOut = async () => {\r\n const { context } = this;\r\n const accessToken = localStorage.getItem(\"accessToken\");\r\n if (!accessToken) {\r\n localStorage.clear();\r\n context.instance.logoutRedirect();\r\n }\r\n }\r\n\r\n toggleErrorDialog = () => {\r\n this.setState({ showErrorDialog: !this.state.showErrorDialog })\r\n }\r\n\r\n updateError = (error) => {\r\n this.setState({ error: error })\r\n }\r\n\r\n showErrorDialog = (error) => {\r\n this.toggleErrorDialog();\r\n this.updateError(error);\r\n }\r\n\r\n render() {\r\n if (!this.state.isAuthCompleted) {\r\n return \r\n }\r\n document.documentElement.className = \"theme-light\";\r\n\r\n if (this.state.isTokenExpired) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (this.state.innerWidth <= 500 && window.location.pathname !== \"/_Authorize\") {\r\n return (\r\n \r\n \r\n } />\r\n } />\r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {\r\n this.state.showErrorDialog &&\r\n \r\n }\r\n \r\n \r\n\r\n {/* Routes for home page */}\r\n } />\r\n \r\n {/* Routes for Auth middleware */}\r\n } />\r\n\r\n {/* Routes for internal iframe to store localstorage between platform */}\r\n } />\r\n\r\n {/* delete */}\r\n } />\r\n\r\n {/* Routes for custom Signup */}\r\n } />\r\n\r\n {/* Routes for custom Signin */}\r\n } />\r\n\r\n {/* Routes for verifying account */}\r\n } />\r\n\r\n {/* } /> */}\r\n } />\r\n\r\n } />\r\n\r\n } />\r\n\r\n {/* Routes for inline editing component on runtime */}\r\n } />\r\n\r\n {/* Routes for inline editing menus on runtime */}\r\n } />\r\n\r\n {/* Routes for inline editing invite user on runtime */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for workspace user on runtime */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for workspace subscription on runtime */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for workspace property templates on runtime */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for workspace planning templates on runtime */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for workspace recyclebin of projects on runtime */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for workspace organization settings on runtime */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for workspace app model on runtime */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for workspace project settings on runtime */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for workspace project settings on runtime */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for Managing Subscription */}\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {/* Routes for showing Pricing page */}\r\n } />\r\n\r\n {/* Routes for 404 page */}\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 App;\r\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\n *\n * @export\n * @enum {number}\n */\nexport enum PerformanceEvents {\n\n /**\n * acquireTokenByCode API (msal-browser and msal-node).\n * Used to acquire tokens by trading an authorization code against the token endpoint.\n */\n AcquireTokenByCode = \"acquireTokenByCode\",\n\n /**\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\n * Used to renew an access token using a refresh token against the token endpoint.\n */\n AcquireTokenByRefreshToken = \"acquireTokenByRefreshToken\",\n\n /**\n * acquireTokenSilent API (msal-browser and msal-node).\n * Used to silently acquire a new access token (from the cache or the network).\n */\n AcquireTokenSilent = \"acquireTokenSilent\",\n\n /**\n * acquireTokenSilentAsync (msal-browser).\n * Internal API for acquireTokenSilent.\n */\n AcquireTokenSilentAsync = \"acquireTokenSilentAsync\",\n\n /**\n * acquireTokenPopup (msal-browser).\n * Used to acquire a new access token interactively through pop ups\n */\n AcquireTokenPopup = \"acquireTokenPopup\",\n\n /**\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\n */\n CryptoOptsGetPublicKeyThumbprint = \"cryptoOptsGetPublicKeyThumbprint\",\n\n /**\n * signJwt API in CryptoOpts class (msal-browser).\n * Used to signed a pop token.\n */\n CryptoOptsSignJwt = \"cryptoOptsSignJwt\",\n\n /**\n * acquireToken API in the SilentCacheClient class (msal-browser).\n * Used to read access tokens from the cache.\n */\n SilentCacheClientAcquireToken = \"silentCacheClientAcquireToken\",\n\n /**\n * acquireToken API in the SilentIframeClient class (msal-browser).\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\n */\n SilentIframeClientAcquireToken = \"silentIframeClientAcquireToken\",\n\n /**\n * acquireToken API in SilentRereshClient (msal-browser).\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\n */\n SilentRefreshClientAcquireToken = \"silentRefreshClientAcquireToken\",\n\n /**\n * ssoSilent API (msal-browser).\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\n */\n SsoSilent = \"ssoSilent\",\n\n /**\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\n * Used to load authority metadata for a request.\n */\n StandardInteractionClientGetDiscoveredAuthority = \"standardInteractionClientGetDiscoveredAuthority\",\n\n /**\n * acquireToken APIs in msal-browser.\n * Used to make an /authorize endpoint call with native brokering enabled.\n */\n FetchAccountIdWithNativeBroker = \"fetchAccountIdWithNativeBroker\",\n\n /**\n * acquireToken API in NativeInteractionClient class (msal-browser).\n * Used to acquire a token from Native component when native brokering is enabled.\n */\n NativeInteractionClientAcquireToken = \"nativeInteractionClientAcquireToken\",\n\n /**\n * Time spent on the network for refresh token acquisition\n */\n RefreshTokenClientExecuteTokenRequest = \"refreshTokenClientExecuteTokenRequest\",\n\n /**\n * Time spent creating default headers for requests to token endpoint\n */\n BaseClientCreateTokenRequestHeaders = \"baseClientCreateTokenRequestHeaders\",\n\n /**\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\n */\n BrokerHandhshake = \"brokerHandshake\",\n\n /**\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\n */\n AcquireTokenByRefreshTokenInBroker = \"acquireTokenByRefreshTokenInBroker\",\n\n /**\n * acquireToken API in BrokerClientApplication.\n * Used to acquire a token on behalf of the embedded application (PW-Broker).\n */\n AcquireTokenByBroker = \"acquireTokenByBroker\"\n}\n\n/**\n * State of the performance event.\n *\n * @export\n * @enum {number}\n */\nexport enum PerformanceEventStatus {\n NotStarted,\n InProgress,\n Completed\n}\n\n/**\n * Performance measurement taken by the library, including metadata about the request and application.\n *\n * @export\n * @typedef {PerformanceEvent}\n */\nexport type PerformanceEvent = {\n /**\n * Unique id for the event\n *\n * @type {string}\n */\n eventId: string,\n\n /**\n * State of the perforance measure.\n *\n * @type {PerformanceEventStatus}\n */\n status: PerformanceEventStatus,\n\n /**\n * Login authority used for the request\n *\n * @type {string}\n */\n authority: string,\n\n /**\n * Client id for the application\n *\n * @type {string}\n */\n clientId: string\n\n /**\n * Correlation ID used for the request\n *\n * @type {string}\n */\n correlationId: string,\n\n /**\n * End-to-end duration in milliseconds.\n * @date 3/22/2022 - 3:40:05 PM\n *\n * @type {number}\n */\n durationMs?: number,\n\n /**\n * Visibility of the page when the event completed.\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n *\n * @type {?(string | null)}\n */\n endPageVisibility?: string | null,\n\n /**\n * Whether the result was retrieved from the cache.\n *\n * @type {(boolean | null)}\n */\n fromCache?: boolean | null,\n\n /**\n * Event name (usually in the form of classNameFunctionName)\n *\n * @type {PerformanceEvents}\n */\n name: PerformanceEvents,\n\n /**\n * Visibility of the page when the event completed.\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n *\n * @type {?(string | null)}\n */\n startPageVisibility?: string | null,\n\n /**\n * Unix millisecond timestamp when the event was initiated.\n *\n * @type {number}\n */\n startTimeMs: number,\n\n /**\n * Whether or the operation completed successfully.\n *\n * @type {(boolean | null)}\n */\n success?: boolean | null,\n\n /**\n * Add specific error code in case of failure\n *\n * @type {string}\n */\n errorCode?: string,\n\n /**\n * Add specific sub error code in case of failure\n *\n * @type {string}\n */\n subErrorCode?: string,\n\n /**\n * Name of the library used for the operation.\n *\n * @type {string}\n */\n libraryName: string,\n\n /**\n * Version of the library used for the operation.\n *\n * @type {string}\n */\n libraryVersion: string,\n\n /**\n * Size of the id token\n *\n * @type {number}\n */\n idTokenSize?: number,\n\n /**\n * \n * Size of the access token\n *\n * @type {number}\n */\n\n accessTokenSize?: number,\n\n /**\n * Application name as specified by the app.\n *\n * @type {?string}\n */\n appName?: string,\n\n /**\n * Application version as specified by the app.\n *\n * @type {?string}\n */\n appVersion?: string,\n\n /**\n * Whether the response is from a native component (e.g., WAM)\n *\n * @type {?boolean}\n */\n isNativeBroker?: boolean\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const JoseHeaderErrorMessage = {\n missingKidError: {\n code: \"missing_kid_error\",\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\"\n },\n missingAlgError: {\n code: \"missing_alg_error\",\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\"\n },\n};\n\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nexport class JoseHeaderError extends AuthError {\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"JoseHeaderError\";\n\n Object.setPrototypeOf(this, JoseHeaderError.prototype);\n }\n\n /**\n * Creates an error thrown when keyId isn't set on JOSE header.\n */\n static createMissingKidError(): JoseHeaderError {\n return new JoseHeaderError(JoseHeaderErrorMessage.missingKidError.code, JoseHeaderErrorMessage.missingKidError.desc);\n }\n\n /**\n * Creates an error thrown when algorithm isn't set on JOSE header.\n */\n static createMissingAlgError(): JoseHeaderError {\n return new JoseHeaderError(JoseHeaderErrorMessage.missingAlgError.code, JoseHeaderErrorMessage.missingAlgError.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, IPerformanceClient, JoseHeader, Logger, PerformanceEvents, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from \"@azure/msal-common\";\nimport { GuidGenerator } from \"./GuidGenerator\";\nimport { Base64Encode } from \"../encode/Base64Encode\";\nimport { Base64Decode } from \"../encode/Base64Decode\";\nimport { PkceGenerator } from \"./PkceGenerator\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { AsyncMemoryStorage } from \"../cache/AsyncMemoryStorage\";\n\nexport type CachedKeyPair = {\n publicKey: CryptoKey,\n privateKey: CryptoKey,\n requestMethod?: string,\n requestUri?: string\n};\n\n/**\n * MSAL CryptoKeyStore DB Version 2\n */\nexport type CryptoKeyStore = {\n asymmetricKeys: AsyncMemoryStorage;\n symmetricKeys: AsyncMemoryStorage;\n};\n\nexport enum CryptoKeyStoreNames {\n asymmetricKeys = \"asymmetricKeys\",\n symmetricKeys = \"symmetricKeys\"\n}\n\n/**\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and \n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\n */\nexport class CryptoOps implements ICrypto {\n\n private browserCrypto: BrowserCrypto;\n private guidGenerator: GuidGenerator;\n private b64Encode: Base64Encode;\n private b64Decode: Base64Decode;\n private pkceGenerator: PkceGenerator;\n private logger: Logger;\n\n /**\n * CryptoOps can be used in contexts outside a PCA instance,\n * meaning there won't be a performance manager available.\n */\n private performanceClient: IPerformanceClient | undefined;\n\n private static POP_KEY_USAGES: Array = [\"sign\", \"verify\"];\n private static EXTRACTABLE: boolean = true;\n private cache: CryptoKeyStore;\n\n constructor(logger: Logger, performanceClient?: IPerformanceClient) {\n this.logger = logger;\n // Browser crypto needs to be validated first before any other classes can be set.\n this.browserCrypto = new BrowserCrypto(this.logger);\n this.b64Encode = new Base64Encode();\n this.b64Decode = new Base64Decode();\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\n this.cache = {\n asymmetricKeys: new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.asymmetricKeys),\n symmetricKeys: new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.symmetricKeys)\n };\n this.performanceClient = performanceClient;\n }\n\n /**\n * Creates a new random GUID - used to populate state and nonce.\n * @returns string (GUID)\n */\n createNewGuid(): string {\n return this.guidGenerator.generateGuid();\n }\n\n /**\n * Encodes input string to base64.\n * @param input \n */\n base64Encode(input: string): string {\n return this.b64Encode.encode(input);\n } \n \n /**\n * Decodes input string from base64.\n * @param input \n */\n base64Decode(input: string): string {\n return this.b64Decode.decode(input);\n }\n\n /**\n * Generates PKCE codes used in Authorization Code Flow.\n */\n async generatePkceCodes(): Promise {\n return this.pkceGenerator.generateCodes();\n }\n\n /**\n * Generates a keypair, stores it and returns a thumbprint\n * @param request\n */\n async getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise {\n const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);\n\n // Generate Keypair\n const keyPair: CryptoKeyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);\n\n // Generate Thumbprint for Public Key\n const publicKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.publicKey);\n \n const pubKeyThumprintObj: JsonWebKey = {\n e: publicKeyJwk.e,\n kty: publicKeyJwk.kty,\n n: publicKeyJwk.n\n };\n\n const publicJwkString: string = BrowserCrypto.getJwkString(pubKeyThumprintObj);\n const publicJwkHash = await this.hashString(publicJwkString);\n\n // Generate Thumbprint for Private Key\n const privateKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.privateKey);\n // Re-import private key to make it unextractable\n const unextractablePrivateKey: CryptoKey = await this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\n\n // Store Keypair data in keystore\n await this.cache.asymmetricKeys.setItem(\n publicJwkHash, \n {\n privateKey: unextractablePrivateKey,\n publicKey: keyPair.publicKey,\n requestMethod: request.resourceRequestMethod,\n requestUri: request.resourceRequestUri\n }\n );\n\n if (publicKeyThumbMeasurement) {\n publicKeyThumbMeasurement.endMeasurement({\n success: true\n });\n }\n\n return publicJwkHash;\n }\n\n /**\n * Removes cryptographic keypair from key store matching the keyId passed in\n * @param kid \n */\n async removeTokenBindingKey(kid: string): Promise {\n await this.cache.asymmetricKeys.removeItem(kid);\n const keyFound = await this.cache.asymmetricKeys.containsKey(kid);\n return !keyFound;\n }\n\n /**\n * Removes all cryptographic keys from IndexedDB storage\n */\n async clearKeystore(): Promise {\n try {\n this.logger.verbose(\"Deleting in-memory and persistent asymmetric key stores\");\n await this.cache.asymmetricKeys.clear();\n this.logger.verbose(\"Successfully deleted asymmetric key stores\");\n this.logger.verbose(\"Deleting in-memory and persistent symmetric key stores\");\n await this.cache.symmetricKeys.clear();\n this.logger.verbose(\"Successfully deleted symmetric key stores\");\n return true;\n } catch (e) {\n if (e instanceof Error) {\n this.logger.error(`Clearing keystore failed with error: ${e.message}`);\n } else {\n this.logger.error(\"Clearing keystore failed with unknown error\");\n }\n \n return false;\n }\n }\n\n /**\n * Signs the given object as a jwt payload with private key retrieved by given kid.\n * @param payload \n * @param kid \n */\n async signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise {\n const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);\n const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);\n \n if (!cachedKeyPair) {\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\n }\n\n // Get public key as JWK\n const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);\n const publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\n \n // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: \"FULL_PUBLIC_KEY_HASH\" })\n const encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));\n\n // Generate header\n const shrHeader = JoseHeader.getShrHeaderString({ kid: encodedKeyIdThumbprint, alg: publicKeyJwk.alg });\n const encodedShrHeader = this.b64Encode.urlEncode(shrHeader);\n\n // Generate payload\n payload.cnf = {\n jwk: JSON.parse(publicKeyJwkString)\n };\n const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\n\n // Form token string\n const tokenString = `${encodedShrHeader}.${encodedPayload}`;\n\n // Sign token\n const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\n const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);\n const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\n\n const signedJwt = `${tokenString}.${encodedSignature}`;\n\n if (signJwtMeasurement) {\n signJwtMeasurement.endMeasurement({\n success: true\n });\n }\n\n return signedJwt;\n }\n\n /**\n * Returns the SHA-256 hash of an input string\n * @param plainText\n */\n async hashString(plainText: string): Promise {\n const hashBuffer: ArrayBuffer = await this.browserCrypto.sha256Digest(plainText);\n const hashBytes = new Uint8Array(hashBuffer);\n return this.b64Encode.urlEncodeArr(hashBytes);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { JoseHeaderError } from \"../error/JoseHeaderError\";\nimport { JsonTypes } from \"../utils/Constants\";\n\nexport type JoseHeaderOptions = {\n typ?: JsonTypes,\n alg?: string,\n kid?: string\n};\n\nexport class JoseHeader {\n public typ?: JsonTypes;\n public alg?: string;\n public kid?: string;\n\n constructor (options: JoseHeaderOptions) {\n this.typ = options.typ;\n this.alg = options.alg;\n this.kid = options.kid;\n }\n\n /**\n * Builds SignedHttpRequest formatted JOSE Header from the\n * JOSE Header options provided or previously set on the object and returns\n * the stringified header object.\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\n * @param shrHeaderOptions \n * @returns \n */\n static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string {\n // KeyID is required on the SHR header\n if (!shrHeaderOptions.kid) {\n throw JoseHeaderError.createMissingKidError();\n }\n\n // Alg is required on the SHR header\n if (!shrHeaderOptions.alg) {\n throw JoseHeaderError.createMissingAlgError();\n }\n\n const shrHeader = new JoseHeader({\n // Access Token PoP headers must have type JWT, but the type header can be overriden for special cases\n typ: shrHeaderOptions.typ || JsonTypes.Jwt,\n kid: shrHeaderOptions.kid,\n alg: shrHeaderOptions.alg\n });\n\n return JSON.stringify(shrHeader);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility class for math specific functions in browser.\n */\nexport class MathUtils {\n\n /**\n * Decimal to Hex\n *\n * @param num\n */\n static decimalToHex(num: number): string {\n let hex: string = num.toString(16);\n while (hex.length < 2) {\n hex = \"0\" + hex;\n }\n return hex;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants , IGuidGenerator } from \"@azure/msal-common\";\nimport { MathUtils } from \"../utils/MathUtils\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\nexport class GuidGenerator implements IGuidGenerator {\n\n // browser crypto object used to generate random values\n private cryptoObj: BrowserCrypto;\n\n constructor(cryptoObj: BrowserCrypto) {\n this.cryptoObj = cryptoObj;\n }\n\n /*\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\n * pseudo-random numbers.\n * The algorithm is as follows:\n * Set the two most significant bits (bits 6 and 7) of the\n * clock_seq_hi_and_reserved to zero and one, respectively.\n * Set the four most significant bits (bits 12 through 15) of the\n * time_hi_and_version field to the 4-bit version number from\n * Section 4.1.3. Version4\n * Set all the other bits to randomly (or pseudo-randomly) chosen\n * values.\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\n * time-low = 4hexOctet\n * time-mid = 2hexOctet\n * time-high-and-version = 2hexOctet\n * clock-seq-and-reserved = hexOctet:\n * clock-seq-low = hexOctet\n * node = 6hexOctet\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\n * y values are 8, 9, A, B\n */\n generateGuid(): string {\n try {\n const buffer: Uint8Array = new Uint8Array(16);\n this.cryptoObj.getRandomValues(buffer);\n\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\n\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\n\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\n }\n catch (err) {\n const guidHolder: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\n const hex: string = \"0123456789abcdef\";\n let r: number = 0;\n let guidResponse: string = Constants.EMPTY_STRING;\n for (let i: number = 0; i < 36; i++) {\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\n // each x and y needs to be random\n r = Math.random() * 16 | 0;\n }\n if (guidHolder[i] === \"x\") {\n guidResponse += hex[r];\n } else if (guidHolder[i] === \"y\") {\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\n r |= 0x8; // set pos 3 to 1 as 1???\n guidResponse += hex[r];\n } else {\n guidResponse += guidHolder[i];\n }\n }\n return guidResponse;\n }\n }\n\n /**\n * verifies if a string is GUID\n * @param guid\n */\n isGuid(guid: string): boolean {\n const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexGuid.test(guid);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"@azure/msal-common\";\n\n/**\n * Utility functions for strings in a browser. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class BrowserStringUtils {\n\n /**\n * Converts string to Uint8Array\n * @param sDOMStr \n */\n static stringToUtf8Arr (sDOMStr: string): Uint8Array {\n let nChr;\n let nArrLen = 0;\n const nStrLen = sDOMStr.length;\n /* mapping... */\n for (let nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\n nChr = sDOMStr.charCodeAt(nMapIdx);\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\n }\n\n const aBytes = new Uint8Array(nArrLen);\n\n /* transcription... */\n\n for (let nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\n nChr = sDOMStr.charCodeAt(nChrIdx);\n if (nChr < 128) {\n /* one byte */\n aBytes[nIdx++] = nChr;\n } else if (nChr < 0x800) {\n /* two bytes */\n aBytes[nIdx++] = 192 + (nChr >>> 6);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x10000) {\n /* three bytes */\n aBytes[nIdx++] = 224 + (nChr >>> 12);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x200000) {\n /* four bytes */\n aBytes[nIdx++] = 240 + (nChr >>> 18);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x4000000) {\n /* five bytes */\n aBytes[nIdx++] = 248 + (nChr >>> 24);\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else /* if (nChr <= 0x7fffffff) */ {\n /* six bytes */\n aBytes[nIdx++] = 252 + (nChr >>> 30);\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n }\n }\n\n return aBytes; \n }\n\n /**\n * Converst string to ArrayBuffer\n * @param dataString \n */\n static stringToArrayBuffer(dataString: string): ArrayBuffer {\n const data = new ArrayBuffer(dataString.length);\n const dataView = new Uint8Array(data);\n for (let i: number = 0; i < dataString.length; i++) {\n dataView[i] = dataString.charCodeAt(i);\n }\n return data;\n }\n\n /**\n * Converts Uint8Array to a string\n * @param aBytes \n */\n static utf8ArrToString (aBytes: Uint8Array): string {\n let sView = Constants.EMPTY_STRING;\n for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\n nPart = aBytes[nIdx];\n sView += String.fromCharCode(\n nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\n : /* nPart < 127 ? */ /* one byte */\n nPart\n );\n }\n return sView;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"@azure/msal-common\";\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\n\n/**\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class Base64Encode {\n \n /**\n * Returns URL Safe b64 encoded string from a plaintext string.\n * @param input \n */\n urlEncode(input: string): string {\n return encodeURIComponent(this.encode(input)\n .replace(/=/g, Constants.EMPTY_STRING)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\"));\n }\n\n /**\n * Returns URL Safe b64 encoded string from an int8Array.\n * @param inputArr \n */\n urlEncodeArr(inputArr: Uint8Array): string {\n return this.base64EncArr(inputArr)\n .replace(/=/g, Constants.EMPTY_STRING)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n }\n\n /**\n * Returns b64 encoded string from plaintext string.\n * @param input \n */\n encode(input: string): string {\n const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\n return this.base64EncArr(inputUtf8Arr);\n }\n\n /**\n * Base64 encode byte array\n * @param aBytes \n */\n private base64EncArr(aBytes: Uint8Array): string { \n const eqLen = (3 - (aBytes.length % 3)) % 3;\n let sB64Enc = Constants.EMPTY_STRING;\n \n for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\n nMod3 = nIdx % 3;\n /* Uncomment the following line in order to split the output in lines 76-character long: */\n /*\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\n */\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\n sB64Enc += String.fromCharCode(\n this.uint6ToB64(nUint24 >>> 18 & 63), \n this.uint6ToB64(nUint24 >>> 12 & 63), \n this.uint6ToB64(nUint24 >>> 6 & 63), \n this.uint6ToB64(nUint24 & 63)\n );\n nUint24 = 0;\n }\n }\n\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\n }\n\n /**\n * Base64 string to array encoding helper\n * @param nUint6 \n */\n private uint6ToB64 (nUint6: number): number {\n return nUint6 < 26 ?\n nUint6 + 65\n : nUint6 < 52 ?\n nUint6 + 71\n : nUint6 < 62 ?\n nUint6 - 4\n : nUint6 === 62 ?\n 43\n : nUint6 === 63 ?\n 47\n :\n 65;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"@azure/msal-common\";\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\n\n/**\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class Base64Decode {\n\n /**\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\n * @param input \n */\n decode(input: string): string {\n let encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (encodedString.length % 4) {\n case 0:\n break;\n case 2:\n encodedString += \"==\";\n break;\n case 3:\n encodedString += \"=\";\n break;\n default:\n throw new Error(\"Invalid base64 string\");\n }\n\n const inputUtf8Arr = this.base64DecToArr(encodedString);\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\n }\n\n /**\n * Decodes base64 into Uint8Array\n * @param base64String \n * @param nBlockSize \n */\n private base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\n const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, Constants.EMPTY_STRING);\n const nInLen = sB64Enc.length;\n const nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\n const aBytes = new Uint8Array(nOutLen);\n\n for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3;\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\n }\n nUint24 = 0;\n }\n }\n\n return aBytes;\n }\n\n /**\n * Base64 string to array decoding helper\n * @param charNum \n */\n private b64ToUint6(charNum: number): number {\n return charNum > 64 && charNum < 91 ?\n charNum - 65\n : charNum > 96 && charNum < 123 ? \n charNum - 71\n : charNum > 47 && charNum < 58 ?\n charNum + 4\n : charNum === 43 ?\n 62\n : charNum === 47 ?\n 63\n :\n 0;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserAuthErrorMessage = {\n pkceNotGenerated: {\n code: \"pkce_not_created\",\n desc: \"The PKCE code challenge and verifier could not be generated.\"\n },\n cryptoDoesNotExist: {\n code: \"crypto_nonexistent\",\n desc: \"The crypto object or function is not available.\"\n },\n httpMethodNotImplementedError: {\n code: \"http_method_not_implemented\",\n desc: \"The HTTP method given has not been implemented in this library.\"\n },\n emptyNavigateUriError: {\n code: \"empty_navigate_uri\",\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\n },\n hashEmptyError: {\n code: \"hash_empty_error\",\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n hashDoesNotContainStateError: {\n code: \"no_state_in_hash\",\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\n },\n hashDoesNotContainKnownPropertiesError: {\n code: \"hash_does_not_contain_known_properties\",\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n unableToParseStateError: {\n code: \"unable_to_parse_state\",\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\n },\n stateInteractionTypeMismatchError: {\n code: \"state_interaction_type_mismatch\",\n desc: \"Hash contains state but the interaction type does not match the caller.\"\n },\n interactionInProgress: {\n code: \"interaction_in_progress\",\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n popupWindowError: {\n code: \"popup_window_error\",\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\n },\n emptyWindowError: {\n code: \"empty_window_error\",\n desc: \"window.open returned null or undefined window object.\"\n },\n userCancelledError: {\n code: \"user_cancelled\",\n desc: \"User cancelled the flow.\"\n },\n monitorPopupTimeoutError: {\n code: \"monitor_window_timeout\",\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n monitorIframeTimeoutError: {\n code: \"monitor_window_timeout\",\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n redirectInIframeError: {\n code: \"redirect_in_iframe\",\n desc: \"Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\n },\n blockTokenRequestsInHiddenIframeError: {\n code: \"block_iframe_reload\",\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\n },\n blockAcquireTokenInPopupsError: {\n code: \"block_nested_popups\",\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\n },\n iframeClosedPrematurelyError: {\n code: \"iframe_closed_prematurely\",\n desc: \"The iframe being monitored was closed prematurely.\"\n },\n silentLogoutUnsupportedError: {\n code: \"silent_logout_unsupported\",\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\n },\n noAccountError: {\n code: \"no_account_error\",\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\n },\n silentPromptValueError: {\n code: \"silent_prompt_value_error\",\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none'.\"\n },\n noTokenRequestCacheError: {\n code: \"no_token_request_cache_error\",\n desc: \"No token request found in cache.\"\n },\n unableToParseTokenRequestCacheError: {\n code: \"unable_to_parse_token_request_cache_error\",\n desc: \"The cached token request could not be parsed.\"\n },\n noCachedAuthorityError: {\n code: \"no_cached_authority_error\",\n desc: \"No cached authority found.\"\n },\n authRequestNotSet: {\n code: \"auth_request_not_set_error\",\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\n },\n invalidCacheType: {\n code: \"invalid_cache_type\",\n desc: \"Invalid cache type\"\n },\n notInBrowserEnvironment: {\n code: \"non_browser_environment\",\n desc: \"Login and token requests are not supported in non-browser environments.\"\n },\n databaseNotOpen: {\n code: \"database_not_open\",\n desc: \"Database is not open!\"\n },\n noNetworkConnectivity: {\n code: \"no_network_connectivity\",\n desc: \"No network connectivity. Check your internet connection.\"\n },\n postRequestFailed: {\n code: \"post_request_failed\",\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\n },\n getRequestFailed: {\n code: \"get_request_failed\",\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\n },\n failedToParseNetworkResponse: {\n code: \"failed_to_parse_response\",\n desc: \"Failed to parse network response. Check network trace.\"\n },\n unableToLoadTokenError: {\n code: \"unable_to_load_token\",\n desc: \"Error loading token to cache.\"\n },\n signingKeyNotFoundInStorage: {\n code: \"crypto_key_not_found\",\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\n },\n authCodeRequired: {\n code: \"auth_code_required\",\n desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\n },\n authCodeOrNativeAccountRequired: {\n code: \"auth_code_or_nativeAccountId_required\",\n desc: \"An authorization code or nativeAccountId must be provided to this flow.\"\n },\n databaseUnavailable: {\n code: \"database_unavailable\",\n desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\n },\n unableToAcquireTokenFromNativePlatform: {\n code: \"unable_to_acquire_token_from_native_platform\",\n desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\n },\n nativeHandshakeTimeout: {\n code: \"native_handshake_timeout\",\n desc: \"Timed out while attempting to establish connection to browser extension\"\n },\n nativeExtensionNotInstalled: {\n code: \"native_extension_not_installed\",\n desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\n },\n nativeConnectionNotEstablished: {\n code: \"native_connection_not_established\",\n desc: \"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors.\"\n },\n nativeBrokerCalledBeforeInitialize: {\n code: \"native_broker_called_before_initialize\",\n desc: \"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors.\"\n },\n nativePromptNotSupported: {\n code: \"native_prompt_not_supported\",\n desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\n }\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserAuthError extends AuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\n this.name = \"BrowserAuthError\";\n }\n\n /**\n * Creates an error thrown when PKCE is not implemented.\n * @param errDetail\n */\n static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\n `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\n }\n\n /**\n * Creates an error thrown when the crypto object is unavailable.\n * @param errDetail\n */\n static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\n `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\n }\n\n /**\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\n * @param method\n */\n static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\n `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\n }\n\n /**\n * Creates an error thrown when the navigation URI is empty.\n */\n static createEmptyNavigationUriError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n * @param hashValue\n */\n static createEmptyHashError(hashValue: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n */\n static createHashDoesNotContainStateError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value does not contain known properties\n */\n static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n */\n static createUnableToParseStateError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\n }\n\n /**\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\n */\n static createStateInteractionTypeMismatchError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\n }\n\n /**\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\n */\n static createInteractionInProgressError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\n }\n\n /**\n * Creates an error thrown when the popup window could not be opened.\n * @param errDetail\n */\n static createPopupWindowError(errDetail?: string): BrowserAuthError {\n let errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\n errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\n }\n\n /**\n * Creates an error thrown when window.open returns an empty window object.\n * @param errDetail\n */\n static createEmptyWindowCreatedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\n }\n\n /**\n * Creates an error thrown when the user closes a popup.\n */\n static createUserCancelledError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\n BrowserAuthErrorMessage.userCancelledError.desc);\n }\n\n /**\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\n */\n static createMonitorPopupTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\n BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\n }\n\n /**\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\n */\n static createMonitorIframeTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\n BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\n }\n\n /**\n * Creates an error thrown when navigateWindow is called inside an iframe or brokered applications.\n * @param windowParentCheck\n */\n static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code,\n `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\n }\n\n /**\n * Creates an error thrown when an auth reload is done inside an iframe.\n */\n static createBlockReloadInHiddenIframeError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\n BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\n }\n\n /**\n * Creates an error thrown when a popup attempts to call an acquireToken API\n * @returns\n */\n static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code,\n BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\n }\n\n /**\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\n */\n static createIframeClosedPrematurelyError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\n }\n\n /**\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\n */\n static createSilentLogoutUnsupportedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\n }\n\n /**\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\n */\n static createNoAccountError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\n }\n\n /**\n * Creates an error thrown when a given prompt value is invalid for silent requests.\n */\n static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\n }\n\n /**\n * Creates an error thrown when the cached token request could not be retrieved from the cache\n */\n static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\n BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\n }\n\n /**\n * Creates an error thrown when the token request could not be retrieved from the cache\n */\n static createNoTokenRequestCacheError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\n BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\n }\n\n /**\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\n */\n static createAuthRequestNotSetError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\n BrowserAuthErrorMessage.authRequestNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the authority could not be retrieved from the cache\n */\n static createNoCachedAuthorityError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\n BrowserAuthErrorMessage.noCachedAuthorityError.desc);\n }\n\n /**\n * Creates an error thrown if cache type is invalid.\n */\n static createInvalidCacheTypeError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\n }\n\n /**\n * Create an error thrown when login and token requests are made from a non-browser environment\n */\n static createNonBrowserEnvironmentError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\n }\n\n /**\n * Create an error thrown when indexDB database is not open\n */\n static createDatabaseNotOpenError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\n }\n\n /**\n * Create an error thrown when token fetch fails due to no internet\n */\n static createNoNetworkConnectivityError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\n }\n\n /**\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\n */\n static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when get request fails due to reasons other than internet connectivity\n */\n static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when network client fails to parse network response\n */\n static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when the necessary information is not available to sideload tokens\n */\n static createUnableToLoadTokenError(errorDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, `${BrowserAuthErrorMessage.unableToLoadTokenError.desc} | ${errorDetail}`);\n }\n\n /**\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\n */\n static createSigningKeyNotFoundInStorageError(keyId: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, `${BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc} | No match found for KeyId: ${keyId}`);\n }\n\n /**\n * Create an error when an authorization code is required but not provided\n */\n static createAuthCodeRequiredError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\n }\n\n /**\n * Create an error when an authorization code or native account ID is required but not provided\n */\n static createAuthCodeOrNativeAccountIdRequiredError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.desc);\n }\n\n /**\n * Create an error when IndexedDB is unavailable\n */\n static createDatabaseUnavailableError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\n }\n\n /**\n * Create an error when native token acquisition is not possible\n */\n static createUnableToAcquireTokenFromNativePlatformError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\n }\n\n /**\n * Create an error thrown when Handshake with browser extension times out\n */\n static createNativeHandshakeTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\n }\n\n /**\n * Create an error thrown when browser extension is not installed\n */\n static createNativeExtensionNotInstalledError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\n }\n\n /**\n * Create an error when native connection has not been established\n * @returns\n */\n static createNativeConnectionNotEstablishedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\n }\n\n /**\n * Create an error thrown when the initialize function hasn't been called\n */\n static createNativeBrokerCalledBeforeInitialize(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\n }\n\n /**\n * Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create\n * These requests must go through eSTS to ensure eSTS is aware of the new account\n */\n static createNativePromptParameterNotSupportedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { PkceCodes } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { Base64Encode } from \"../encode/Base64Encode\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\n\n// Constant byte array length\nconst RANDOM_BYTE_ARR_LENGTH = 32;\n\n/**\n * Class which exposes APIs to generate PKCE codes and code verifiers.\n */\nexport class PkceGenerator {\n\n private base64Encode: Base64Encode;\n private cryptoObj: BrowserCrypto;\n\n constructor(cryptoObj: BrowserCrypto) {\n this.base64Encode = new Base64Encode();\n this.cryptoObj = cryptoObj;\n }\n\n /**\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\n */\n async generateCodes(): Promise {\n const codeVerifier = this.generateCodeVerifier();\n const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);\n return {\n verifier: codeVerifier,\n challenge: codeChallenge\n };\n }\n\n /**\n * Generates a random 32 byte buffer and returns the base64\n * encoded string to be used as a PKCE Code Verifier\n */\n private generateCodeVerifier(): string {\n try {\n // Generate random values as utf-8\n const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\n this.cryptoObj.getRandomValues(buffer);\n // encode verifier as base64\n const pkceCodeVerifierB64: string = this.base64Encode.urlEncodeArr(buffer);\n return pkceCodeVerifierB64;\n } catch (e) {\n throw BrowserAuthError.createPkceNotGeneratedError(e);\n }\n }\n\n /**\n * Creates a base64 encoded PKCE Code Challenge string from the\n * hash created from the PKCE Code Verifier supplied\n */\n private async generateCodeChallengeFromVerifier(pkceCodeVerifier: string): Promise {\n try {\n // hashed verifier\n const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);\n // encode hash as base64\n return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\n } catch (e) {\n throw BrowserAuthError.createPkceNotGeneratedError(e);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\nimport { Logger } from \"..\";\nimport { Constants } from \"@azure/msal-common\";\n/**\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\n */\n// RSA KeyGen Algorithm\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\n// SHA-256 hashing algorithm\nconst S256_HASH_ALG = \"SHA-256\";\n// MOD length for PoP tokens\nconst MODULUS_LENGTH = 2048;\n// Public Exponent\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\n\n/**\n * This class implements functions used by the browser library to perform cryptography operations such as\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\n */\nexport class BrowserCrypto {\n\n private _keygenAlgorithmOptions: RsaHashedKeyGenParams;\n private logger: Logger;\n\n constructor(logger: Logger) {\n this.logger = logger;\n \n if (!(this.hasCryptoAPI())) {\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\n }\n\n this._keygenAlgorithmOptions = {\n name: PKCS1_V15_KEYGEN_ALG,\n hash: S256_HASH_ALG,\n modulusLength: MODULUS_LENGTH,\n publicExponent: PUBLIC_EXPONENT\n };\n }\n\n /**\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\n * @param dataString \n */\n async sha256Digest(dataString: string): Promise {\n const data = BrowserStringUtils.stringToUtf8Arr(dataString);\n\n return this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data);\n }\n\n /**\n * Populates buffer with cryptographically random values.\n * @param dataBuffer \n */\n getRandomValues(dataBuffer: Uint8Array): void {\n const cryptoObj = window[\"msCrypto\"] || window.crypto;\n if (!cryptoObj.getRandomValues) {\n throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\n }\n cryptoObj.getRandomValues(dataBuffer);\n }\n\n /**\n * Generates a keypair based on current keygen algorithm config.\n * @param extractable \n * @param usages \n */\n async generateKeyPair(extractable: boolean, usages: Array): Promise {\n return (\n this.hasIECrypto() ? \n this.msCryptoGenerateKey(extractable, usages) \n : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages)\n ) as Promise;\n }\n\n /**\n * Export key as Json Web Key (JWK)\n * @param key \n * @param format \n */\n async exportJwk(key: CryptoKey): Promise {\n return this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);\n }\n\n /**\n * Imports key as Json Web Key (JWK), can set extractable and usages.\n * @param key \n * @param format \n * @param extractable \n * @param usages \n */\n async importJwk(key: JsonWebKey, extractable: boolean, usages: Array): Promise {\n const keyString = BrowserCrypto.getJwkString(key);\n const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\n\n return this.hasIECrypto() ? \n this.msCryptoImportKey(keyBuffer, extractable, usages) \n : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages);\n }\n\n /**\n * Signs given data with given key\n * @param key \n * @param data \n */\n async sign(key: CryptoKey, data: ArrayBuffer): Promise {\n return this.hasIECrypto() ?\n this.msCryptoSign(key, data)\n : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data);\n }\n\n /**\n * Check whether IE crypto or other browser cryptography is available.\n */\n private hasCryptoAPI(): boolean {\n return this.hasIECrypto() || this.hasBrowserCrypto();\n }\n\n /**\n * Checks whether IE crypto (AKA msCrypto) is available.\n */\n private hasIECrypto(): boolean {\n return \"msCrypto\" in window;\n }\n\n /**\n * Check whether browser crypto is available.\n */\n private hasBrowserCrypto(): boolean {\n return \"crypto\" in window;\n }\n\n /**\n * Helper function for SHA digest.\n * @param algorithm \n * @param data \n */\n private async getSubtleCryptoDigest(algorithm: string, data: Uint8Array): Promise {\n return window.crypto.subtle.digest(algorithm, data);\n }\n\n /**\n * IE Helper function for SHA digest.\n * @param algorithm \n * @param data \n */\n private async getMSCryptoDigest(algorithm: string, data: Uint8Array): Promise {\n return new Promise((resolve, reject) => {\n const digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\n digestOperation.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike; }; }) => {\n resolve(e.target.result);\n });\n digestOperation.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for generating a keypair\n * @param extractable \n * @param usages \n */\n private async msCryptoGenerateKey(extractable: boolean, usages: Array): Promise {\n return new Promise((resolve: Function, reject: Function) => {\n const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages);\n msGenerateKey.addEventListener(\"complete\", (e: { target: { result: CryptoKeyPair | PromiseLike; }; }) => {\n resolve(e.target.result);\n });\n\n msGenerateKey.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for exportKey\n * @param key \n * @param format \n */\n private async msCryptoExportJwk(key: CryptoKey): Promise {\n return new Promise((resolve: Function, reject: Function) => {\n const msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\n msExportKey.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer; }; }) => {\n const resultBuffer: ArrayBuffer = e.target.result;\n\n const resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\n .replace(/\\r/g, Constants.EMPTY_STRING)\n .replace(/\\n/g, Constants.EMPTY_STRING)\n .replace(/\\t/g, Constants.EMPTY_STRING)\n .split(\" \").join(Constants.EMPTY_STRING)\n .replace(\"\\u0000\", Constants.EMPTY_STRING);\n\n try {\n resolve(JSON.parse(resultString));\n } catch (e) {\n reject(e);\n }\n });\n\n msExportKey.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for importKey\n * @param key \n * @param format \n * @param extractable \n * @param usages \n */\n private async msCryptoImportKey(keyBuffer: ArrayBuffer, extractable: boolean, usages: Array): Promise {\n return new Promise((resolve: Function, reject: Function) => {\n const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, this._keygenAlgorithmOptions, extractable, usages);\n msImportKey.addEventListener(\"complete\", (e: { target: { result: CryptoKey | PromiseLike; }; }) => {\n resolve(e.target.result);\n });\n\n msImportKey.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for sign JWT\n * @param key \n * @param data \n */\n private async msCryptoSign(key: CryptoKey, data: ArrayBuffer): Promise {\n return new Promise((resolve: Function, reject: Function) => {\n const msSign = window[\"msCrypto\"].subtle.sign(this._keygenAlgorithmOptions, key, data);\n msSign.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike; }; }) => {\n resolve(e.target.result);\n });\n\n msSign.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * Returns stringified jwk.\n * @param jwk \n */\n static getJwkString(jwk: JsonWebKey): string {\n return JSON.stringify(jwk, Object.keys(jwk).sort());\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { DB_NAME, DB_TABLE_NAME, DB_VERSION } from \"../utils/BrowserConstants\";\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\n\ninterface IDBOpenDBRequestEvent extends Event {\n target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\n target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBRequestEvent extends Event {\n target: IDBRequest & EventTarget;\n}\n\ninterface IDBDatabaseInfo {\n name?: string;\n version?: number;\n}\n\n/**\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\n */\nexport class DatabaseStorage implements IAsyncStorage {\n private db: IDBDatabase|undefined;\n private dbName: string;\n private tableName: string;\n private version: number;\n private dbOpen: boolean;\n\n constructor() {\n this.dbName = DB_NAME;\n this.version = DB_VERSION;\n this.tableName = DB_TABLE_NAME;\n this.dbOpen = false;\n }\n\n /**\n * Opens IndexedDB instance.\n */\n async open(): Promise {\n return new Promise((resolve, reject) => {\n const openDB = window.indexedDB.open(this.dbName, this.version);\n openDB.addEventListener(\"upgradeneeded\", (e: IDBVersionChangeEvent) => {\n const event = e as IDBOpenOnUpgradeNeededEvent;\n event.target.result.createObjectStore(this.tableName);\n });\n openDB.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBOpenDBRequestEvent;\n this.db = event.target.result;\n this.dbOpen = true;\n resolve();\n });\n openDB.addEventListener(\"error\", () => reject(BrowserAuthError.createDatabaseUnavailableError()));\n });\n }\n\n /**\n * Closes the connection to IndexedDB database when all pending transactions\n * complete.\n */\n closeConnection(): void {\n const db = this.db;\n if (db && this.dbOpen) {\n db.close();\n this.dbOpen = false;\n }\n }\n\n /**\n * Opens database if it's not already open\n */\n private async validateDbIsOpen(): Promise {\n if (!this.dbOpen) {\n return await this.open();\n }\n }\n\n /**\n * Retrieves item from IndexedDB instance.\n * @param key \n */\n async getItem(key: string): Promise {\n await this.validateDbIsOpen();\n return new Promise((resolve, reject) => {\n // TODO: Add timeouts?\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n const transaction = this.db.transaction([this.tableName], \"readonly\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbGet = objectStore.get(key);\n \n dbGet.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n this.closeConnection();\n resolve(event.target.result);\n });\n\n dbGet.addEventListener(\"error\", (e: Event) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Adds item to IndexedDB under given key\n * @param key \n * @param payload \n */\n async setItem(key: string, payload: T): Promise {\n await this.validateDbIsOpen();\n return new Promise((resolve: Function, reject: Function) => {\n // TODO: Add timeouts?\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\n\n const objectStore = transaction.objectStore(this.tableName);\n\n const dbPut = objectStore.put(payload, key);\n\n dbPut.addEventListener(\"success\", () => {\n this.closeConnection();\n resolve();\n });\n\n dbPut.addEventListener(\"error\", (e) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Removes item from IndexedDB under given key\n * @param key\n */\n async removeItem(key: string): Promise {\n await this.validateDbIsOpen();\n return new Promise((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbDelete = objectStore.delete(key);\n\n dbDelete.addEventListener(\"success\", () => {\n this.closeConnection();\n resolve();\n });\n\n dbDelete.addEventListener(\"error\", (e) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Get all the keys from the storage object as an iterable array of strings.\n */\n async getKeys(): Promise {\n await this.validateDbIsOpen();\n return new Promise((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n\n const transaction = this.db.transaction([this.tableName], \"readonly\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbGetKeys = objectStore.getAllKeys();\n\n dbGetKeys.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n this.closeConnection();\n resolve(event.target.result);\n });\n\n dbGetKeys.addEventListener(\"error\", (e: Event) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * \n * Checks whether there is an object under the search key in the object store\n */\n async containsKey(key: string): Promise {\n await this.validateDbIsOpen();\n\n return new Promise((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n\n const transaction = this.db.transaction([this.tableName], \"readonly\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbContainsKey = objectStore.count(key);\n\n dbContainsKey.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n this.closeConnection();\n resolve(event.target.result === 1);\n });\n\n dbContainsKey.addEventListener(\"error\", (e: Event) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\n * with IndexedDB database versions.\n */\n async deleteDatabase(): Promise {\n // Check if database being deleted exists\n\n if (this.db && this.dbOpen) {\n this.closeConnection();\n }\n \n // @ts-ignore\n const existingDatabases = await window.indexedDB.databases();\n const database = existingDatabases.find((database: IDBDatabaseInfo) => database.name === DB_NAME );\n\n // If database exists, delete it\n if (database) {\n return new Promise((resolve: Function, reject: Function) => {\n const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\n deleteDbRequest.addEventListener(\"success\", () => resolve(true));\n deleteDbRequest.addEventListener(\"error\", () => reject(false));\n });\n }\n\n // Database doesn't exist, return true\n return true;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IWindowStorage } from \"./IWindowStorage\";\n\nexport class MemoryStorage implements IWindowStorage {\n\n private cache: Map;\n\n constructor() {\n this.cache = new Map();\n }\n\n getItem(key: string): T | null {\n return this.cache.get(key) || null;\n }\n\n setItem(key: string, value: T): void {\n this.cache.set(key, value);\n }\n\n removeItem(key: string): void {\n this.cache.delete(key);\n }\n\n getKeys(): string[] {\n const cacheKeys: string[] = [];\n this.cache.forEach((value: T, key: string) => {\n cacheKeys.push(key);\n });\n return cacheKeys;\n }\n\n containsKey(key: string): boolean {\n return this.cache.has(key);\n }\n\n clear() :void {\n this.cache.clear();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"@azure/msal-common\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\nimport { DatabaseStorage } from \"./DatabaseStorage\";\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\nimport { MemoryStorage } from \"./MemoryStorage\";\n\n/**\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\n */\nexport class AsyncMemoryStorage implements IAsyncStorage {\n private inMemoryCache: MemoryStorage;\n private indexedDBCache: DatabaseStorage;\n private logger: Logger;\n private storeName: string;\n\n constructor(logger: Logger, storeName: string) {\n this.inMemoryCache = new MemoryStorage();\n this.indexedDBCache = new DatabaseStorage();\n this.logger = logger;\n this.storeName = storeName;\n }\n\n private handleDatabaseAccessError(error: unknown): void {\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\n this.logger.error(\"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\");\n } else {\n throw error;\n }\n }\n /**\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\n * storage object if item isn't found in-memory.\n * @param key \n */\n async getItem(key: string): Promise {\n const item = this.inMemoryCache.getItem(key);\n if(!item) {\n try {\n this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\n return await this.indexedDBCache.getItem(key);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n return item;\n }\n\n /**\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\n * storage object with the given key.\n * @param key \n * @param value \n */\n async setItem(key: string, value: T): Promise {\n this.inMemoryCache.setItem(key, value);\n try {\n await this.indexedDBCache.setItem(key, value);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n\n /**\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\n * @param key \n */\n async removeItem(key: string): Promise {\n this.inMemoryCache.removeItem(key);\n try {\n await this.indexedDBCache.removeItem(key);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n\n /**\n * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the \n * asynchronous storage object.\n */\n async getKeys(): Promise {\n const cacheKeys = this.inMemoryCache.getKeys();\n if (cacheKeys.length === 0) {\n try {\n this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\n return await this.indexedDBCache.getKeys();\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n return cacheKeys;\n }\n\n /**\n * Returns true or false if the given key is present in the cache.\n * @param key \n */\n async containsKey(key: string): Promise {\n const containsKey = this.inMemoryCache.containsKey(key);\n if(!containsKey) {\n try {\n this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\n return await this.indexedDBCache.containsKey(key);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n return containsKey;\n }\n\n /**\n * Clears in-memory Map and tries to delete the IndexedDB database.\n */\n async clear(): Promise {\n // InMemory cache is a Map instance, clear is straightforward\n this.logger.verbose(`Deleting in-memory keystore ${this.storeName}`);\n this.inMemoryCache.clear();\n this.logger.verbose(`In-memory keystore ${this.storeName} deleted`);\n this.logger.verbose(`Deleting persistent keystore ${this.storeName}`);\n \n try {\n const dbDeleted = await this.indexedDBCache.deleteDatabase();\n \n if (dbDeleted) {\n this.logger.verbose(`Persistent keystore ${this.storeName} deleted`);\n }\n \n return dbDeleted;\n } catch (e) {\n this.handleDatabaseAccessError(e);\n return false;\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Authority types supported by MSAL.\n */\nexport enum AuthorityType {\n Default,\n Adfs\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ApplicationTelemetry } from \"../../config/ClientConfiguration\";\nimport { Logger } from \"../../logger/Logger\";\nimport { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction } from \"./IPerformanceClient\";\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\nimport { PerformanceEvent, PerformanceEvents, PerformanceEventStatus } from \"./PerformanceEvent\";\n\nexport abstract class PerformanceClient implements IPerformanceClient {\n protected authority: string;\n protected libraryName: string;\n protected libraryVersion: string;\n protected applicationTelemetry: ApplicationTelemetry;\n protected clientId: string;\n protected logger: Logger;\n protected callbacks: Map;\n\n /**\n * Multiple events with the same correlation id.\n * Double keyed by correlation id and event id.\n * @protected\n * @type {Map>}\n */\n protected eventsByCorrelationId: Map>;\n\n /**\n * Underlying performance measurements for each operation\n *\n * @protected\n * @type {Map}\n */\n protected measurementsById: Map;\n\n /**\n * Creates an instance of PerformanceClient, \n * an abstract class containing core performance telemetry logic.\n *\n * @constructor\n * @param {string} clientId Client ID of the application\n * @param {string} authority Authority used by the application\n * @param {Logger} logger Logger used by the application\n * @param {string} libraryName Name of the library\n * @param {string} libraryVersion Version of the library\n */\n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry) {\n this.authority = authority;\n this.libraryName = libraryName;\n this.libraryVersion = libraryVersion;\n this.applicationTelemetry = applicationTelemetry;\n this.clientId = clientId;\n this.logger = logger;\n this.callbacks = new Map();\n this.eventsByCorrelationId = new Map();\n this.measurementsById = new Map();\n }\n\n /**\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\n *\n * @abstract\n * @param {string} measureName\n * @param {string} correlationId\n * @returns {IPerformanceMeasurement}\n */\n abstract startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement;\n\n /**\n * Generates and returns a unique id, typically a guid.\n *\n * @abstract\n * @returns {string}\n */\n abstract generateId(): string;\n\n /**\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\n *\n * @param {PerformanceEvents} measureName\n * @param {?string} [correlationId]\n * @returns {InProgressPerformanceEvent}\n */\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\n // Generate a placeholder correlation if the request does not provide one\n const eventCorrelationId = correlationId || this.generateId();\n if (!correlationId) {\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\n }\n\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\n const performanceMeasurement = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\n performanceMeasurement.startMeasurement();\n\n const inProgressEvent: PerformanceEvent = {\n eventId: this.generateId(),\n status: PerformanceEventStatus.InProgress,\n authority: this.authority,\n libraryName: this.libraryName,\n libraryVersion: this.libraryVersion,\n appName: this.applicationTelemetry?.appName,\n appVersion: this.applicationTelemetry?.appVersion,\n clientId: this.clientId,\n name: measureName,\n startTimeMs: Date.now(),\n correlationId: eventCorrelationId,\n };\n\n // Store in progress events so they can be discarded if not ended properly\n this.cacheEventByCorrelationId(inProgressEvent);\n this.cacheMeasurement(inProgressEvent, performanceMeasurement);\n\n // Return the event and functions the caller can use to properly end/flush the measurement\n return {\n endMeasurement: (event?: Partial): PerformanceEvent | null => {\n const completedEvent = this.endMeasurement({\n // Initial set of event properties\n ...inProgressEvent,\n // Properties set when event ends\n ...event\n });\n\n if (completedEvent) {\n // Cache event so that submeasurements can be added downstream\n this.cacheEventByCorrelationId(completedEvent);\n }\n\n return completedEvent;\n },\n flushMeasurement: () => {\n return this.flushMeasurements(inProgressEvent.name, inProgressEvent.correlationId);\n },\n discardMeasurement: () => {\n return this.discardMeasurements(inProgressEvent.correlationId);\n },\n measurement: performanceMeasurement,\n event: inProgressEvent\n };\n\n }\n\n /**\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\n * as consumers should instead use the function returned by startMeasurement.\n *\n * @param {PerformanceEvent} event\n * @returns {(PerformanceEvent | null)}\n */\n endMeasurement(event: PerformanceEvent): PerformanceEvent | null {\n const performanceMeasurement = this.measurementsById.get(event.eventId);\n if (performanceMeasurement) {\n // Immediately delete so that the same event isnt ended twice\n this.measurementsById.delete(event.eventId);\n performanceMeasurement.endMeasurement();\n const durationMs = performanceMeasurement.flushMeasurement();\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\n if (durationMs !== null) {\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${durationMs} ms`, event.correlationId);\n\n const completedEvent: PerformanceEvent = {\n // Allow duration to be overwritten when event ends (e.g. testing), but not status\n durationMs: Math.round(durationMs),\n ...event,\n status: PerformanceEventStatus.Completed,\n };\n\n return completedEvent;\n } else {\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", event.correlationId);\n }\n } else {\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\n }\n\n return null;\n }\n\n /**\n * Upserts event into event cache.\n * First key is the correlation id, second key is the event id.\n * Allows for events to be grouped by correlation id,\n * and to easily allow for properties on them to be updated.\n *\n * @private\n * @param {PerformanceEvent} event\n */\n private cacheEventByCorrelationId(event: PerformanceEvent) {\n const existingEvents = this.eventsByCorrelationId.get(event.correlationId);\n if (existingEvents) {\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\n existingEvents.set(event.eventId, event);\n } else {\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\n this.eventsByCorrelationId.set(event.correlationId, new Map().set(event.eventId, event));\n }\n }\n\n /**\n * Cache measurements by their id.\n *\n * @private\n * @param {PerformanceEvent} event\n * @param {IPerformanceMeasurement} measurement\n */\n private cacheMeasurement(event: PerformanceEvent, measurement: IPerformanceMeasurement) {\n this.measurementsById.set(event.eventId, measurement);\n }\n\n /**\n * Gathers and emits performance events for measurements taked for the given top-level API and correlation ID.\n *\n * @param {PerformanceEvents} measureName\n * @param {string} correlationId\n */\n flushMeasurements(measureName: PerformanceEvents, correlationId: string): void {\n this.logger.trace(`PerformanceClient: Performance measurements flushed for ${measureName}`, correlationId);\n const eventsForCorrelationId = this.eventsByCorrelationId.get(correlationId);\n if (eventsForCorrelationId) {\n this.discardMeasurements(correlationId);\n\n /*\n * Manually end incomplete submeasurements to ensure there arent orphaned/never ending events.\n * Incomplete submeasurements are likely an instrumentation bug that should be fixed.\n * IE only supports Map.forEach.\n */\n const completedEvents: PerformanceEvent[] = [];\n eventsForCorrelationId.forEach(event => {\n if (event.name !== measureName && event.status !== PerformanceEventStatus.Completed) {\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${event.name} found for ${measureName}`, correlationId);\n\n const completedEvent = this.endMeasurement(event);\n if (completedEvent) {\n completedEvents.push(completedEvent);\n }\n }\n\n completedEvents.push(event);\n });\n\n // Sort events by start time (earliest first)\n const sortedCompletedEvents = completedEvents.sort((eventA, eventB) => eventA.startTimeMs - eventB.startTimeMs);\n\n // Take completed top level event and add completed submeasurements durations as properties\n const topLevelEvents = sortedCompletedEvents.filter(event => event.name === measureName && event.status === PerformanceEventStatus.Completed);\n if (topLevelEvents.length > 0) {\n /*\n * Only take the first top-level event if there are multiple events with the same correlation id.\n * This greatly simplifies logic for submeasurements.\n */\n if (topLevelEvents.length > 1) {\n this.logger.verbose(\"PerformanceClient: Multiple distinct top-level performance events found, using the first\", correlationId);\n }\n const topLevelEvent = topLevelEvents[0];\n\n this.logger.verbose(`PerformanceClient: Measurement found for ${measureName}`, correlationId);\n\n // Build event object with top level and sub measurements\n const eventToEmit = sortedCompletedEvents.reduce((previous, current) => {\n if (current.name !== measureName) {\n this.logger.trace(`PerformanceClient: Complete submeasurement found for ${current.name}`, correlationId);\n // TODO: Emit additional properties for each subMeasurement\n const subMeasurementName = `${current.name}DurationMs`;\n /*\n * Some code paths, such as resolving an authority, can occur multiple times.\n * Only take the first measurement, since the second could be read from the cache,\n * or due to the same correlation id being used for two distinct requests.\n */\n if (!previous[subMeasurementName]) {\n previous[subMeasurementName] = current.durationMs;\n } else {\n this.logger.verbose(`PerformanceClient: Submeasurement for ${measureName} already exists for ${current.name}, ignoring`, correlationId);\n }\n if (current.accessTokenSize) {\n previous.accessTokenSize = current.accessTokenSize;\n }\n if (current.idTokenSize) {\n previous.idTokenSize = current.idTokenSize;\n }\n }\n\n return previous;\n }, topLevelEvent);\n\n this.emitEvents([eventToEmit], eventToEmit.correlationId);\n } else {\n this.logger.verbose(`PerformanceClient: No completed top-level measurements found for ${measureName}`, correlationId);\n }\n } else {\n this.logger.verbose(\"PerformanceClient: No measurements found\", correlationId);\n }\n }\n\n /**\n * Removes measurements for a given correlation id.\n *\n * @param {string} correlationId\n */\n discardMeasurements(correlationId: string): void {\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\n this.eventsByCorrelationId.delete(correlationId);\n }\n\n /**\n * Registers a callback function to receive performance events.\n *\n * @param {PerformanceCallbackFunction} callback\n * @returns {string}\n */\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\n const callbackId = this.generateId();\n this.callbacks.set(callbackId, callback);\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\n\n return callbackId;\n }\n\n /**\n * Removes a callback registered with addPerformanceCallback.\n *\n * @param {string} callbackId\n * @returns {boolean}\n */\n removePerformanceCallback(callbackId: string): boolean {\n const result = this.callbacks.delete(callbackId);\n\n if (result) {\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\n } else {\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\n }\n\n return result;\n }\n\n /**\n * Emits events to all registered callbacks.\n *\n * @param {PerformanceEvent[]} events\n * @param {?string} [correlationId]\n */\n emitEvents(events: PerformanceEvent[], correlationId: string): void {\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\n\n this.callbacks.forEach((callback: PerformanceCallbackFunction, callbackId: string) => {\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\n callback.apply(null, [events]);\n });\n }\n\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IPerformanceClient } from \"./IPerformanceClient\";\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\nimport { PerformanceClient } from \"./PerformanceClient\";\n\nexport class StubPerformanceMeasurement implements IPerformanceMeasurement {\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n startMeasurement(): void { }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n endMeasurement(): void { }\n flushMeasurement(): number | null {\n return null;\n }\n \n}\n\nexport class StubPerformanceClient extends PerformanceClient implements IPerformanceClient {\n generateId(): string {\n return \"callback-id\";\n }\n \n startPerformanceMeasuremeant(): IPerformanceMeasurement {\n return new StubPerformanceMeasurement();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"../error/AuthError\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\nimport { SignedHttpRequest } from \"./SignedHttpRequest\";\n\n/**\n * The PkceCodes type describes the structure\n * of objects that contain PKCE code\n * challenge and verifier pairs\n */\nexport type PkceCodes = {\n verifier: string,\n challenge: string\n};\n\nexport type SignedHttpRequestParameters = Pick & {\n correlationId?: string\n};\n\n/**\n * Interface for crypto functions used by library\n */\nexport interface ICrypto {\n /**\n * Creates a guid randomly.\n */\n createNewGuid(): string;\n /**\n * base64 Encode string\n * @param input \n */\n base64Encode(input: string): string;\n /**\n * base64 decode string\n * @param input \n */\n base64Decode(input: string): string;\n /**\n * Generate PKCE codes for OAuth. See RFC here: https://tools.ietf.org/html/rfc7636\n */\n generatePkceCodes(): Promise;\n /**\n * Generates an JWK RSA S256 Thumbprint\n * @param request\n */\n getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise;\n /**\n * Removes cryptographic keypair from key store matching the keyId passed in\n * @param kid \n */\n removeTokenBindingKey(kid: string): Promise;\n /**\n * Removes all cryptographic keys from IndexedDB storage\n */\n clearKeystore(): Promise;\n /** \n * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.\n * @param accessToken \n */\n signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise;\n /**\n * Returns the SHA-256 hash of an input string\n * @param plainText\n */\n hashString(plainText: string): Promise;\n}\n\nexport const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {\n createNewGuid: (): string => {\n const notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n base64Decode: (): string => {\n const notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n base64Encode: (): string => {\n const notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async generatePkceCodes(): Promise {\n const notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async getPublicKeyThumbprint(): Promise {\n const notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async removeTokenBindingKey(): Promise {\n const notImplErr = \"Crypto interface - removeTokenBindingKey() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async clearKeystore(): Promise {\n const notImplErr = \"Crypto interface - clearKeystore() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async signJwt(): Promise {\n const notImplErr = \"Crypto interface - signJwt() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async hashString(): Promise {\n const notImplErr = \"Crypto interface - hashString() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\n */\nexport const InteractionRequiredServerErrorMessage = [\n \"interaction_required\",\n \"consent_required\",\n \"login_required\"\n];\n\nexport const InteractionRequiredAuthSubErrorMessage = [\n \"message_only\",\n \"additional_action\",\n \"basic_action\",\n \"user_password_expired\",\n \"consent_required\"\n];\n\n/**\n * Interaction required errors defined by the SDK\n */\nexport const InteractionRequiredAuthErrorMessage = {\n noTokensFoundError: {\n code: \"no_tokens_found\",\n desc: \"No refresh token found in the cache. Please sign-in.\"\n },\n native_account_unavailable: {\n code: \"native_account_unavailable\",\n desc: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\"\n }\n};\n\n/**\n * Error thrown when user interaction is required.\n */\nexport class InteractionRequiredAuthError extends AuthError {\n\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\n super(errorCode, errorMessage, subError);\n this.name = \"InteractionRequiredAuthError\";\n\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\n }\n\n /**\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\n * @param errorCode \n * @param errorString \n * @param subError \n */\n static isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string) : boolean {\n const isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\n const isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\n const isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some((irErrorCode) => {\n return errorString.indexOf(irErrorCode) > -1;\n });\n\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\n }\n\n /**\n * Creates an error thrown when the authorization code required for a token request is null or empty.\n */\n static createNoTokensFoundError(): InteractionRequiredAuthError {\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.noTokensFoundError.code, InteractionRequiredAuthErrorMessage.noTokensFoundError.desc);\n }\n\n /**\n * Creates an error thrown when the native broker returns ACCOUNT_UNAVAILABLE status, indicating that the account was removed and interactive sign-in is required\n * @returns \n */\n static createNativeAccountUnavailableError(): InteractionRequiredAuthError {\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.native_account_unavailable.code, InteractionRequiredAuthErrorMessage.native_account_unavailable.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * Error thrown when there is an error with the server code, for example, unavailability.\n */\nexport class ServerError extends AuthError {\n\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\n super(errorCode, errorMessage, subError);\n this.name = \"ServerError\";\n\n Object.setPrototypeOf(this, ServerError.prototype);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { Separators, Constants } from \"../utils/Constants\";\n\n/**\n * Client info object which consists of two IDs. Need to add more info here.\n */\nexport type ClientInfo = {\n uid: string,\n utid: string\n};\n\n/**\n * Function to build a client info object from server clientInfo string\n * @param rawClientInfo\n * @param crypto\n */\nexport function buildClientInfo(rawClientInfo: string, crypto: ICrypto): ClientInfo {\n if (StringUtils.isEmpty(rawClientInfo)) {\n throw ClientAuthError.createClientInfoEmptyError();\n }\n\n try {\n const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);\n return JSON.parse(decodedClientInfo) as ClientInfo;\n } catch (e) {\n throw ClientAuthError.createClientInfoDecodingError(e);\n }\n}\n\n/**\n * Function to build a client info object from cached homeAccountId string\n * @param homeAccountId \n */\nexport function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo {\n if (StringUtils.isEmpty(homeAccountId)) {\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\n }\n const clientInfoParts: string[] = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\n return {\n uid: clientInfoParts[0],\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\n };\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n Separators,\n CacheAccountType,\n CacheType,\n Constants,\n} from \"../../utils/Constants\";\nimport { Authority } from \"../../authority/Authority\";\nimport { AuthToken } from \"../../account/AuthToken\";\nimport { ICrypto } from \"../../crypto/ICrypto\";\nimport { buildClientInfo } from \"../../account/ClientInfo\";\nimport { StringUtils } from \"../../utils/StringUtils\";\nimport { AccountInfo } from \"../../account/AccountInfo\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\nimport { AuthorityType } from \"../../authority/AuthorityType\";\nimport { Logger } from \"../../logger/Logger\";\nimport { TokenClaims } from \"../../account/TokenClaims\";\n\n/**\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\n *\n * Key : Value Schema\n *\n * Key: --\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * realm: Full tenant or organizational identifier that the account belongs to\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\n * authorityType: Accounts authority type as a string\n * name: Full name for the account, including given name and family name,\n * clientInfo: Full base64 encoded client info received from ESTS\n * lastModificationTime: last time this entity was modified in the cache\n * lastModificationApp:\n * idTokenClaims: Object containing claims parsed from ID token\n * nativeAccountId: Account identifier on the native device\n * }\n */\nexport class AccountEntity {\n homeAccountId: string;\n environment: string;\n realm: string;\n localAccountId: string;\n username: string;\n authorityType: string;\n name?: string;\n clientInfo?: string;\n lastModificationTime?: string;\n lastModificationApp?: string;\n cloudGraphHostName?: string;\n msGraphHost?: string;\n idTokenClaims?: TokenClaims;\n nativeAccountId?: string;\n\n /**\n * Generate Account Id key component as per the schema: -\n */\n generateAccountId(): string {\n const accountId: Array = [this.homeAccountId, this.environment];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generate Account Cache Key as per the schema: --\n */\n generateAccountKey(): string {\n return AccountEntity.generateAccountCacheKey({\n homeAccountId: this.homeAccountId,\n environment: this.environment,\n tenantId: this.realm,\n username: this.username,\n localAccountId: this.localAccountId\n });\n }\n\n /**\n * returns the type of the cache (in this case account)\n */\n generateType(): number {\n switch (this.authorityType) {\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\n return CacheType.ADFS;\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\n return CacheType.MSA;\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\n return CacheType.MSSTS;\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\n return CacheType.GENERIC;\n default: {\n throw ClientAuthError.createUnexpectedAccountTypeError();\n }\n }\n }\n\n /**\n * Returns the AccountInfo interface for this account.\n */\n getAccountInfo(): AccountInfo {\n return {\n homeAccountId: this.homeAccountId,\n environment: this.environment,\n tenantId: this.realm,\n username: this.username,\n localAccountId: this.localAccountId,\n name: this.name,\n idTokenClaims: this.idTokenClaims,\n nativeAccountId: this.nativeAccountId\n };\n }\n\n /**\n * Generates account key from interface\n * @param accountInterface\n */\n static generateAccountCacheKey(accountInterface: AccountInfo): string {\n const accountKey = [\n accountInterface.homeAccountId,\n accountInterface.environment || Constants.EMPTY_STRING,\n accountInterface.tenantId || Constants.EMPTY_STRING,\n ];\n\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\n * @param clientInfo\n * @param authority\n * @param idToken\n * @param policy\n */\n static createAccount(\n clientInfo: string,\n homeAccountId: string,\n idToken: AuthToken,\n authority?: Authority,\n cloudGraphHostName?: string,\n msGraphHost?: string,\n environment?: string,\n nativeAccountId?: string\n ): AccountEntity {\n const account: AccountEntity = new AccountEntity();\n\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\n account.clientInfo = clientInfo;\n account.homeAccountId = homeAccountId;\n account.nativeAccountId = nativeAccountId;\n\n const env = environment || (authority && authority.getPreferredCache());\n\n if (!env) {\n throw ClientAuthError.createInvalidCacheEnvironmentError();\n }\n\n account.environment = env;\n // non AAD scenarios can have empty realm\n account.realm = idToken?.claims?.tid || Constants.EMPTY_STRING;\n\n if (idToken) {\n account.idTokenClaims = idToken.claims;\n\n // How do you account for MSA CID here?\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\n\n /*\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. In most cases it will contain a single email.\n * This field should not be relied upon if a custom policy is configured to return more than 1 email.\n */\n account.username = idToken?.claims?.preferred_username || (idToken?.claims?.emails? idToken.claims.emails[0]: Constants.EMPTY_STRING);\n account.name = idToken?.claims?.name;\n }\n\n account.cloudGraphHostName = cloudGraphHostName;\n account.msGraphHost = msGraphHost;\n\n return account;\n }\n\n /**\n * Builds non-AAD/ADFS account.\n * @param authority\n * @param idToken\n */\n static createGenericAccount(\n homeAccountId: string,\n idToken: AuthToken,\n authority?: Authority,\n cloudGraphHostName?: string,\n msGraphHost?: string,\n environment?: string\n ): AccountEntity {\n const account: AccountEntity = new AccountEntity();\n\n account.authorityType = (authority && authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\n account.homeAccountId = homeAccountId;\n // non AAD scenarios can have empty realm\n account.realm = Constants.EMPTY_STRING;\n\n const env = environment || authority && authority.getPreferredCache();\n\n if (!env) {\n throw ClientAuthError.createInvalidCacheEnvironmentError();\n }\n\n if (idToken) {\n // How do you account for MSA CID here?\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\n // upn claim for most ADFS scenarios\n account.username = idToken?.claims?.upn || Constants.EMPTY_STRING;\n account.name = idToken?.claims?.name || Constants.EMPTY_STRING;\n account.idTokenClaims = idToken?.claims;\n }\n\n account.environment = env;\n\n account.cloudGraphHostName = cloudGraphHostName;\n account.msGraphHost = msGraphHost;\n\n /*\n * add uniqueName to claims\n * account.name = idToken.claims.uniqueName;\n */\n\n return account;\n }\n\n /**\n * Generate HomeAccountId from server response\n * @param serverClientInfo\n * @param authType\n */\n static generateHomeAccountId(serverClientInfo: string, authType: AuthorityType, logger: Logger, cryptoObj: ICrypto, idToken?: AuthToken): string {\n\n const accountId = idToken?.claims?.sub ? idToken.claims.sub : Constants.EMPTY_STRING;\n\n // since ADFS does not have tid and does not set client_info\n if (authType === AuthorityType.Adfs) {\n return accountId;\n }\n\n // for cases where there is clientInfo\n if (serverClientInfo) {\n try {\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\n return `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`;\n }\n } catch (e) {}\n }\n\n // default to \"sub\" claim\n logger.verbose(\"No client info in response\");\n return accountId;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAccountEntity(entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"localAccountId\") &&\n entity.hasOwnProperty(\"username\") &&\n entity.hasOwnProperty(\"authorityType\")\n );\n }\n\n /**\n * Helper function to determine whether 2 accountInfo objects represent the same account\n * @param accountA\n * @param accountB\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\n */\n static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean {\n if (!accountA || !accountB) {\n return false;\n }\n\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\n if (compareClaims) {\n const accountAClaims = (accountA.idTokenClaims || {}) as TokenClaims;\n const accountBClaims = (accountB.idTokenClaims || {}) as TokenClaims;\n\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\n claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\n (accountAClaims.nonce === accountBClaims.nonce);\n }\n\n return (accountA.homeAccountId === accountB.homeAccountId) &&\n (accountA.localAccountId === accountB.localAccountId) &&\n (accountA.username === accountB.username) &&\n (accountA.tenantId === accountB.tenantId) &&\n (accountA.environment === accountB.environment) &&\n (accountA.nativeAccountId === accountB.nativeAccountId) &&\n claimsMatch;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type CcsCredential = {\n credential: string,\n type: CcsCredentialType\n};\n\nexport enum CcsCredentialType {\n HOME_ACCOUNT_ID = \"home_account_id\",\n UPN = \"UPN\"\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Separators, CredentialType, CacheType, Constants, AuthenticationScheme } from \"../../utils/Constants\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\n\n/**\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\n *\n * Key:Value Schema:\n *\n * Key: -------\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * familyId: Family ID identifier, usually only used for refresh tokens\n * realm: Full tenant or organizational identifier that the account belongs to\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\n * userAssertionHash: Matches the SHA 256 hash of the obo_assertion for the OBO flow\n * }\n */\nexport class CredentialEntity {\n homeAccountId: string;\n environment: string;\n credentialType: CredentialType;\n clientId: string;\n secret: string;\n familyId?: string;\n realm?: string;\n target?: string;\n userAssertionHash?: string;\n tokenType?: AuthenticationScheme;\n keyId?: string;\n requestedClaimsHash?: string;\n\n /**\n * Generate Account Id key component as per the schema: -\n */\n generateAccountId(): string {\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\n }\n\n /**\n * Generate Credential Id key component as per the schema: --\n */\n generateCredentialId(): string {\n return CredentialEntity.generateCredentialIdForCacheKey(\n this.credentialType,\n this.clientId,\n this.realm,\n this.familyId\n );\n }\n\n /**\n * Generate target key component as per schema: \n */\n generateTarget(): string {\n return CredentialEntity.generateTargetForCacheKey(this.target);\n }\n\n /**\n * generates credential key\n */\n generateCredentialKey(): string {\n return CredentialEntity.generateCredentialCacheKey(\n this.homeAccountId,\n this.environment,\n this.credentialType,\n this.clientId,\n this.realm,\n this.target,\n this.familyId,\n this.tokenType,\n this.requestedClaimsHash,\n );\n }\n\n /**\n * returns the type of the cache (in this case credential)\n */\n generateType(): number {\n switch (this.credentialType) {\n case CredentialType.ID_TOKEN:\n return CacheType.ID_TOKEN;\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n return CacheType.ACCESS_TOKEN;\n case CredentialType.REFRESH_TOKEN:\n return CacheType.REFRESH_TOKEN;\n default: {\n throw ClientAuthError.createUnexpectedCredentialTypeError();\n }\n }\n }\n\n /**\n * helper function to return `CredentialType`\n * @param key\n */\n static getCredentialType(key: string): string {\n // First keyword search will match all \"AccessToken\" and \"AccessToken_With_AuthScheme\" credentials\n if (key.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) !== -1) {\n // Perform second search to differentiate between \"AccessToken\" and \"AccessToken_With_AuthScheme\" credential types\n if (key.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) !== -1) {\n return CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n }\n return CredentialType.ACCESS_TOKEN;\n } else if (key.indexOf(CredentialType.ID_TOKEN.toLowerCase()) !== -1) {\n return CredentialType.ID_TOKEN;\n } else if (key.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) !== -1) {\n return CredentialType.REFRESH_TOKEN;\n }\n\n return Constants.NOT_DEFINED;\n }\n\n /**\n * generates credential key\n * -\\-----\n */\n static generateCredentialCacheKey(\n homeAccountId: string,\n environment: string,\n credentialType: CredentialType,\n clientId: string,\n realm?: string,\n target?: string,\n familyId?: string,\n tokenType?: AuthenticationScheme,\n requestedClaimsHash?: string\n ): string {\n const credentialKey = [\n this.generateAccountIdForCacheKey(homeAccountId, environment),\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\n this.generateTargetForCacheKey(target),\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\n this.generateSchemeForCacheKey(tokenType)\n ];\n\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * generates Account Id for keys\n * @param homeAccountId\n * @param environment\n */\n private static generateAccountIdForCacheKey(\n homeAccountId: string,\n environment: string\n ): string {\n const accountId: Array = [homeAccountId, environment];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generates Credential Id for keys\n * @param credentialType\n * @param realm\n * @param clientId\n * @param familyId\n */\n private static generateCredentialIdForCacheKey(\n credentialType: CredentialType,\n clientId: string,\n realm?: string,\n familyId?: string\n ): string {\n const clientOrFamilyId =\n credentialType === CredentialType.REFRESH_TOKEN\n ? familyId || clientId\n : clientId;\n const credentialId: Array = [\n credentialType,\n clientOrFamilyId,\n realm || Constants.EMPTY_STRING,\n ];\n\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generate target key component as per schema: \n */\n private static generateTargetForCacheKey(scopes?: string): string {\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\n }\n\n /**\n * Generate requested claims key component as per schema: \n */\n private static generateClaimsHashForCacheKey(requestedClaimsHash?: string): string {\n return(requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\n }\n\n /**\n * Generate scheme key componenet as per schema: \n */\n private static generateSchemeForCacheKey(tokenType?: string): string {\n /*\n * PoP Tokens and SSH certs include scheme in cache key\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientAuthError } from \"./ClientAuthError\";\n\n/**\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\n */\nexport const ClientConfigurationErrorMessage = {\n redirectUriNotSet: {\n code: \"redirect_uri_empty\",\n desc: \"A redirect URI is required for all calls, and none has been set.\"\n },\n postLogoutUriNotSet: {\n code: \"post_logout_uri_empty\",\n desc: \"A post logout redirect has not been set.\"\n },\n claimsRequestParsingError: {\n code: \"claims_request_parsing_error\",\n desc: \"Could not parse the given claims request object.\"\n },\n authorityUriInsecure: {\n code: \"authority_uri_insecure\",\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\n },\n urlParseError: {\n code: \"url_parse_error\",\n desc: \"URL could not be parsed into appropriate segments.\"\n },\n urlEmptyError: {\n code: \"empty_url_error\",\n desc: \"URL was empty or null.\"\n },\n emptyScopesError: {\n code: \"empty_input_scopes_error\",\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\n },\n nonArrayScopesError: {\n code: \"nonarray_input_scopes_error\",\n desc: \"Scopes cannot be passed as non-array.\"\n },\n clientIdSingleScopeError: {\n code: \"clientid_input_scopes_error\",\n desc: \"Client ID can only be provided as a single scope.\"\n },\n invalidPrompt: {\n code: \"invalid_prompt_value\",\n desc: \"Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\n },\n invalidClaimsRequest: {\n code: \"invalid_claims\",\n desc: \"Given claims parameter must be a stringified JSON object.\"\n },\n tokenRequestEmptyError: {\n code: \"token_request_empty\",\n desc: \"Token request was empty and not found in cache.\"\n },\n logoutRequestEmptyError: {\n code: \"logout_request_empty\",\n desc: \"The logout request was null or undefined.\"\n },\n invalidCodeChallengeMethod: {\n code: \"invalid_code_challenge_method\",\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\n },\n invalidCodeChallengeParams: {\n code: \"pkce_params_missing\",\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\n },\n invalidCloudDiscoveryMetadata: {\n code: \"invalid_cloud_discovery_metadata\",\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\"\n },\n invalidAuthorityMetadata: {\n code: \"invalid_authority_metadata\",\n desc: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\"\n },\n untrustedAuthority: {\n code: \"untrusted_authority\",\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\n },\n invalidAzureCloudInstance: {\n code: \"invalid_azure_cloud_instance\",\n desc: \"Invalid AzureCloudInstance provided. Please refer MSAL JS docs: aks.ms/msaljs/azure_cloud_instance for valid values\"\n },\n missingSshJwk: {\n code: \"missing_ssh_jwk\",\n desc: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\"\n },\n missingSshKid: {\n code: \"missing_ssh_kid\",\n desc: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\"\n },\n missingNonceAuthenticationHeader: {\n code: \"missing_nonce_authentication_header\",\n desc: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\"\n },\n invalidAuthenticationHeader: {\n code: \"invalid_authentication_header\",\n desc: \"Invalid authentication header provided\"\n }\n};\n\n/**\n * Error thrown when there is an error in configuration of the MSAL.js library.\n */\nexport class ClientConfigurationError extends ClientAuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"ClientConfigurationError\";\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\n }\n\n /**\n * Creates an error thrown when the redirect uri is empty (not set by caller)\n */\n static createRedirectUriEmptyError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code,\n ClientConfigurationErrorMessage.redirectUriNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\n */\n static createPostLogoutRedirectUriEmptyError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code,\n ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the claims request could not be successfully parsed\n */\n static createClaimsRequestParsingError(claimsRequestParseError: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code,\n `${ClientConfigurationErrorMessage.claimsRequestParsingError.desc} Given value: ${claimsRequestParseError}`);\n }\n\n /**\n * Creates an error thrown if authority uri is given an insecure protocol.\n * @param urlString\n */\n static createInsecureAuthorityUriError(urlString: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code,\n `${ClientConfigurationErrorMessage.authorityUriInsecure.desc} Given URI: ${urlString}`);\n }\n\n /**\n * Creates an error thrown if URL string does not parse into separate segments.\n * @param urlString\n */\n static createUrlParseError(urlParseError: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code,\n `${ClientConfigurationErrorMessage.urlParseError.desc} Given Error: ${urlParseError}`);\n }\n\n /**\n * Creates an error thrown if URL string is empty or null.\n * @param urlString\n */\n static createUrlEmptyError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code,\n ClientConfigurationErrorMessage.urlEmptyError.desc);\n }\n\n /**\n * Error thrown when scopes are empty.\n * @param scopesValue\n */\n static createEmptyScopesArrayError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code,\n `${ClientConfigurationErrorMessage.emptyScopesError.desc}`);\n }\n\n /**\n * Error thrown when client id scope is not provided as single scope.\n * @param inputScopes\n */\n static createClientIdSingleScopeError(inputScopes: Array): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code,\n `${ClientConfigurationErrorMessage.clientIdSingleScopeError.desc} Given Scopes: ${inputScopes}`);\n }\n\n /**\n * Error thrown when prompt is not an allowed type.\n * @param promptValue\n */\n static createInvalidPromptError(promptValue: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code,\n `${ClientConfigurationErrorMessage.invalidPrompt.desc} Given value: ${promptValue}`);\n }\n\n /**\n * Creates error thrown when claims parameter is not a stringified JSON object\n */\n static createInvalidClaimsRequestError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code,\n ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\n }\n\n /**\n * Throws error when token request is empty and nothing cached in storage.\n */\n static createEmptyLogoutRequestError(): ClientConfigurationError {\n return new ClientConfigurationError(\n ClientConfigurationErrorMessage.logoutRequestEmptyError.code,\n ClientConfigurationErrorMessage.logoutRequestEmptyError.desc\n );\n }\n\n /**\n * Throws error when token request is empty and nothing cached in storage.\n */\n static createEmptyTokenRequestError(): ClientConfigurationError {\n return new ClientConfigurationError(\n ClientConfigurationErrorMessage.tokenRequestEmptyError.code,\n ClientConfigurationErrorMessage.tokenRequestEmptyError.desc\n );\n }\n\n /**\n * Throws error when an invalid code_challenge_method is passed by the user\n */\n static createInvalidCodeChallengeMethodError(): ClientConfigurationError {\n return new ClientConfigurationError(\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code,\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc\n );\n }\n\n /**\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\n */\n static createInvalidCodeChallengeParamsError(): ClientConfigurationError {\n return new ClientConfigurationError(\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.code,\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc\n );\n }\n\n /**\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\n */\n static createInvalidCloudDiscoveryMetadataError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code,\n ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\n }\n\n /**\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\n */\n static createInvalidAuthorityMetadataError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code,\n ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\n }\n\n /**\n * Throws error when provided authority is not a member of the trusted host list\n */\n static createUntrustedAuthorityError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code,\n ClientConfigurationErrorMessage.untrustedAuthority.desc);\n }\n\n /**\n * Throws error when the AzureCloudInstance is set to an invalid value\n */\n static createInvalidAzureCloudInstanceError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAzureCloudInstance.code,\n ClientConfigurationErrorMessage.invalidAzureCloudInstance.desc);\n }\n\n /**\n * Throws an error when the authentication scheme is set to SSH but the SSH public key is omitted from the request\n */\n static createMissingSshJwkError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshJwk.code,\n ClientConfigurationErrorMessage.missingSshJwk.desc);\n }\n\n /**\n * Throws an error when the authentication scheme is set to SSH but the SSH public key ID is omitted from the request\n */\n static createMissingSshKidError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshKid.code,\n ClientConfigurationErrorMessage.missingSshKid.desc);\n }\n\n /**\n * Throws error when provided headers don't contain a header that a server nonce can be extracted from\n */\n static createMissingNonceAuthenticationHeadersError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.code,\n ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.desc);\n }\n\n /**\n * Throws error when a provided header is invalid in any way\n */\n static createInvalidAuthenticationHeaderError(invalidHeaderName: string, details: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthenticationHeader.code,\n `${ClientConfigurationErrorMessage.invalidAuthenticationHeader.desc}. Invalid header: ${invalidHeaderName}. Details: ${details}`);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { Constants, OIDC_SCOPES } from \"../utils/Constants\";\n\n/**\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\n * to ensure uniqueness of strings.\n */\nexport class ScopeSet {\n // Scopes as a Set of strings\n private scopes: Set;\n\n constructor(inputScopes: Array) {\n // Filter empty string and null/undefined array items\n const scopeArr = inputScopes ? StringUtils.trimArrayEntries([...inputScopes]) : [];\n const filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\n\n // Validate and filter scopes (validate function throws if validation fails)\n this.validateInputScopes(filteredInput);\n\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\n filteredInput.forEach(scope => this.scopes.add(scope));\n }\n\n /**\n * Factory method to create ScopeSet from space-delimited string\n * @param inputScopeString\n * @param appClientId\n * @param scopesRequired\n */\n static fromString(inputScopeString: string): ScopeSet {\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\n const inputScopes: Array = scopeString.split(\" \");\n return new ScopeSet(inputScopes);\n }\n\n /**\n * Used to validate the scopes input parameter requested by the developer.\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\n */\n private validateInputScopes(inputScopes: Array): void {\n // Check if scopes are required but not given or is an empty array\n if (!inputScopes || inputScopes.length < 1) {\n throw ClientConfigurationError.createEmptyScopesArrayError();\n }\n }\n\n /**\n * Check if a given scope is present in this set of scopes.\n * @param scope\n */\n containsScope(scope: string): boolean {\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\n // compare lowercase scopes\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\n }\n\n /**\n * Check if a set of scopes is present in this set of scopes.\n * @param scopeSet\n */\n containsScopeSet(scopeSet: ScopeSet): boolean {\n if (!scopeSet || scopeSet.scopes.size <= 0) {\n return false;\n }\n\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(scope => this.containsScope(scope)));\n }\n\n /**\n * Check if set of scopes contains only the defaults\n */\n containsOnlyOIDCScopes(): boolean {\n let defaultScopeCount = 0;\n OIDC_SCOPES.forEach((defaultScope: string) => {\n if (this.containsScope(defaultScope)) {\n defaultScopeCount += 1;\n }\n });\n\n return this.scopes.size === defaultScopeCount;\n }\n\n /**\n * Appends single scope if passed\n * @param newScope\n */\n appendScope(newScope: string): void {\n if (!StringUtils.isEmpty(newScope)) {\n this.scopes.add(newScope.trim());\n }\n }\n\n /**\n * Appends multiple scopes if passed\n * @param newScopes\n */\n appendScopes(newScopes: Array): void {\n try {\n newScopes.forEach(newScope => this.appendScope(newScope));\n } catch (e) {\n throw ClientAuthError.createAppendScopeSetError(e);\n }\n }\n\n /**\n * Removes element from set of scopes.\n * @param scope\n */\n removeScope(scope: string): void {\n if (StringUtils.isEmpty(scope)) {\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\n }\n this.scopes.delete(scope.trim());\n }\n\n /**\n * Removes default scopes from set of scopes\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\n */\n removeOIDCScopes(): void {\n OIDC_SCOPES.forEach((defaultScope: string) => {\n this.scopes.delete(defaultScope);\n });\n }\n\n /**\n * Combines an array of scopes with the current set of scopes.\n * @param otherScopes\n */\n unionScopeSets(otherScopes: ScopeSet): Set {\n if (!otherScopes) {\n throw ClientAuthError.createEmptyInputScopeSetError();\n }\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\n otherScopes.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\n this.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\n return unionScopes;\n }\n\n /**\n * Check if scopes intersect between this set and another.\n * @param otherScopes\n */\n intersectingScopeSets(otherScopes: ScopeSet): boolean {\n if (!otherScopes) {\n throw ClientAuthError.createEmptyInputScopeSetError();\n }\n \n // Do not allow OIDC scopes to be the only intersecting scopes\n if (!otherScopes.containsOnlyOIDCScopes()) {\n otherScopes.removeOIDCScopes();\n }\n const unionScopes = this.unionScopeSets(otherScopes);\n const sizeOtherScopes = otherScopes.getScopeCount();\n const sizeThisScopes = this.getScopeCount();\n const sizeUnionScopes = unionScopes.size;\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\n }\n\n /**\n * Returns size of set of scopes.\n */\n getScopeCount(): number {\n return this.scopes.size;\n }\n\n /**\n * Returns the scopes as an array of string values\n */\n asArray(): Array {\n const array: Array = [];\n this.scopes.forEach(val => array.push(val));\n return array;\n }\n\n /**\n * Prints scopes into a space-delimited string\n */\n printScopes(): string {\n if (this.scopes) {\n const scopeArr = this.asArray();\n return scopeArr.join(\" \");\n }\n return Constants.EMPTY_STRING;\n }\n\n /**\n * Prints scopes into a space-delimited lower-case string (used for caching)\n */\n printScopesLowerCase(): string {\n return this.printScopes().toLowerCase();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TokenClaims } from \"./TokenClaims\";\nimport { DecodedAuthToken } from \"./DecodedAuthToken\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ICrypto } from \"../crypto/ICrypto\";\n\n/**\n * JWT Token representation class. Parses token string and generates claims object.\n */\nexport class AuthToken {\n\n // Raw Token string\n rawToken: string;\n // Claims inside token\n claims: TokenClaims;\n constructor(rawToken: string, crypto: ICrypto) {\n if (StringUtils.isEmpty(rawToken)) {\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\n }\n\n this.rawToken = rawToken;\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\n }\n\n /**\n * Extract token by decoding the rawToken\n *\n * @param encodedToken\n */\n static extractTokenClaims(encodedToken: string, crypto: ICrypto): TokenClaims {\n\n const decodedToken: DecodedAuthToken = StringUtils.decodeAuthToken(encodedToken);\n\n // token will be decoded to get the username\n try {\n const base64TokenPayload = decodedToken.JWSPayload;\n\n // base64Decode() should throw an error if there is an issue\n const base64Decoded = crypto.base64Decode(base64TokenPayload);\n return JSON.parse(base64Decoded) as TokenClaims;\n } catch (err) {\n throw ClientAuthError.createTokenParsingError(err);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountCache, AccountFilter, CredentialFilter, CredentialCache, ValidCredentialType, AppMetadataFilter, AppMetadataCache } from \"./utils/CacheTypes\";\nimport { CacheRecord } from \"./entities/CacheRecord\";\nimport { CacheSchemaType, CredentialType, Constants, APP_METADATA, THE_FAMILY_ID, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme } from \"../utils/Constants\";\nimport { CredentialEntity } from \"./entities/CredentialEntity\";\nimport { ScopeSet } from \"../request/ScopeSet\";\nimport { AccountEntity } from \"./entities/AccountEntity\";\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity\";\nimport { IdTokenEntity } from \"./entities/IdTokenEntity\";\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity\";\nimport { AuthError } from \"../error/AuthError\";\nimport { ICacheManager } from \"./interface/ICacheManager\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { AccountInfo } from \"../account/AccountInfo\";\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity\";\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity\";\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\n/**\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\n */\nexport abstract class CacheManager implements ICacheManager {\n protected clientId: string;\n protected cryptoImpl: ICrypto;\n\n constructor(clientId: string, cryptoImpl: ICrypto) {\n this.clientId = clientId;\n this.cryptoImpl = cryptoImpl;\n }\n\n /**\n * fetch the account entity from the platform cache\n * @param accountKey\n */\n abstract getAccount(accountKey: string): AccountEntity | null;\n\n /**\n * set account entity in the platform cache\n * @param account\n */\n abstract setAccount(account: AccountEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param idTokenKey\n */\n abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param idToken\n */\n abstract setIdTokenCredential(idToken: IdTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param accessTokenKey\n */\n abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param accessToken\n */\n abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param refreshTokenKey\n */\n abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param refreshToken\n */\n abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey\n */\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata\n */\n abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetryKey\n */\n abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey\n * @param serverTelemetry\n */\n abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;\n\n /**\n * fetch cloud discovery metadata entity from the platform cache\n * @param key\n */\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\n\n /**\n *\n */\n abstract getAuthorityMetadataKeys(): Array;\n\n /**\n * set cloud discovery metadata entity to the platform cache\n * @param key\n * @param value\n */\n abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void;\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey\n */\n abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey\n * @param throttlingCache\n */\n abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;;\n\n /**\n * Function to remove an item from cache given its key.\n * @param key\n */\n abstract removeItem(key: string, type?: string): boolean;\n\n /**\n * Function which returns boolean whether cache contains a specific key.\n * @param key\n */\n abstract containsKey(key: string, type?: string): boolean;\n\n /**\n * Function which retrieves all current keys from the cache.\n */\n abstract getKeys(): string[];\n\n /**\n * Function which clears cache.\n */\n abstract clear(): Promise;\n\n /**\n * Function which updates an outdated credential cache key\n */\n abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;\n\n /**\n * Returns all accounts in cache\n */\n getAllAccounts(): AccountInfo[] {\n const currentAccounts: AccountCache = this.getAccountsFilteredBy();\n const accountValues: AccountEntity[] = Object.keys(currentAccounts).map(accountKey => currentAccounts[accountKey]);\n const numAccounts = accountValues.length;\n if (numAccounts < 1) {\n return [];\n } else {\n const allAccounts = accountValues.map((value) => {\n const accountEntity = CacheManager.toObject(new AccountEntity(), value);\n const accountInfo = accountEntity.getAccountInfo();\n const idToken = this.readIdTokenFromCache(this.clientId, accountInfo);\n if (idToken && !accountInfo.idTokenClaims) {\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\n }\n\n return accountInfo;\n\n });\n return allAccounts;\n }\n }\n\n /**\n * saves a cache record\n * @param cacheRecord\n */\n async saveCacheRecord(cacheRecord: CacheRecord): Promise {\n if (!cacheRecord) {\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\n }\n\n if (!!cacheRecord.account) {\n this.setAccount(cacheRecord.account);\n }\n\n if (!!cacheRecord.idToken) {\n this.setIdTokenCredential(cacheRecord.idToken);\n }\n\n if (!!cacheRecord.accessToken) {\n await this.saveAccessToken(cacheRecord.accessToken);\n }\n\n if (!!cacheRecord.refreshToken) {\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\n }\n\n if (!!cacheRecord.appMetadata) {\n this.setAppMetadata(cacheRecord.appMetadata);\n }\n }\n\n /**\n * saves access token credential\n * @param credential\n */\n private async saveAccessToken(credential: AccessTokenEntity): Promise {\n const currentTokenCache = this.getCredentialsFilteredBy({\n clientId: credential.clientId,\n credentialType: credential.credentialType,\n environment: credential.environment,\n homeAccountId: credential.homeAccountId,\n realm: credential.realm,\n tokenType: credential.tokenType,\n requestedClaimsHash: credential.requestedClaimsHash\n });\n\n const currentScopes = ScopeSet.fromString(credential.target);\n const currentAccessTokens: AccessTokenEntity[] = Object.keys(currentTokenCache.accessTokens).map(key => currentTokenCache.accessTokens[key]);\n\n if (currentAccessTokens) {\n const removedAccessTokens: Array> = [];\n currentAccessTokens.forEach((tokenEntity) => {\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\n removedAccessTokens.push(this.removeCredential(tokenEntity));\n }\n });\n await Promise.all(removedAccessTokens);\n }\n this.setAccessTokenCredential(credential);\n }\n\n /**\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n * @param homeAccountId\n * @param environment\n * @param realm\n */\n getAccountsFilteredBy(accountFilter?: AccountFilter): AccountCache {\n return this.getAccountsFilteredByInternal(\n accountFilter ? accountFilter.homeAccountId : Constants.EMPTY_STRING,\n accountFilter ? accountFilter.environment : Constants.EMPTY_STRING,\n accountFilter ? accountFilter.realm : Constants.EMPTY_STRING,\n accountFilter ? accountFilter.nativeAccountId: Constants.EMPTY_STRING,\n );\n }\n\n /**\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n * @param homeAccountId\n * @param environment\n * @param realm\n */\n private getAccountsFilteredByInternal(\n homeAccountId?: string,\n environment?: string,\n realm?: string,\n nativeAccountId?: string,\n ): AccountCache {\n const allCacheKeys = this.getKeys();\n const matchingAccounts: AccountCache = {};\n\n allCacheKeys.forEach((cacheKey) => {\n const entity: AccountEntity | null = this.getAccount(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!realm && !this.matchRealm(entity, realm)) {\n return;\n }\n\n if (!!nativeAccountId && !this.matchNativeAccountId(entity, nativeAccountId)) {\n return;\n }\n\n matchingAccounts[cacheKey] = entity;\n });\n\n return matchingAccounts;\n }\n\n /**\n * retrieve credentails matching all provided filters; if no filter is set, get all credentials\n * @param homeAccountId\n * @param environment\n * @param credentialType\n * @param clientId\n * @param realm\n * @param target\n */\n getCredentialsFilteredBy(filter: CredentialFilter): CredentialCache {\n return this.getCredentialsFilteredByInternal(\n filter.homeAccountId,\n filter.environment,\n filter.credentialType,\n filter.clientId,\n filter.familyId,\n filter.realm,\n filter.target,\n filter.userAssertionHash,\n filter.tokenType,\n filter.keyId,\n filter.requestedClaimsHash\n );\n }\n\n /**\n * Support function to help match credentials\n * @param homeAccountId\n * @param environment\n * @param credentialType\n * @param clientId\n * @param realm\n * @param target\n * @param userAssertionHash\n * @param tokenType\n */\n private getCredentialsFilteredByInternal(\n homeAccountId?: string,\n environment?: string,\n credentialType?: string,\n clientId?: string,\n familyId?: string,\n realm?: string,\n target?: string,\n userAssertionHash?: string,\n tokenType?: AuthenticationScheme,\n keyId?: string,\n requestedClaimsHash?: string\n ): CredentialCache {\n const allCacheKeys = this.getKeys();\n const matchingCredentials: CredentialCache = {\n idTokens: {},\n accessTokens: {},\n refreshTokens: {},\n };\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-credential type cache entities\n const credType = CredentialEntity.getCredentialType(cacheKey);\n\n if (credType === Constants.NOT_DEFINED) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getSpecificCredential(cacheKey, credType);\n\n if (!entity) {\n return;\n }\n\n if (!!userAssertionHash && !this.matchUserAssertionHash(entity, userAssertionHash)) {\n return;\n }\n\n if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!realm && !this.matchRealm(entity, realm)) {\n return;\n }\n\n if (!!credentialType && !this.matchCredentialType(entity, credentialType)) {\n return;\n }\n\n if (!!clientId && !this.matchClientId(entity, clientId)) {\n return;\n }\n\n if (!!familyId && !this.matchFamilyId(entity, familyId)) {\n return;\n }\n\n /*\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\n * Resource specific refresh tokens case will be added when the support is deemed necessary\n */\n if (!!target && !this.matchTarget(entity, target)) {\n return;\n }\n\n // If request OR cached entity has requested Claims Hash, check if they match\n if (requestedClaimsHash || entity.requestedClaimsHash) {\n // Don't match if either is undefined or they are different\n if (entity.requestedClaimsHash !== requestedClaimsHash) {\n return;\n }\n }\n\n // Access Token with Auth Scheme specific matching\n if (credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\n if(!!tokenType && !this.matchTokenType(entity, tokenType)) {\n return;\n }\n\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\n if (tokenType === AuthenticationScheme.SSH) {\n if(keyId && !this.matchKeyId(entity, keyId)) {\n return;\n }\n }\n }\n\n // At this point, the entity matches the request, update cache key if key schema has changed\n const updatedCacheKey = this.updateCredentialCacheKey(cacheKey, entity);\n\n switch (credType) {\n case CredentialType.ID_TOKEN:\n matchingCredentials.idTokens[updatedCacheKey] = entity as IdTokenEntity;\n break;\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n matchingCredentials.accessTokens[updatedCacheKey] = entity as AccessTokenEntity;\n break;\n case CredentialType.REFRESH_TOKEN:\n matchingCredentials.refreshTokens[updatedCacheKey] = entity as RefreshTokenEntity;\n break;\n }\n });\n\n return matchingCredentials;\n }\n\n /**\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\n * @param filter\n */\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\n return this.getAppMetadataFilteredByInternal(\n filter.environment,\n filter.clientId,\n );\n }\n\n /**\n * Support function to help match appMetadata\n * @param environment\n * @param clientId\n */\n private getAppMetadataFilteredByInternal(\n environment?: string,\n clientId?: string\n ): AppMetadataCache {\n\n const allCacheKeys = this.getKeys();\n const matchingAppMetadata: AppMetadataCache = {};\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-appMetadata type cache entities\n if (!this.isAppMetadata(cacheKey)) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAppMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!clientId && !this.matchClientId(entity, clientId)) {\n return;\n }\n\n matchingAppMetadata[cacheKey] = entity;\n\n });\n\n return matchingAppMetadata;\n }\n\n /**\n * retrieve authorityMetadata that contains a matching alias\n * @param filter\n */\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\n const allCacheKeys = this.getAuthorityMetadataKeys();\n let matchedEntity = null;\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-authorityMetadata type cache entities\n if (!this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(this.clientId) === -1) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAuthorityMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (entity.aliases.indexOf(host) === -1) {\n return;\n }\n\n matchedEntity = entity;\n\n });\n\n return matchedEntity;\n }\n\n /**\n * Removes all accounts and related tokens from cache.\n */\n async removeAllAccounts(): Promise {\n const allCacheKeys = this.getKeys();\n const removedAccounts: Array> = [];\n\n allCacheKeys.forEach((cacheKey) => {\n const entity = this.getAccount(cacheKey);\n if (!entity) {\n return;\n }\n removedAccounts.push(this.removeAccount(cacheKey));\n });\n\n await Promise.all(removedAccounts);\n return true;\n }\n\n /**\n * returns a boolean if the given account is removed\n * @param account\n */\n async removeAccount(accountKey: string): Promise {\n const account = this.getAccount(accountKey);\n if (!account) {\n throw ClientAuthError.createNoAccountFoundError();\n }\n return (await this.removeAccountContext(account) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT));\n }\n\n /**\n * Removes credentials associated with the provided account\n * @param account\n */\n async removeAccountContext(account: AccountEntity): Promise {\n const allCacheKeys = this.getKeys();\n const accountId = account.generateAccountId();\n const removedCredentials: Array> = [];\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-credential type cache entities\n const credType = CredentialEntity.getCredentialType(cacheKey);\n if (credType === Constants.NOT_DEFINED) {\n return;\n }\n\n const cacheEntity = this.getSpecificCredential(cacheKey, credType);\n if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\n removedCredentials.push(this.removeCredential(cacheEntity));\n }\n });\n\n await Promise.all(removedCredentials);\n return true;\n }\n\n /**\n * returns a boolean if the given credential is removed\n * @param credential\n */\n async removeCredential(credential: CredentialEntity): Promise {\n const key = credential.generateCredentialKey();\n\n // Remove Token Binding Key from key store for PoP Tokens Credentials\n if (credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\n if(credential.tokenType === AuthenticationScheme.POP) {\n const accessTokenWithAuthSchemeEntity = credential as AccessTokenEntity;\n const kid = accessTokenWithAuthSchemeEntity.keyId;\n\n if (kid) {\n try {\n await this.cryptoImpl.removeTokenBindingKey(kid);\n } catch (error) {\n throw ClientAuthError.createBindingKeyNotRemovedError();\n }\n }\n }\n }\n\n return this.removeItem(key, CacheSchemaType.CREDENTIAL);\n }\n\n /**\n * Removes all app metadata objects from cache.\n */\n removeAppMetadata(): boolean {\n const allCacheKeys = this.getKeys();\n allCacheKeys.forEach((cacheKey) => {\n if (this.isAppMetadata(cacheKey)) {\n this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\n }\n });\n\n return true;\n }\n\n /**\n * Retrieve the cached credentials into a cacherecord\n * @param account\n * @param clientId\n * @param scopes\n * @param environment\n * @param authScheme\n */\n readCacheRecord(account: AccountInfo, clientId: string, request: BaseAuthRequest, environment: string): CacheRecord {\n\n const cachedAccount = this.readAccountFromCache(account);\n const cachedIdToken = this.readIdTokenFromCache(clientId, account);\n const cachedAccessToken = this.readAccessTokenFromCache(clientId, account, request);\n const cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\n const cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\n\n if (cachedAccount && cachedIdToken) {\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\n }\n\n return {\n account: cachedAccount,\n idToken: cachedIdToken,\n accessToken: cachedAccessToken,\n refreshToken: cachedRefreshToken,\n appMetadata: cachedAppMetadata,\n };\n }\n\n /**\n * Retrieve AccountEntity from cache\n * @param account\n */\n readAccountFromCache(account: AccountInfo): AccountEntity | null {\n const accountKey: string = AccountEntity.generateAccountCacheKey(account);\n return this.getAccount(accountKey);\n }\n\n /**\n * Retrieve AccountEntity from cache\n * @param nativeAccountId\n * @returns AccountEntity or Null\n */\n readAccountFromCacheWithNativeAccountId(nativeAccountId: string): AccountEntity | null {\n // fetch account from memory\n const accountFilter: AccountFilter = {\n nativeAccountId\n };\n const accountCache: AccountCache = this.getAccountsFilteredBy(accountFilter);\n const accounts = Object.keys(accountCache).map((key) => accountCache[key]);\n\n if (accounts.length < 1) {\n return null;\n } else if (accounts.length > 1) {\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\n }\n\n return accountCache[0];\n }\n\n /**\n * Retrieve IdTokenEntity from cache\n * @param clientId\n * @param account\n * @param inputRealm\n */\n readIdTokenFromCache(clientId: string, account: AccountInfo): IdTokenEntity | null {\n const idTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.ID_TOKEN,\n clientId: clientId,\n realm: account.tenantId,\n };\n\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(idTokenFilter);\n const idTokens = Object.keys(credentialCache.idTokens).map((key) => credentialCache.idTokens[key]);\n const numIdTokens = idTokens.length;\n\n if (numIdTokens < 1) {\n return null;\n } else if (numIdTokens > 1) {\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n }\n\n return idTokens[0] as IdTokenEntity;\n }\n\n /**\n * Retrieve AccessTokenEntity from cache\n * @param clientId\n * @param account\n * @param scopes\n * @param authScheme\n */\n readAccessTokenFromCache(clientId: string, account: AccountInfo, request: BaseAuthRequest): AccessTokenEntity | null {\n const scopes = new ScopeSet(request.scopes || []);\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\n /*\n * Distinguish between Bearer and PoP/SSH token cache types\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n const credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\n\n const accessTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: credentialType,\n clientId,\n realm: account.tenantId,\n target: scopes.printScopesLowerCase(),\n tokenType: authScheme,\n keyId: request.sshKid,\n requestedClaimsHash: request.requestedClaimsHash,\n };\n\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\n\n const accessTokens = Object.keys(credentialCache.accessTokens).map((key) => credentialCache.accessTokens[key]);\n\n const numAccessTokens = accessTokens.length;\n if (numAccessTokens < 1) {\n return null;\n } else if (numAccessTokens > 1) {\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n }\n\n return accessTokens[0] as AccessTokenEntity;\n }\n\n /**\n * Helper to retrieve the appropriate refresh token from cache\n * @param clientId\n * @param account\n * @param familyRT\n */\n readRefreshTokenFromCache(clientId: string, account: AccountInfo, familyRT: boolean): RefreshTokenEntity | null {\n const id = familyRT ? THE_FAMILY_ID : undefined;\n const refreshTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.REFRESH_TOKEN,\n clientId: clientId,\n familyId: id,\n };\n\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\n const refreshTokens = Object.keys(credentialCache.refreshTokens).map((key) => credentialCache.refreshTokens[key]);\n\n const numRefreshTokens = refreshTokens.length;\n if (numRefreshTokens < 1) {\n return null;\n }\n // address the else case after remove functions address environment aliases\n\n return refreshTokens[0] as RefreshTokenEntity;\n }\n\n /**\n * Retrieve AppMetadataEntity from cache\n */\n readAppMetadataFromCache(environment: string, clientId: string): AppMetadataEntity | null {\n const appMetadataFilter: AppMetadataFilter = {\n environment,\n clientId,\n };\n\n const appMetadata: AppMetadataCache = this.getAppMetadataFilteredBy(appMetadataFilter);\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(appMetadata).map((key) => appMetadata[key]);\n\n const numAppMetadata = appMetadataEntries.length;\n if (numAppMetadata < 1) {\n return null;\n } else if (numAppMetadata > 1) {\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\n }\n\n return appMetadataEntries[0] as AppMetadataEntity;\n }\n\n /**\n * Return the family_id value associated with FOCI\n * @param environment\n * @param clientId\n */\n isAppMetadataFOCI(environment: string, clientId: string): boolean {\n const appMetadata = this.readAppMetadataFromCache(environment, clientId);\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\n }\n\n /**\n * helper to match account ids\n * @param value\n * @param homeAccountId\n */\n private matchHomeAccountId(entity: AccountEntity | CredentialEntity, homeAccountId: string): boolean {\n return !!(entity.homeAccountId && homeAccountId === entity.homeAccountId);\n }\n\n /**\n * helper to match assertion\n * @param value\n * @param oboAssertion\n */\n private matchUserAssertionHash(entity: CredentialEntity, userAssertionHash: string): boolean {\n return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash);\n }\n\n /**\n * helper to match environment\n * @param value\n * @param environment\n */\n private matchEnvironment(entity: AccountEntity | CredentialEntity | AppMetadataEntity, environment: string): boolean {\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\n return true;\n }\n\n return false;\n }\n\n /**\n * helper to match credential type\n * @param entity\n * @param credentialType\n */\n private matchCredentialType(entity: CredentialEntity, credentialType: string): boolean {\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\n }\n\n /**\n * helper to match client ids\n * @param entity\n * @param clientId\n */\n private matchClientId(entity: CredentialEntity | AppMetadataEntity, clientId: string): boolean {\n return !!(entity.clientId && clientId === entity.clientId);\n }\n\n /**\n * helper to match family ids\n * @param entity\n * @param familyId\n */\n private matchFamilyId(entity: CredentialEntity | AppMetadataEntity, familyId: string): boolean {\n return !!(entity.familyId && familyId === entity.familyId);\n }\n\n /**\n * helper to match realm\n * @param entity\n * @param realm\n */\n private matchRealm(entity: AccountEntity | CredentialEntity, realm: string): boolean {\n return !!(entity.realm && realm === entity.realm);\n }\n\n /**\n * helper to match nativeAccountId\n * @param entity\n * @param nativeAccountId\n * @returns boolean indicating the match result\n */\n private matchNativeAccountId(entity: AccountEntity, nativeAccountId: string): boolean {\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\n }\n\n /**\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\n * @param entity\n * @param target\n */\n private matchTarget(entity: CredentialEntity, target: string): boolean {\n const isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\n\n if ( isNotAccessTokenCredential || !entity.target) {\n return false;\n }\n\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\n const requestTargetScopeSet: ScopeSet = ScopeSet.fromString(target);\n\n if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\n requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\n } else {\n requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\n }\n return entityScopeSet.containsScopeSet(requestTargetScopeSet);\n }\n\n /**\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchTokenType(entity: CredentialEntity, tokenType: AuthenticationScheme): boolean {\n return !!(entity.tokenType && entity.tokenType === tokenType);\n }\n\n /**\n * Returns true if the credential's keyId matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchKeyId(entity: CredentialEntity, keyId: string): boolean {\n return !!(entity.keyId && entity.keyId === keyId);\n }\n\n /**\n * returns if a given cache entity is of the type appmetadata\n * @param key\n */\n private isAppMetadata(key: string): boolean {\n return key.indexOf(APP_METADATA) !== -1;\n }\n\n /**\n * returns if a given cache entity is of the type authoritymetadata\n * @param key\n */\n protected isAuthorityMetadata(key: string): boolean {\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\n }\n\n /**\n * returns cache key used for cloud instance metadata\n */\n generateAuthorityMetadataCacheKey(authority: string): string {\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\n }\n\n /**\n * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\n * @param key\n * @param credType\n */\n private getSpecificCredential(key: string, credType: string): ValidCredentialType | null {\n switch (credType) {\n case CredentialType.ID_TOKEN: {\n return this.getIdTokenCredential(key);\n }\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME: {\n return this.getAccessTokenCredential(key);\n }\n case CredentialType.REFRESH_TOKEN: {\n return this.getRefreshTokenCredential(key);\n }\n default:\n return null;\n }\n }\n\n /**\n * Helper to convert serialized data to object\n * @param obj\n * @param json\n */\n static toObject(obj: T, json: object): T {\n for (const propertyName in json) {\n obj[propertyName] = json[propertyName];\n }\n return obj;\n }\n}\n\nexport class DefaultStorageClass extends CacheManager {\n setAccount(): void {\n const notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAccount(): AccountEntity {\n const notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setIdTokenCredential(): void {\n const notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getIdTokenCredential(): IdTokenEntity {\n const notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAccessTokenCredential(): void {\n const notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAccessTokenCredential(): AccessTokenEntity {\n const notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setRefreshTokenCredential(): void {\n const notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getRefreshTokenCredential(): RefreshTokenEntity {\n const notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAppMetadata(): void {\n const notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAppMetadata(): AppMetadataEntity {\n const notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setServerTelemetry(): void {\n const notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getServerTelemetry(): ServerTelemetryEntity {\n const notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAuthorityMetadata(): void {\n const notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\n const notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAuthorityMetadataKeys(): Array {\n const notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setThrottlingCache(): void {\n const notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getThrottlingCache(): ThrottlingEntity {\n const notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n removeItem(): boolean {\n const notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n containsKey(): boolean {\n const notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getKeys(): string[] {\n const notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n async clear(): Promise {\n const notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n updateCredentialCacheKey(): string {\n const notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CredentialEntity } from \"./CredentialEntity\";\nimport { CredentialType } from \"../../utils/Constants\";\n\n/**\n * ID_TOKEN Cache\n *\n * Key:Value Schema:\n *\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * realm: Full tenant or organizational identifier that the account belongs to\n * }\n */\nexport class IdTokenEntity extends CredentialEntity {\n realm: string;\n\n /**\n * Create IdTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\n static createIdTokenEntity(\n homeAccountId: string,\n environment: string,\n idToken: string,\n clientId: string,\n tenantId: string,\n ): IdTokenEntity {\n const idTokenEntity = new IdTokenEntity();\n\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\n idTokenEntity.homeAccountId = homeAccountId;\n idTokenEntity.environment = environment;\n idTokenEntity.clientId = clientId;\n idTokenEntity.secret = idToken;\n idTokenEntity.realm = tenantId;\n\n return idTokenEntity;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isIdTokenEntity(entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"credentialType\") &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"secret\") &&\n entity[\"credentialType\"] === CredentialType.ID_TOKEN\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility class which exposes functions for managing date and time operations.\n */\nexport class TimeUtils {\n\n /**\n * return the current time in Unix time (seconds).\n */\n static nowSeconds(): number {\n // Date.getTime() returns in milliseconds.\n return Math.round(new Date().getTime() / 1000.0);\n }\n \n /**\n * check if a token is expired based on given UTC time in seconds.\n * @param expiresOn\n */\n static isTokenExpired(expiresOn: string, offset: number): boolean {\n // check for access token expiry\n const expirationSec = Number(expiresOn) || 0;\n const offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\n\n // If current time + offset is greater than token expiration time, then token is expired.\n return (offsetCurrentTimeSec > expirationSec);\n }\n\n /**\n * If the current time is earlier than the time that a token was cached at, we must discard the token\n * i.e. The system clock was turned back after acquiring the cached token\n * @param cachedAt \n * @param offset \n */\n static wasClockTurnedBack(cachedAt: string): boolean {\n const cachedAtSec = Number(cachedAt);\n\n return cachedAtSec > TimeUtils.nowSeconds();\n }\n\n /**\n * Waits for t number of milliseconds\n * @param t number\n * @param value T\n */\n static delay(t: number, value?: T): Promise {\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CredentialEntity } from \"./CredentialEntity\";\nimport { CredentialType, AuthenticationScheme } from \"../../utils/Constants\";\nimport { TimeUtils } from \"../../utils/TimeUtils\";\nimport { StringUtils } from \"../../utils/StringUtils\";\nimport { ICrypto } from \"../../crypto/ICrypto\";\nimport { TokenClaims } from \"../../account/TokenClaims\";\nimport { AuthToken } from \"../../account/AuthToken\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\n\n/**\n * ACCESS_TOKEN Credential Type\n *\n * Key:Value Schema:\n *\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * familyId: Family ID identifier, usually only used for refresh tokens\n * realm: Full tenant or organizational identifier that the account belongs to\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n * cachedAt: Absolute device time when entry was created in the cache.\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\n * keyId: used for POP and SSH tokenTypes\n * tokenType: Type of the token issued. Usually \"Bearer\"\n * }\n */\nexport class AccessTokenEntity extends CredentialEntity {\n realm: string;\n target: string;\n cachedAt: string;\n expiresOn: string;\n extendedExpiresOn?: string;\n refreshOn?: string;\n keyId?: string; // for POP and SSH tokenTypes\n tokenType?: AuthenticationScheme;\n requestedClaims?: string;\n requestedClaimsHash?: string;\n\n /**\n * Create AccessTokenEntity\n * @param homeAccountId\n * @param environment\n * @param accessToken\n * @param clientId\n * @param tenantId\n * @param scopes\n * @param expiresOn\n * @param extExpiresOn\n */\n static createAccessTokenEntity(\n homeAccountId: string,\n environment: string,\n accessToken: string,\n clientId: string,\n tenantId: string,\n scopes: string,\n expiresOn: number,\n extExpiresOn: number,\n cryptoUtils: ICrypto,\n refreshOn?: number,\n tokenType?: AuthenticationScheme,\n userAssertionHash?:string,\n keyId?: string,\n requestedClaims?: string,\n requestedClaimsHash?: string\n ): AccessTokenEntity {\n const atEntity: AccessTokenEntity = new AccessTokenEntity();\n\n atEntity.homeAccountId = homeAccountId;\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\n atEntity.secret = accessToken;\n\n const currentTime = TimeUtils.nowSeconds();\n atEntity.cachedAt = currentTime.toString();\n\n /*\n * Token expiry time.\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\n */\n atEntity.expiresOn = expiresOn.toString();\n atEntity.extendedExpiresOn = extExpiresOn.toString();\n if (refreshOn) {\n atEntity.refreshOn = refreshOn.toString();\n }\n\n atEntity.environment = environment;\n atEntity.clientId = clientId;\n atEntity.realm = tenantId;\n atEntity.target = scopes;\n atEntity.userAssertionHash = userAssertionHash;\n\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\n\n if (requestedClaims) {\n atEntity.requestedClaims = requestedClaims;\n atEntity.requestedClaimsHash = requestedClaimsHash;\n }\n\n /*\n * Create Access Token With Auth Scheme instead of regular access token\n * Cast to lower to handle \"bearer\" from ADFS\n */\n if (atEntity.tokenType?.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) {\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n switch (atEntity.tokenType) {\n case AuthenticationScheme.POP:\n // Make sure keyId is present and add it to credential\n const tokenClaims: TokenClaims | null = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\n if (!tokenClaims?.cnf?.kid) {\n throw ClientAuthError.createTokenClaimsRequiredError();\n }\n atEntity.keyId = tokenClaims.cnf.kid;\n break;\n case AuthenticationScheme.SSH:\n atEntity.keyId = keyId;\n }\n }\n\n return atEntity;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAccessTokenEntity(entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"credentialType\") &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"secret\") &&\n entity.hasOwnProperty(\"target\") &&\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CredentialEntity } from \"./CredentialEntity\";\nimport { CredentialType } from \"../../utils/Constants\";\n\n/**\n * REFRESH_TOKEN Cache\n *\n * Key:Value Schema:\n *\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\n *\n * Value:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * familyId: Family ID identifier, '1' represents Microsoft Family\n * realm: Full tenant or organizational identifier that the account belongs to\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n * }\n */\nexport class RefreshTokenEntity extends CredentialEntity {\n familyId?: string;\n\n /**\n * Create RefreshTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\n static createRefreshTokenEntity(\n homeAccountId: string,\n environment: string,\n refreshToken: string,\n clientId: string,\n familyId?: string,\n userAssertionHash?: string\n ): RefreshTokenEntity {\n const rtEntity = new RefreshTokenEntity();\n\n rtEntity.clientId = clientId;\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\n rtEntity.environment = environment;\n rtEntity.homeAccountId = homeAccountId;\n rtEntity.secret = refreshToken;\n rtEntity.userAssertionHash = userAssertionHash;\n\n if (familyId)\n rtEntity.familyId = familyId;\n\n return rtEntity;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isRefreshTokenEntity(entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"credentialType\") &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"secret\") &&\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { APP_METADATA, Separators } from \"../../utils/Constants\";\n\n/**\n * APP_METADATA Cache\n *\n * Key:Value Schema:\n *\n * Key: appmetadata--\n *\n * Value:\n * {\n * clientId: client ID of the application\n * environment: entity that issued the token, represented as a full host\n * familyId: Family ID identifier, '1' represents Microsoft Family\n * }\n */\nexport class AppMetadataEntity {\n clientId: string;\n environment: string;\n familyId?: string;\n\n /**\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\n */\n generateAppMetadataKey(): string {\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\n }\n\n /**\n * Generate AppMetadata Cache Key\n */\n static generateAppMetadataCacheKey(environment: string, clientId: string): string {\n const appMetaDataKeyArray: Array = [\n APP_METADATA,\n environment,\n clientId,\n ];\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Creates AppMetadataEntity\n * @param clientId\n * @param environment\n * @param familyId\n */\n static createAppMetadataEntity(clientId: string, environment: string, familyId?: string): AppMetadataEntity {\n const appMetadata = new AppMetadataEntity();\n\n appMetadata.clientId = clientId;\n appMetadata.environment = environment;\n if (familyId) {\n appMetadata.familyId = familyId;\n }\n\n return appMetadata;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAppMetadataEntity(key: string, entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n key.indexOf(APP_METADATA) === 0 &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"environment\")\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SERVER_TELEM_CONSTANTS } from \"../../utils/Constants\";\n\nexport class ServerTelemetryEntity {\n failedRequests: Array;\n errors: string[];\n cacheHits: number;\n\n constructor() {\n this.failedRequests = [];\n this.errors = [];\n this.cacheHits = 0;\n }\n\n /**\n * validates if a given cache entry is \"Telemetry\", parses \n * @param key\n * @param entity\n */\n static isServerTelemetryEntity(key: string, entity?: object): boolean {\n\n const validateKey: boolean = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\n let validateEntity: boolean = true;\n\n if (entity) {\n validateEntity =\n entity.hasOwnProperty(\"failedRequests\") &&\n entity.hasOwnProperty(\"errors\") &&\n entity.hasOwnProperty(\"cacheHits\");\n }\n\n return validateKey && validateEntity;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CloudDiscoveryMetadata } from \"../../authority/CloudDiscoveryMetadata\";\nimport { OpenIdConfigResponse } from \"../../authority/OpenIdConfigResponse\";\nimport { AUTHORITY_METADATA_CONSTANTS } from \"../../utils/Constants\";\nimport { TimeUtils } from \"../../utils/TimeUtils\";\n\nexport class AuthorityMetadataEntity {\n aliases: Array;\n preferred_cache: string;\n preferred_network: string;\n canonical_authority: string;\n authorization_endpoint: string;\n token_endpoint: string;\n end_session_endpoint?: string;\n issuer: string;\n aliasesFromNetwork: boolean;\n endpointsFromNetwork: boolean;\n expiresAt: number;\n jwks_uri: string;\n\n constructor() {\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\n }\n\n /**\n * Update the entity with new aliases, preferred_cache and preferred_network values\n * @param metadata \n * @param fromNetwork \n */\n updateCloudDiscoveryMetadata(metadata: CloudDiscoveryMetadata, fromNetwork: boolean): void {\n this.aliases = metadata.aliases;\n this.preferred_cache = metadata.preferred_cache;\n this.preferred_network = metadata.preferred_network;\n this.aliasesFromNetwork = fromNetwork;\n }\n\n /**\n * Update the entity with new endpoints\n * @param metadata \n * @param fromNetwork \n */\n updateEndpointMetadata(metadata: OpenIdConfigResponse, fromNetwork: boolean): void {\n this.authorization_endpoint = metadata.authorization_endpoint;\n this.token_endpoint = metadata.token_endpoint;\n this.end_session_endpoint = metadata.end_session_endpoint;\n this.issuer = metadata.issuer;\n this.endpointsFromNetwork = fromNetwork;\n this.jwks_uri = metadata.jwks_uri;\n }\n\n /**\n * Save the authority that was used to create this cache entry\n * @param authority \n */\n updateCanonicalAuthority(authority: string): void {\n this.canonical_authority = authority;\n }\n\n /**\n * Reset the exiresAt value\n */\n resetExpiresAt(): void {\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\n }\n\n /**\n * Returns whether or not the data needs to be refreshed\n */\n isExpired(): boolean {\n return this.expiresAt <= TimeUtils.nowSeconds();\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAuthorityMetadataEntity(key: string, entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\n entity.hasOwnProperty(\"aliases\") &&\n entity.hasOwnProperty(\"preferred_cache\") &&\n entity.hasOwnProperty(\"preferred_network\") &&\n entity.hasOwnProperty(\"canonical_authority\") &&\n entity.hasOwnProperty(\"authorization_endpoint\") &&\n entity.hasOwnProperty(\"token_endpoint\") &&\n entity.hasOwnProperty(\"issuer\") &&\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\n entity.hasOwnProperty(\"expiresAt\") &&\n entity.hasOwnProperty(\"jwks_uri\")\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ThrottlingConstants } from \"../../utils/Constants\";\n\nexport class ThrottlingEntity {\n // Unix-time value representing the expiration of the throttle\n throttleTime: number;\n // Information provided by the server\n error?: string;\n errorCodes?: Array;\n errorMessage?: string;\n subError?: string;\n\n /**\n * validates if a given cache entry is \"Throttling\", parses \n * @param key\n * @param entity\n */\n static isThrottlingEntity(key: string, entity?: object): boolean {\n \n let validateKey: boolean = false;\n if (key) {\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\n }\n \n let validateEntity: boolean = true;\n if (entity) {\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\n }\n\n return validateKey && validateEntity;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"./StringUtils\";\nimport { Constants } from \"./Constants\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\n\n/**\n * Type which defines the object that is stringified, encoded and sent in the state value.\n * Contains the following:\n * - id - unique identifier for this request\n * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly.\n * - platformState - string value sent from the platform.\n */\nexport type LibraryStateObject = {\n id: string,\n meta?: Record\n};\n\n/**\n * Type which defines the stringified and encoded object sent to the service in the authorize request.\n */\nexport type RequestStateObject = {\n userRequestState: string,\n libraryState: LibraryStateObject\n};\n\n/**\n * Class which provides helpers for OAuth 2.0 protocol specific values\n */\nexport class ProtocolUtils {\n\n /**\n * Appends user state with random guid, or returns random guid.\n * @param userState \n * @param randomGuid \n */\n static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record): string {\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\n return !StringUtils.isEmpty(userState) ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` : libraryState;\n }\n\n /**\n * Generates the state value used by the common library.\n * @param randomGuid \n * @param cryptoObj \n */\n static generateLibraryState(cryptoObj: ICrypto, meta?: Record): string {\n if (!cryptoObj) {\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\n }\n\n // Create a state object containing a unique id and the timestamp of the request creation\n const stateObj: LibraryStateObject = {\n id: cryptoObj.createNewGuid()\n };\n\n if (meta) {\n stateObj.meta = meta;\n }\n\n const stateString = JSON.stringify(stateObj);\n\n return cryptoObj.base64Encode(stateString);\n }\n\n /**\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\n * @param state \n * @param cryptoObj \n */\n static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject {\n if (!cryptoObj) {\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\n }\n\n if (StringUtils.isEmpty(state)) {\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\n }\n\n try {\n // Split the state between library state and user passed state and decode them separately\n const splitState = state.split(Constants.RESOURCE_DELIM);\n const libraryState = splitState[0];\n const userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING;\n const libraryStateString = cryptoObj.base64Decode(libraryState);\n const libraryStateObj = JSON.parse(libraryStateString) as LibraryStateObject;\n return {\n userRequestState: !StringUtils.isEmpty(userState) ? userState : Constants.EMPTY_STRING,\n libraryState: libraryStateObj\n };\n } catch(e) {\n throw ClientAuthError.createInvalidStateError(state, e);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Protocol modes supported by MSAL.\n */\nexport enum ProtocolMode {\n AAD = \"AAD\",\n OIDC = \"OIDC\"\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ProtocolMode } from \"./ProtocolMode\";\nimport { AzureRegionConfiguration } from \"./AzureRegionConfiguration\";\n\nexport type AuthorityOptions = {\n protocolMode: ProtocolMode;\n knownAuthorities: Array;\n cloudDiscoveryMetadata: string;\n authorityMetadata: string;\n skipAuthorityMetadataCache?: boolean;\n azureRegionConfiguration?: AzureRegionConfiguration;\n};\n\nexport enum AzureCloudInstance {\n // AzureCloudInstance is not specified.\n None,\n\n // Microsoft Azure public cloud\n AzurePublic = \"https://login.microsoftonline.com\",\n\n // Microsoft PPE\n AzurePpe = \"https://login.windows-ppe.net\",\n\n // Microsoft Chinese national cloud\n AzureChina = \"https://login.chinacloudapi.cn\",\n\n // Microsoft German national cloud (\"Black Forest\")\n AzureGermany = \"https://login.microsoftonline.de\",\n\n // US Government cloud\n AzureUsGovernment = \"https://login.microsoftonline.us\",\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\nimport { IWindowStorage } from \"./IWindowStorage\";\n\nexport class BrowserStorage implements IWindowStorage {\n\n private windowStorage: Storage;\n\n constructor(cacheLocation: string) {\n this.validateWindowStorage(cacheLocation);\n this.windowStorage = window[cacheLocation];\n }\n\n private validateWindowStorage(cacheLocation: string): void {\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\n }\n const storageSupported = !!window[cacheLocation];\n if (!storageSupported) {\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\n }\n }\n\n getItem(key: string): string | null {\n return this.windowStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n this.windowStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n this.windowStorage.removeItem(key);\n }\n\n getKeys(): string[] {\n return Object.keys(this.windowStorage);\n }\n\n containsKey(key: string): boolean {\n return this.windowStorage.hasOwnProperty(key);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { IUri } from \"./IUri\";\nimport { AADAuthorityConstants, Constants } from \"../utils/Constants\";\n\n/**\n * Url object class which can perform various transformations on url strings.\n */\nexport class UrlString {\n\n // internal url string field\n private _urlString: string;\n public get urlString(): string {\n return this._urlString;\n }\n\n constructor(url: string) {\n this._urlString = url;\n if (StringUtils.isEmpty(this._urlString)) {\n // Throws error if url is empty\n throw ClientConfigurationError.createUrlEmptyError();\n }\n\n if (StringUtils.isEmpty(this.getHash())) {\n this._urlString = UrlString.canonicalizeUri(url);\n }\n }\n\n /**\n * Ensure urls are lower case and end with a / character.\n * @param url\n */\n static canonicalizeUri(url: string): string {\n if (url) {\n let lowerCaseUrl = url.toLowerCase();\n\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\n } else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\n }\n\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\n lowerCaseUrl += \"/\";\n }\n\n return lowerCaseUrl;\n }\n\n return url;\n }\n\n /**\n * Throws if urlString passed is not a valid authority URI string.\n */\n validateAsUri(): void {\n // Attempts to parse url for uri components\n let components;\n try {\n components = this.getUrlComponents();\n } catch (e) {\n throw ClientConfigurationError.createUrlParseError(e);\n }\n\n // Throw error if URI or path segments are not parseable.\n if (!components.HostNameAndPort || !components.PathSegments) {\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\n }\n\n // Throw error if uri is insecure.\n if(!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\n }\n }\n\n /**\n * Given a url and a query string return the url with provided query string appended\n * @param url\n * @param queryString\n */\n static appendQueryString(url: string, queryString: string): string {\n if (StringUtils.isEmpty(queryString)) {\n return url;\n }\n\n return url.indexOf(\"?\") < 0 ? `${url}?${queryString}` : `${url}&${queryString}`;\n }\n\n /**\n * Returns a url with the hash removed\n * @param url\n */\n static removeHashFromUrl(url: string): string {\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\n }\n\n /**\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\n * @param href The url\n * @param tenantId The tenant id to replace\n */\n replaceTenantPath(tenantId: string): UrlString {\n const urlObject = this.getUrlComponents();\n const pathArray = urlObject.PathSegments;\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\n pathArray[0] = tenantId;\n }\n return UrlString.constructAuthorityUriFromObject(urlObject);\n }\n\n /**\n * Returns the anchor part(#) of the URL\n */\n getHash(): string {\n return UrlString.parseHash(this.urlString);\n }\n\n /**\n * Parses out the components from a url string.\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\n */\n getUrlComponents(): IUri {\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\n\n // If url string does not match regEx, we throw an error\n const match = this.urlString.match(regEx);\n if (!match) {\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\n }\n\n // Url component object\n const urlComponents = {\n Protocol: match[1],\n HostNameAndPort: match[4],\n AbsolutePath: match[5],\n QueryString: match[7]\n } as IUri;\n\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\n urlComponents.PathSegments = pathSegments;\n\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length-1);\n }\n return urlComponents;\n }\n\n static getDomainFromUrl(url: string): string {\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\n\n const match = url.match(regEx);\n\n if (!match) {\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${url}`);\n }\n\n return match[2];\n }\n\n static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string {\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\n const url = new UrlString(baseUrl);\n const baseComponents = url.getUrlComponents();\n\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\n }\n\n return relativeUrl;\n }\n\n /**\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\n * @param hashString\n */\n static parseHash(hashString: string): string {\n const hashIndex1 = hashString.indexOf(\"#\");\n const hashIndex2 = hashString.indexOf(\"#/\");\n if (hashIndex2 > -1) {\n return hashString.substring(hashIndex2 + 2);\n } else if (hashIndex1 > -1) {\n return hashString.substring(hashIndex1 + 1);\n }\n return Constants.EMPTY_STRING;\n }\n\n static constructAuthorityUriFromObject(urlObject: IUri): UrlString {\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\n }\n\n /**\n * Returns URL hash as server auth code response object.\n */\n static getDeserializedHash(hash: string): ServerAuthorizationCodeResponse {\n // Check if given hash is empty\n if (StringUtils.isEmpty(hash)) {\n return {};\n }\n // Strip the # symbol if present\n const parsedHash = UrlString.parseHash(hash);\n // If # symbol was not present, above will return empty string, so give original hash value\n const deserializedHash: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\n // Check if deserialization didn't work\n if (!deserializedHash) {\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\n }\n return deserializedHash;\n }\n\n /**\n * Check if the hash of the URL string contains known properties\n */\n static hashContainsKnownProperties(hash: string): boolean {\n if (StringUtils.isEmpty(hash) || hash.indexOf(\"=\") < 0) {\n // Hash doesn't contain key/value pairs\n return false;\n }\n\n const parameters: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n return !!(\n parameters.code ||\n parameters.error_description ||\n parameters.error ||\n parameters.state\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { InteractionType } from \"./BrowserConstants\";\nimport { StringUtils, ClientAuthError, ICrypto, RequestStateObject, ProtocolUtils, ServerAuthorizationCodeResponse, UrlString } from \"@azure/msal-common\";\n\nexport type BrowserStateObject = {\n interactionType: InteractionType\n};\n\nexport class BrowserProtocolUtils {\n\n /**\n * Extracts the BrowserStateObject from the state string.\n * @param browserCrypto \n * @param state \n */\n static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null {\n if (StringUtils.isEmpty(state)) {\n return null;\n }\n\n try {\n const requestStateObj: RequestStateObject = ProtocolUtils.parseRequestState(browserCrypto, state);\n return requestStateObj.libraryState.meta as BrowserStateObject;\n } catch (e) {\n throw ClientAuthError.createInvalidStateError(state, e);\n }\n }\n\n /**\n * Parses properties of server response from url hash\n * @param locationHash Hash from url\n */\n static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse {\n if (!locationHash) {\n return {};\n }\n \n const hashUrlString = new UrlString(locationHash);\n return UrlString.getDeserializedHash(hashUrlString.getHash());\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, PersistentCacheKeys, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, ProtocolUtils, Logger, AuthorityMetadataEntity, DEFAULT_CRYPTO_IMPLEMENTATION, AccountInfo, ActiveAccountFilters, CcsCredential, CcsCredentialType, IdToken, ValidCredentialType, ClientAuthError } from \"@azure/msal-common\";\nimport { CacheOptions } from \"../config/Configuration\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheLocation, InteractionType, TemporaryCacheKeys, InMemoryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserStorage } from \"./BrowserStorage\";\nimport { MemoryStorage } from \"./MemoryStorage\";\nimport { IWindowStorage } from \"./IWindowStorage\";\nimport { BrowserProtocolUtils } from \"../utils/BrowserProtocolUtils\";\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\n\n/**\n * This class implements the cache storage interface for MSAL through browser local or session storage.\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\n * parameters such as state and nonce, generally.\n */\nexport class BrowserCacheManager extends CacheManager {\n\n // Cache configuration, either set by user or default values.\n protected cacheConfig: Required;\n // Window storage object (either local or sessionStorage)\n protected browserStorage: IWindowStorage;\n // Internal in-memory storage object used for data used by msal that does not need to persist across page loads\n protected internalStorage: MemoryStorage;\n // Temporary cache\n protected temporaryCacheStorage: IWindowStorage;\n // Client id of application. Used in cache keys to partition cache correctly in the case of multiple instances of MSAL.\n protected logger: Logger;\n\n // Cookie life calculation (hours * minutes * seconds * ms)\n protected readonly COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\n\n constructor(clientId: string, cacheConfig: Required, cryptoImpl: ICrypto, logger: Logger) {\n super(clientId, cryptoImpl);\n\n this.cacheConfig = cacheConfig;\n this.logger = logger;\n this.internalStorage = new MemoryStorage();\n this.browserStorage = this.setupBrowserStorage(this.cacheConfig.cacheLocation);\n this.temporaryCacheStorage = this.setupTemporaryCacheStorage(this.cacheConfig.cacheLocation);\n\n // Migrate any cache entries from older versions of MSAL.\n this.migrateCacheEntries();\n }\n\n /**\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\n * @param cacheLocation\n */\n protected setupBrowserStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage {\n switch (cacheLocation) {\n case BrowserCacheLocation.LocalStorage:\n case BrowserCacheLocation.SessionStorage:\n try {\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\n return new BrowserStorage(cacheLocation);\n } catch (e) {\n this.logger.verbose(e);\n break;\n }\n case BrowserCacheLocation.MemoryStorage:\n default:\n break;\n }\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\n return new MemoryStorage();\n }\n\n /**\n *\n * @param cacheLocation\n */\n protected setupTemporaryCacheStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage {\n switch (cacheLocation) {\n case BrowserCacheLocation.LocalStorage:\n case BrowserCacheLocation.SessionStorage:\n try {\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\n return new BrowserStorage(BrowserCacheLocation.SessionStorage);\n } catch (e) {\n this.logger.verbose(e);\n return this.internalStorage;\n }\n case BrowserCacheLocation.MemoryStorage:\n default:\n return this.internalStorage;\n }\n }\n\n /**\n * Migrate all old cache entries to new schema. No rollback supported.\n * @param storeAuthStateInCookie\n */\n protected migrateCacheEntries(): void {\n const idTokenKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ID_TOKEN}`;\n const clientInfoKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.CLIENT_INFO}`;\n const errorKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR}`;\n const errorDescKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR_DESC}`;\n\n const idTokenValue = this.browserStorage.getItem(idTokenKey);\n const clientInfoValue = this.browserStorage.getItem(clientInfoKey);\n const errorValue = this.browserStorage.getItem(errorKey);\n const errorDescValue = this.browserStorage.getItem(errorDescKey);\n\n const values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\n const keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\n\n keysToMigrate.forEach((cacheKey:string, index: number) => this.migrateCacheEntry(cacheKey, values[index]));\n }\n\n /**\n * Utility function to help with migration.\n * @param newKey\n * @param value\n * @param storeAuthStateInCookie\n */\n protected migrateCacheEntry(newKey: string, value: string|null): void {\n if (value) {\n this.setTemporaryCache(newKey, value, true);\n }\n }\n\n /**\n * Parses passed value as JSON object, JSON.parse() will throw an error.\n * @param input\n */\n protected validateAndParseJson(jsonValue: string): object | null {\n try {\n const parsedJson = JSON.parse(jsonValue);\n /**\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\n *\n */\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\n } catch (error) {\n return null;\n }\n }\n\n /**\n * fetches the entry from the browser storage based off the key\n * @param key\n */\n getItem(key: string): string | null {\n return this.browserStorage.getItem(key);\n }\n\n /**\n * sets the entry in the browser storage\n * @param key\n * @param value\n */\n setItem(key: string, value: string): void {\n this.browserStorage.setItem(key, value);\n }\n\n /**\n * fetch the account entity from the platform cache\n * @param accountKey\n */\n getAccount(accountKey: string): AccountEntity | null {\n const account = this.getItem(accountKey);\n if (!account) {\n return null;\n }\n\n const parsedAccount = this.validateAndParseJson(account);\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\n return null;\n }\n\n return CacheManager.toObject(new AccountEntity(), parsedAccount);\n }\n\n /**\n * set account entity in the platform cache\n * @param key\n * @param value\n */\n setAccount(account: AccountEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\n const key = account.generateAccountKey();\n this.setItem(key, JSON.stringify(account));\n }\n\n /**\n * generates idToken entity from a string\n * @param idTokenKey\n */\n getIdTokenCredential(idTokenKey: string): IdTokenEntity | null {\n const value = this.getItem(idTokenKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\n return null;\n }\n\n const parsedIdToken = this.validateAndParseJson(value);\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\n }\n\n /**\n * set IdToken credential to the platform cache\n * @param idToken\n */\n setIdTokenCredential(idToken: IdTokenEntity): void {\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\n const idTokenKey = idToken.generateCredentialKey();\n\n this.setItem(idTokenKey, JSON.stringify(idToken));\n }\n\n /**\n * generates accessToken entity from a string\n * @param key\n */\n getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null {\n const value = this.getItem(accessTokenKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\n return null;\n }\n const parsedAccessToken = this.validateAndParseJson(value);\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\n }\n\n /**\n * set accessToken credential to the platform cache\n * @param accessToken\n */\n setAccessTokenCredential(accessToken: AccessTokenEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\n const accessTokenKey = accessToken.generateCredentialKey();\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\n }\n\n /**\n * generates refreshToken entity from a string\n * @param refreshTokenKey\n */\n getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null {\n const value = this.getItem(refreshTokenKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\n return null;\n }\n const parsedRefreshToken = this.validateAndParseJson(value);\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\n }\n\n /**\n * set refreshToken credential to the platform cache\n * @param refreshToken\n */\n setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void {\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\n const refreshTokenKey = refreshToken.generateCredentialKey();\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\n }\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey\n */\n getAppMetadata(appMetadataKey: string): AppMetadataEntity | null {\n const value = this.getItem(appMetadataKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\n return null;\n }\n\n const parsedMetadata = this.validateAndParseJson(value);\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\n }\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata\n */\n setAppMetadata(appMetadata: AppMetadataEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\n const appMetadataKey = appMetadata.generateAppMetadataKey();\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\n }\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetryKey\n */\n getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null {\n const value = this.getItem(serverTelemetryKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\n return null;\n }\n const parsedMetadata = this.validateAndParseJson(value);\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\n }\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey\n * @param serverTelemetry\n */\n setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void {\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\n }\n\n /**\n *\n */\n getAuthorityMetadata(key: string) : AuthorityMetadataEntity | null {\n const value = this.internalStorage.getItem(key);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\n return null;\n }\n const parsedMetadata = this.validateAndParseJson(value);\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\n }\n return null;\n }\n\n /**\n *\n */\n getAuthorityMetadataKeys(): Array {\n const allKeys = this.internalStorage.getKeys();\n return allKeys.filter((key) => {\n return this.isAuthorityMetadata(key);\n });\n }\n\n /**\n * Sets wrapper metadata in memory\n * @param wrapperSKU\n * @param wrapperVersion\n */\n setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void {\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\n }\n\n /**\n * Returns wrapper metadata from in-memory storage\n */\n getWrapperMetadata(): [string, string] {\n const sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || Constants.EMPTY_STRING;\n const version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || Constants.EMPTY_STRING;\n return [sku, version];\n }\n\n /**\n *\n * @param entity\n */\n setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\n this.internalStorage.setItem(key, JSON.stringify(entity));\n }\n\n /**\n * Gets the active account\n */\n getActiveAccount(): AccountInfo | null {\n const activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\n const activeAccountValueFilters = this.getItem(activeAccountKeyFilters);\n if (!activeAccountValueFilters) { \n // if new active account cache type isn't found, it's an old version, so look for that instead\n this.logger.trace(\"No active account filters cache schema found, looking for legacy schema\");\n const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\n const activeAccountValueLocal = this.getItem(activeAccountKeyLocal);\n if(!activeAccountValueLocal) {\n this.logger.trace(\"No active account found\");\n return null;\n }\n const activeAccount = this.getAccountInfoByFilter({localAccountId: activeAccountValueLocal})[0] || null;\n if(activeAccount) {\n this.logger.trace(\"Legacy active account cache schema found\");\n this.logger.trace(\"Adding active account filters cache schema\");\n this.setActiveAccount(activeAccount);\n return activeAccount;\n }\n return null;\n }\n const activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters) as AccountInfo;\n if(activeAccountValueObj) {\n this.logger.trace(\"Active account filters schema found\");\n return this.getAccountInfoByFilter({\n homeAccountId: activeAccountValueObj.homeAccountId,\n localAccountId: activeAccountValueObj.localAccountId\n })[0] || null;\n }\n this.logger.trace(\"No active account found\");\n return null;\n }\n\n /**\n * Sets the active account's localAccountId in cache\n * @param account\n */\n setActiveAccount(account: AccountInfo | null): void {\n const activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\n const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\n if (account) {\n this.logger.verbose(\"setActiveAccount: Active account set\");\n const activeAccountValue: ActiveAccountFilters = {\n homeAccountId: account.homeAccountId,\n localAccountId: account.localAccountId\n };\n this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue));\n this.browserStorage.setItem(activeAccountKeyLocal, account.localAccountId);\n } else {\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\n this.browserStorage.removeItem(activeAccountKey);\n this.browserStorage.removeItem(activeAccountKeyLocal);\n }\n }\n\n /**\n * Gets a list of accounts that match all of the filters provided\n * @param account\n */\n getAccountInfoByFilter(accountFilter: Partial>): AccountInfo[] {\n const allAccounts = this.getAllAccounts();\n return allAccounts.filter((accountObj) => {\n if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\n return false;\n }\n\n if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\n return false;\n }\n\n if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\n return false;\n }\n\n if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\n return false;\n }\n\n if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\n return false;\n }\n\n return true;\n });\n }\n\n /**\n * Checks the cache for accounts matching loginHint or SID\n * @param loginHint\n * @param sid\n */\n getAccountInfoByHints(loginHint?: string, sid?: string): AccountInfo | null {\n const matchingAccounts = this.getAllAccounts().filter((accountInfo) => {\n if (sid) {\n const accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims[\"sid\"];\n return sid === accountSid;\n }\n\n if (loginHint) {\n return loginHint === accountInfo.username;\n }\n\n return false;\n });\n\n if (matchingAccounts.length === 1) {\n return matchingAccounts[0];\n } else if (matchingAccounts.length > 1) {\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\n }\n\n return null;\n }\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey\n */\n getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null {\n const value = this.getItem(throttlingCacheKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\n return null;\n }\n\n const parsedThrottlingCache = this.validateAndParseJson(value);\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\n }\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey\n * @param throttlingCache\n */\n setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void {\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\n }\n\n /**\n * Gets cache item with given key.\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\n * @param key\n */\n getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null {\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\n if (this.cacheConfig.storeAuthStateInCookie) {\n const itemCookie = this.getItemCookie(key);\n if (itemCookie) {\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\n return itemCookie;\n }\n }\n\n const value = this.temporaryCacheStorage.getItem(key);\n if (!value) {\n // If temp cache item not found in session/memory, check local storage for items set by old versions\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\n const item = this.browserStorage.getItem(key);\n if (item) {\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\n return item;\n }\n }\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\n return null;\n }\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\n return value;\n }\n\n /**\n * Sets the cache item with the key and value given.\n * Stores in cookie if storeAuthStateInCookie is set to true.\n * This can cause cookie overflow if used incorrectly.\n * @param key\n * @param value\n */\n setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void {\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\n\n this.temporaryCacheStorage.setItem(key, value);\n if (this.cacheConfig.storeAuthStateInCookie) {\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\n this.setItemCookie(key, value);\n }\n }\n\n /**\n * Removes the cache item with the given key.\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\n * @param key\n */\n removeItem(key: string): boolean {\n this.browserStorage.removeItem(key);\n this.temporaryCacheStorage.removeItem(key);\n if (this.cacheConfig.storeAuthStateInCookie) {\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\n this.clearItemCookie(key);\n }\n return true;\n }\n\n /**\n * Checks whether key is in cache.\n * @param key\n */\n containsKey(key: string): boolean {\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\n }\n\n /**\n * Gets all keys in window.\n */\n getKeys(): string[] {\n return [\n ...this.browserStorage.getKeys(),\n ...this.temporaryCacheStorage.getKeys()\n ];\n }\n\n /**\n * Clears all cache entries created by MSAL.\n */\n async clear(): Promise {\n // Removes all accounts and their credentials\n await this.removeAllAccounts();\n this.removeAppMetadata();\n\n // Removes all remaining MSAL cache items\n this.getKeys().forEach((cacheKey: string) => {\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\n if ((this.browserStorage.containsKey(cacheKey) || this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(this.clientId) !== -1))) {\n this.removeItem(cacheKey);\n }\n });\n\n this.internalStorage.clear();\n }\n\n /**\n * Add value to cookies\n * @param cookieName\n * @param cookieValue\n * @param expires\n */\n setItemCookie(cookieName: string, cookieValue: string, expires?: number): void {\n let cookieStr = `${encodeURIComponent(cookieName)}=${encodeURIComponent(cookieValue)};path=/;SameSite=Lax;`;\n if (expires) {\n const expireTime = this.getCookieExpirationTime(expires);\n cookieStr += `expires=${expireTime};`;\n }\n\n if (this.cacheConfig.secureCookies) {\n cookieStr += \"Secure;\";\n }\n\n document.cookie = cookieStr;\n }\n\n /**\n * Get one item by key from cookies\n * @param cookieName\n */\n getItemCookie(cookieName: string): string {\n const name = `${encodeURIComponent(cookieName)}=`;\n const cookieList = document.cookie.split(\";\");\n for (let i: number = 0; i < cookieList.length; i++) {\n let cookie = cookieList[i];\n while (cookie.charAt(0) === \" \") {\n cookie = cookie.substring(1);\n }\n if (cookie.indexOf(name) === 0) {\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\n }\n }\n return Constants.EMPTY_STRING;\n }\n\n /**\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\n */\n clearMsalCookies(): void {\n const cookiePrefix = `${Constants.CACHE_PREFIX}.${this.clientId}`;\n const cookieList = document.cookie.split(\";\");\n cookieList.forEach((cookie: string): void => {\n while (cookie.charAt(0) === \" \") {\n // eslint-disable-next-line no-param-reassign\n cookie = cookie.substring(1);\n }\n if (cookie.indexOf(cookiePrefix) === 0) {\n const cookieKey = cookie.split(\"=\")[0];\n this.clearItemCookie(cookieKey);\n }\n });\n }\n\n /**\n * Clear an item in the cookies by key\n * @param cookieName\n */\n clearItemCookie(cookieName: string): void {\n this.setItemCookie(cookieName, Constants.EMPTY_STRING, -1);\n }\n\n /**\n * Get cookie expiration time\n * @param cookieLifeDays\n */\n getCookieExpirationTime(cookieLifeDays: number): string {\n const today = new Date();\n const expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\n return expr.toUTCString();\n }\n\n /**\n * Gets the cache object referenced by the browser\n */\n getCache(): object {\n return this.browserStorage;\n }\n\n /**\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\n */\n setCache(): void {\n // sets nothing\n }\n\n /**\n * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\n * @param key\n * @param addInstanceId\n */\n generateCacheKey(key: string): string {\n const generatedKey = this.validateAndParseJson(key);\n if (!generatedKey) {\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\n return key;\n }\n return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`;\n }\n\n return JSON.stringify(key);\n }\n\n /**\n * Create authorityKey to cache authority\n * @param state\n */\n generateAuthorityKey(stateString: string): string {\n const {\n libraryState: {\n id: stateId\n }\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n\n return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`);\n }\n\n /**\n * Create Nonce key to cache nonce\n * @param state\n */\n generateNonceKey(stateString: string): string {\n const {\n libraryState: {\n id: stateId\n }\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n\n return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`);\n }\n\n /**\n * Creates full cache key for the request state\n * @param stateString State string for the request\n */\n generateStateKey(stateString: string): string {\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\n const {\n libraryState: {\n id: stateId\n }\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`);\n }\n\n /**\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\n */\n getCachedAuthority(cachedState: string): string | null {\n const stateCacheKey = this.generateStateKey(cachedState);\n const state = this.getTemporaryCache(stateCacheKey);\n if (!state) {\n return null;\n }\n\n const authorityCacheKey = this.generateAuthorityKey(state);\n return this.getTemporaryCache(authorityCacheKey);\n }\n\n /**\n * Updates account, authority, and state in cache\n * @param serverAuthenticationRequest\n * @param account\n */\n updateCacheEntries(state: string, nonce: string, authorityInstance: string, loginHint: string, account: AccountInfo|null): void {\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\n // Cache the request state\n const stateCacheKey = this.generateStateKey(state);\n this.setTemporaryCache(stateCacheKey, state, false);\n\n // Cache the nonce\n const nonceCacheKey = this.generateNonceKey(state);\n this.setTemporaryCache(nonceCacheKey, nonce, false);\n\n // Cache authorityKey\n const authorityCacheKey = this.generateAuthorityKey(state);\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\n\n if (account) {\n const ccsCredential: CcsCredential = {\n credential: account.homeAccountId,\n type: CcsCredentialType.HOME_ACCOUNT_ID\n };\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\n } else if (!StringUtils.isEmpty(loginHint)) {\n const ccsCredential: CcsCredential = {\n credential: loginHint,\n type: CcsCredentialType.UPN\n };\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\n }\n }\n\n /**\n * Reset all temporary cache items\n * @param state\n */\n resetRequestCache(state: string): void {\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\n // check state and remove associated cache items\n if (!StringUtils.isEmpty(state)) {\n this.getKeys().forEach(key => {\n if (key.indexOf(state) !== -1) {\n this.removeItem(key);\n }\n });\n }\n\n // delete generic interactive request parameters\n if (state) {\n this.removeItem(this.generateStateKey(state));\n this.removeItem(this.generateNonceKey(state));\n this.removeItem(this.generateAuthorityKey(state));\n }\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\n this.setInteractionInProgress(false);\n }\n\n /**\n * Removes temporary cache for the provided state\n * @param stateString\n */\n cleanRequestByState(stateString: string): void {\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\n // Interaction is completed - remove interaction status.\n if (stateString) {\n const stateKey = this.generateStateKey(stateString);\n const cachedState = this.temporaryCacheStorage.getItem(stateKey);\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`);\n this.resetRequestCache(cachedState || Constants.EMPTY_STRING);\n }\n this.clearMsalCookies();\n }\n\n /**\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\n * @param interactionType\n */\n cleanRequestByInteractionType(interactionType: InteractionType): void {\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\n // Loop through all keys to find state key\n this.getKeys().forEach((key) => {\n // If this key is not the state key, move on\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\n return;\n }\n\n // Retrieve state value, return if not a valid value\n const stateValue = this.temporaryCacheStorage.getItem(key);\n if (!stateValue) {\n return;\n }\n // Extract state and ensure it matches given InteractionType, then clean request cache\n const parsedState = BrowserProtocolUtils.extractBrowserRequestState(this.cryptoImpl, stateValue);\n if (parsedState && parsedState.interactionType === interactionType) {\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`);\n this.resetRequestCache(stateValue);\n }\n });\n this.clearMsalCookies();\n this.setInteractionInProgress(false);\n }\n\n cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto): void {\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\n\n const encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\n }\n\n /**\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\n */\n getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest {\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\n // Get token request from cache and parse as TokenExchangeParameters.\n const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\n if (!encodedTokenRequest) {\n throw BrowserAuthError.createNoTokenRequestCacheError();\n }\n\n const parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest)) as CommonAuthorizationCodeRequest;\n if (!parsedRequest) {\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\n }\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\n\n // Get cached authority and use if no authority is cached with request.\n if (StringUtils.isEmpty(parsedRequest.authority)) {\n const authorityCacheKey: string = this.generateAuthorityKey(state);\n const cachedAuthority = this.getTemporaryCache(authorityCacheKey);\n if (!cachedAuthority) {\n throw BrowserAuthError.createNoCachedAuthorityError();\n }\n parsedRequest.authority = cachedAuthority;\n }\n\n return parsedRequest;\n }\n\n /**\n * Gets cached native request for redirect flows\n */\n getCachedNativeRequest(): NativeTokenRequest | null {\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\n const cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);\n if (!cachedRequest) {\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest: No cached native request found\");\n return null;\n }\n\n const parsedRequest = this.validateAndParseJson(cachedRequest) as NativeTokenRequest;\n if (!parsedRequest) {\n this.logger.error(\"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\");\n return null;\n }\n\n return parsedRequest;\n }\n\n isInteractionInProgress(matchClientId?: boolean): boolean {\n const clientId = this.getInteractionInProgress();\n\n if (matchClientId) {\n return clientId === this.clientId;\n } else {\n return !!clientId;\n }\n }\n\n getInteractionInProgress(): string | null {\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\n return this.getTemporaryCache(key, false);\n }\n\n setInteractionInProgress(inProgress: boolean): void {\n // Ensure we don't overwrite interaction in progress for a different clientId\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\n if (inProgress) {\n if (this.getInteractionInProgress()) {\n throw BrowserAuthError.createInteractionInProgressError();\n } else {\n // No interaction is in progress\n this.setTemporaryCache(key, this.clientId, false);\n }\n } else if (!inProgress && this.getInteractionInProgress() === this.clientId) {\n this.removeItem(key);\n }\n }\n\n /**\n * Returns username retrieved from ADAL or MSAL v1 idToken\n */\n getLegacyLoginHint(): string | null {\n // Only check for adal/msal token if no SSO params are being used\n const adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\n if (adalIdTokenString) {\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\n }\n\n // Check for cached MSAL v1 id token\n const msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\n if (msalIdTokenString) {\n this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\n }\n\n const cachedIdTokenString = msalIdTokenString || adalIdTokenString;\n if (cachedIdTokenString) {\n const cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\n if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\n return cachedIdToken.claims.preferred_username;\n }\n else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\n return cachedIdToken.claims.upn;\n }\n else {\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\");\n }\n }\n\n return null;\n }\n\n /**\n * Updates a credential's cache key if the current cache key is outdated\n */\n updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string {\n const updatedCacheKey = credential.generateCredentialKey();\n\n if (currentCacheKey !== updatedCacheKey) {\n const cacheItem = this.getItem(currentCacheKey);\n if (cacheItem) {\n this.removeItem(currentCacheKey);\n this.setItem(updatedCacheKey, cacheItem);\n this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`);\n return updatedCacheKey;\n } else {\n this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`);\n }\n }\n\n return currentCacheKey;\n }\n}\n\nexport const DEFAULT_BROWSER_CACHE_MANAGER = (clientId: string, logger: Logger): BrowserCacheManager => {\n const cacheOptions = {\n cacheLocation: BrowserCacheLocation.MemoryStorage,\n storeAuthStateInCookie: false,\n secureCookies: false\n };\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\n};\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-common\";\nexport const version = \"7.3.0\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from \"../crypto/ICrypto\";\nimport { AuthError } from \"../error/AuthError\";\nimport { ILoggerCallback, LogLevel } from \"../logger/Logger\";\nimport { Constants } from \"../utils/Constants\";\nimport { version } from \"../packageMetadata\";\nimport { Authority } from \"../authority/Authority\";\nimport { AzureCloudInstance } from \"../authority/AuthorityOptions\";\nimport { CacheManager, DefaultStorageClass } from \"../cache/CacheManager\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\nimport { ClientCredentials } from \"../account/ClientCredentials\";\n\n// Token renewal offset default in seconds\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\n\n/**\n * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.\n *\n * This object allows you to configure important elements of MSAL functionality:\n * - authOptions - Authentication for application\n * - cryptoInterface - Implementation of crypto functions\n * - libraryInfo - Library metadata\n * - telemetry - Telemetry options and data\n * - loggerOptions - Logging for application\n * - networkInterface - Network implementation\n * - storageInterface - Storage implementation\n * - systemOptions - Additional library options\n * - clientCredentials - Credentials options for confidential clients\n */\nexport type ClientConfiguration = {\n authOptions: AuthOptions,\n systemOptions?: SystemOptions,\n loggerOptions?: LoggerOptions,\n storageInterface?: CacheManager,\n networkInterface?: INetworkModule,\n cryptoInterface?: ICrypto,\n clientCredentials?: ClientCredentials,\n libraryInfo?: LibraryInfo\n telemetry?: TelemetryOptions,\n serverTelemetryManager?: ServerTelemetryManager | null,\n persistencePlugin?: ICachePlugin | null,\n serializableCache?: ISerializableTokenCache | null, \n};\n\nexport type CommonClientConfiguration = {\n authOptions: Required,\n systemOptions: Required,\n loggerOptions : Required,\n storageInterface: CacheManager,\n networkInterface : INetworkModule,\n cryptoInterface : Required,\n libraryInfo : LibraryInfo,\n telemetry: Required,\n serverTelemetryManager: ServerTelemetryManager | null,\n clientCredentials: ClientCredentials,\n persistencePlugin: ICachePlugin | null,\n serializableCache: ISerializableTokenCache | null, \n};\n\n/**\n * Use this to configure the auth options in the ClientConfiguration object\n *\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false.\n */\nexport type AuthOptions = {\n clientId: string;\n authority: Authority;\n clientCapabilities?: Array;\n azureCloudOptions?: AzureCloudOptions;\n skipAuthorityMetadataCache?: boolean;\n};\n\n/**\n * Use this to configure token renewal info in the Configuration object\n *\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\n */\nexport type SystemOptions = {\n tokenRenewalOffsetSeconds?: number;\n preventCorsPreflight?: boolean;\n proxyUrl?: string;\n};\n\n/**\n * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object\n *\n * - loggerCallback - Callback for logger\n * - piiLoggingEnabled - Sets whether pii logging is enabled\n * - logLevel - Sets the level at which logging happens\n * - correlationId - Sets the correlationId printed by the logger\n */\nexport type LoggerOptions = {\n loggerCallback?: ILoggerCallback,\n piiLoggingEnabled?: boolean,\n logLevel?: LogLevel,\n correlationId?: string\n};\n\n/**\n * Library-specific options\n */\nexport type LibraryInfo = {\n sku: string,\n version: string,\n cpu: string,\n os: string\n};\n\n/**\n * AzureCloudInstance specific options\n *\n * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities\n * - tenant - provision to provide the tenant info\n */\nexport type AzureCloudOptions = {\n azureCloudInstance: AzureCloudInstance;\n tenant?: string,\n};\n\nexport type TelemetryOptions = {\n application: ApplicationTelemetry;\n};\n\n/**\n * Telemetry information sent on request\n * - appName: Unique string name of an application\n * - appVersion: Version of the application using MSAL\n */\nexport type ApplicationTelemetry = {\n appName: string;\n appVersion: string;\n};\n\nexport const DEFAULT_SYSTEM_OPTIONS: Required = {\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\n preventCorsPreflight: false,\n proxyUrl: Constants.EMPTY_STRING\n};\n\nconst DEFAULT_LOGGER_IMPLEMENTATION: Required = {\n loggerCallback: () => {\n // allow users to not set loggerCallback\n },\n piiLoggingEnabled: false,\n logLevel: LogLevel.Info,\n correlationId: Constants.EMPTY_STRING\n};\n\nconst DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {\n async sendGetRequestAsync(): Promise {\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async sendPostRequestAsync(): Promise {\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n};\n\nconst DEFAULT_LIBRARY_INFO: LibraryInfo = {\n sku: Constants.SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING\n};\n\nconst DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {\n clientSecret: Constants.EMPTY_STRING,\n clientAssertion: undefined\n};\n\nconst DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = {\n azureCloudInstance: AzureCloudInstance.None,\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`\n};\n\nconst DEFAULT_TELEMETRY_OPTIONS: Required = {\n application: {\n appName: \"\",\n appVersion: \"\"\n }\n};\n\n/**\n * Function that sets the default options when not explicitly configured from app developer\n *\n * @param Configuration\n *\n * @returns Configuration\n */\nexport function buildClientConfiguration(\n {\n authOptions: userAuthOptions,\n systemOptions: userSystemOptions,\n loggerOptions: userLoggerOption,\n storageInterface: storageImplementation,\n networkInterface: networkImplementation,\n cryptoInterface: cryptoImplementation,\n clientCredentials: clientCredentials,\n libraryInfo: libraryInfo,\n telemetry: telemetry,\n serverTelemetryManager: serverTelemetryManager,\n persistencePlugin: persistencePlugin,\n serializableCache: serializableCache, \n }: ClientConfiguration): CommonClientConfiguration {\n\n const loggerOptions = { ...DEFAULT_LOGGER_IMPLEMENTATION, ...userLoggerOption };\n\n return {\n authOptions: buildAuthOptions(userAuthOptions),\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\n loggerOptions: loggerOptions,\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION),\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\n serverTelemetryManager: serverTelemetryManager || null,\n persistencePlugin: persistencePlugin || null,\n serializableCache: serializableCache || null, \n };\n}\n\n/**\n * Construct authoptions from the client and platform passed values\n * @param authOptions\n */\nfunction buildAuthOptions(authOptions: AuthOptions): Required {\n return {\n clientCapabilities: [],\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\n skipAuthorityMetadataCache: false,\n ...authOptions\n };\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"../error/AuthError\";\nimport { NetworkResponse } from \"./NetworkManager\";\n\n/**\n * Options allowed by network request APIs.\n */\nexport type NetworkRequestOptions = {\n headers?: Record,\n body?: string;\n proxyUrl?: string;\n};\n\n/**\n * Client network interface to send backend requests.\n * @interface\n */\nexport interface INetworkModule {\n\n /**\n * Interface function for async network \"GET\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\n * @param url\n * @param requestParams\n * @param enableCaching\n */\n sendGetRequestAsync(url: string, options?: NetworkRequestOptions, cancellationToken?: number): Promise>;\n\n /**\n * Interface function for async network \"POST\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\n * @param url\n * @param requestParams\n * @param enableCaching\n */\n sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>;\n}\n\nexport const StubbedNetworkModule: INetworkModule = {\n sendGetRequestAsync: () => {\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\n },\n sendPostRequestAsync: () => {\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\n }\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\n\n/**\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\n */\nexport class FetchClient implements INetworkModule {\n\n /**\n * Fetch Client for REST endpoints - Get request\n * @param url \n * @param headers \n * @param body \n */\n async sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\n let response;\n try {\n response = await fetch(url, {\n method: HTTP_REQUEST_TYPE.GET,\n headers: this.getFetchHeaders(options)\n });\n } catch (e) {\n if (window.navigator.onLine) {\n throw BrowserAuthError.createGetRequestFailedError(e, url);\n } else {\n throw BrowserAuthError.createNoNetworkConnectivityError();\n }\n }\n\n try {\n return {\n headers: this.getHeaderDict(response.headers),\n body: await response.json() as T,\n status: response.status\n };\n } catch (e) {\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\n }\n }\n\n /**\n * Fetch Client for REST endpoints - Post request\n * @param url \n * @param headers \n * @param body \n */\n async sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\n const reqBody = (options && options.body) || Constants.EMPTY_STRING;\n\n let response;\n try {\n response = await fetch(url, {\n method: HTTP_REQUEST_TYPE.POST,\n headers: this.getFetchHeaders(options),\n body: reqBody\n });\n } catch (e) {\n if (window.navigator.onLine) {\n throw BrowserAuthError.createPostRequestFailedError(e, url);\n } else {\n throw BrowserAuthError.createNoNetworkConnectivityError();\n }\n }\n\n try {\n return {\n headers: this.getHeaderDict(response.headers),\n body: await response.json() as T,\n status: response.status\n };\n } catch (e) {\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\n }\n }\n\n /**\n * Get Fetch API Headers object from string map\n * @param inputHeaders \n */\n private getFetchHeaders(options?: NetworkRequestOptions): Headers {\n const headers = new Headers();\n if (!(options && options.headers)) {\n return headers;\n }\n const optionsHeaders = options.headers;\n Object.keys(optionsHeaders).forEach((key) => {\n headers.append(key, optionsHeaders[key]);\n });\n return headers;\n }\n\n private getHeaderDict(headers: Headers): Record {\n const headerDict: Record = {};\n headers.forEach((value: string, key: string) => {\n headerDict[key] = value;\n });\n return headerDict;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\n\n/**\n * This client implements the XMLHttpRequest class to send GET and POST requests.\n */\nexport class XhrClient implements INetworkModule {\n\n /**\n * XhrClient for REST endpoints - Get request\n * @param url \n * @param headers \n * @param body \n */\n async sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options);\n }\n\n /**\n * XhrClient for REST endpoints - Post request\n * @param url \n * @param headers \n * @param body \n */\n async sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options);\n }\n\n /**\n * Helper for XhrClient requests.\n * @param url \n * @param method \n * @param options \n */\n private sendRequestAsync(url: string, method: HTTP_REQUEST_TYPE, options?: NetworkRequestOptions): Promise> {\n return new Promise>((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, /* async: */ true);\n this.setXhrHeaders(xhr, options);\n xhr.onload = (): void => {\n if (xhr.status < 200 || xhr.status >= 300) {\n if (method === HTTP_REQUEST_TYPE.POST) {\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\n } else {\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\n }\n }\n try {\n const jsonResponse = JSON.parse(xhr.responseText) as T;\n const networkResponse: NetworkResponse = {\n headers: this.getHeaderDict(xhr),\n body: jsonResponse,\n status: xhr.status\n };\n resolve(networkResponse);\n } catch (e) {\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\n }\n };\n\n xhr.onerror = (): void => {\n if (window.navigator.onLine) {\n if (method === HTTP_REQUEST_TYPE.POST) {\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\n } else {\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\n }\n } else {\n reject(BrowserAuthError.createNoNetworkConnectivityError());\n }\n };\n\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\n xhr.send(options.body);\n } else if (method === HTTP_REQUEST_TYPE.GET) {\n xhr.send();\n } else {\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\n }\n });\n }\n\n /**\n * Helper to set XHR headers for request.\n * @param xhr \n * @param options \n */\n private setXhrHeaders(xhr: XMLHttpRequest, options?: NetworkRequestOptions): void {\n if (options && options.headers) {\n const headers = options.headers;\n Object.keys(headers).forEach((key: string) => {\n xhr.setRequestHeader(key, headers[key]);\n });\n }\n }\n\n /**\n * Gets a string map of the headers received in the response.\n * \n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\n * @param xhr \n */\n private getHeaderDict(xhr: XMLHttpRequest): Record {\n const headerString = xhr.getAllResponseHeaders();\n const headerArr = headerString.trim().split(/[\\r\\n]+/);\n const headerDict: Record = {};\n headerArr.forEach((value: string) => {\n const parts = value.split(\": \");\n const headerName = parts.shift();\n const headerVal = parts.join(\": \");\n if (headerName && headerVal) {\n headerDict[headerName] = headerVal;\n }\n });\n\n return headerDict;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, INetworkModule, UrlString } from \"@azure/msal-common\";\nimport { FetchClient } from \"../network/FetchClient\";\nimport { XhrClient } from \"../network/XhrClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, BrowserConstants } from \"./BrowserConstants\";\n\n/**\n * Utility class for browser specific functions\n */\nexport class BrowserUtils {\n\n // #region Window Navigation and URL management\n\n /**\n * Clears hash from window url.\n */\n static clearHash(contentWindow: Window): void {\n // Office.js sets history.replaceState to null\n contentWindow.location.hash = Constants.EMPTY_STRING;\n if (typeof contentWindow.history.replaceState === \"function\") {\n // Full removes \"#\" from url\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`);\n }\n }\n\n /**\n * Replaces current hash with hash from provided url\n */\n static replaceHash(url: string): void {\n const urlParts = url.split(\"#\");\n urlParts.shift(); // Remove part before the hash\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : Constants.EMPTY_STRING;\n }\n\n /**\n * Returns boolean of whether the current window is in an iframe or not.\n */\n static isInIframe(): boolean {\n return window.parent !== window;\n }\n\n /**\n * Returns boolean of whether or not the current window is a popup opened by msal\n */\n static isInPopup(): boolean {\n return typeof window !== \"undefined\" && !!window.opener && \n window.opener !== window && \n typeof window.name === \"string\" && \n window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0;\n }\n\n // #endregion\n\n /**\n * Returns current window URL as redirect uri\n */\n static getCurrentUri(): string {\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\n }\n\n /**\n * Gets the homepage url for the current window location.\n */\n static getHomepage(): string {\n const currentUrl = new UrlString(window.location.href);\n const urlComponents = currentUrl.getUrlComponents();\n return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\n }\n\n /**\n * Returns best compatible network client object. \n */\n static getBrowserNetworkClient(): INetworkModule {\n if (window.fetch && window.Headers) {\n return new FetchClient();\n } else {\n return new XhrClient();\n }\n }\n\n /**\n * Throws error if we have completed an auth and are \n * attempting another auth request inside an iframe.\n */\n static blockReloadInHiddenIframes(): void {\n const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\n // return an error if called from the hidden iframe created by the msal js silent calls\n if (isResponseHash && BrowserUtils.isInIframe()) {\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\n }\n }\n\n /**\n * Block redirect operations in iframes unless explicitly allowed\n * @param interactionType Interaction type for the request\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\n */\n static blockRedirectInIframe(interactionType: InteractionType, allowRedirectInIframe: boolean): void {\n const isIframedApp = BrowserUtils.isInIframe();\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\n }\n }\n\n /**\n * Block redirectUri loaded in popup from calling AcquireToken APIs\n */\n static blockAcquireTokenInPopups(): void {\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\n if (BrowserUtils.isInPopup()) {\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\n }\n }\n\n /**\n * Throws error if token requests are made in non-browser environment\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\n */\n static blockNonBrowserEnvironment(isBrowserEnvironment: boolean): void {\n if (!isBrowserEnvironment) {\n throw BrowserAuthError.createNonBrowserEnvironmentError();\n }\n }\n\n /**\n * Throws error if native brokering is enabled but initialize hasn't been called\n * @param allowNativeBroker \n * @param initialized \n */\n static blockNativeBrokerCalledBeforeInitialized(allowNativeBroker: boolean, initialized: boolean): void {\n if (allowNativeBroker && !initialized) {\n throw BrowserAuthError.createNativeBrokerCalledBeforeInitialize();\n }\n }\n\n /**\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\n */\n static detectIEOrEdge(): boolean {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf(\"MSIE \");\n const msie11 = ua.indexOf(\"Trident/\");\n const msedge = ua.indexOf(\"Edge/\");\n const isIE = msie > 0 || msie11 > 0;\n const isEdge = msedge > 0;\n return isIE || isEdge;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INavigationClient } from \"./INavigationClient\";\nimport { NavigationOptions } from \"./NavigationOptions\";\n\nexport class NavigationClient implements INavigationClient {\n /**\n * Navigates to other pages within the same web application\n * @param url \n * @param options \n */\n navigateInternal(url: string, options: NavigationOptions): Promise{\n return NavigationClient.defaultNavigateWindow(url, options);\n }\n\n /**\n * Navigates to other pages outside the web application i.e. the Identity Provider\n * @param url \n * @param options \n */\n navigateExternal(url: string, options: NavigationOptions): Promise {\n return NavigationClient.defaultNavigateWindow(url, options);\n }\n\n /**\n * Default navigation implementation invoked by the internal and external functions\n * @param url \n * @param options \n */\n private static defaultNavigateWindow(url: string, options: NavigationOptions): Promise {\n if (options.noHistory) {\n window.location.replace(url);\n } else {\n window.location.assign(url);\n }\n\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, options.timeout);\n });\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SystemOptions, LoggerOptions, INetworkModule, DEFAULT_SYSTEM_OPTIONS, Constants, ProtocolMode, LogLevel, StubbedNetworkModule, AzureCloudInstance, AzureCloudOptions, ApplicationTelemetry } from \"@azure/msal-common\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationClient } from \"../navigation/NavigationClient\";\n\n// Default timeout for popup windows and iframes in milliseconds\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 6000;\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\nexport const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\n\n/**\n * Use this to configure the auth options in the Configuration object\n */\nexport type BrowserAuthOptions = {\n /**\n * Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n */\n clientId: string;\n /**\n * You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n */\n authority?: string;\n /**\n * An array of URIs that are known to be valid. Used in B2C scenarios.\n */\n knownAuthorities?: Array;\n /**\n * A string containing the cloud discovery response. Used in AAD scenarios.\n */\n cloudDiscoveryMetadata?: string;\n /**\n * A string containing the .well-known/openid-configuration endpoint response\n */\n authorityMetadata?: string;\n /**\n * The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\n */\n redirectUri?: string;\n /**\n * The redirect URI where the window navigates after a successful logout.\n */\n postLogoutRedirectUri?: string | null;\n /**\n * Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\n */\n navigateToLoginRequestUrl?: boolean;\n /**\n * Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n */\n clientCapabilities?: Array;\n /**\n * Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n */\n protocolMode?: ProtocolMode;\n /**\n * Enum that represents the Azure Cloud to use.\n */\n azureCloudOptions?: AzureCloudOptions;\n /**\n * Flag of whether to use the local metadata cache\n */\n skipAuthorityMetadataCache?: boolean;\n};\n\n/**\n * Use this to configure the below cache configuration options:\n */\nexport type CacheOptions = {\n /**\n * Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\" and \"sessionStorage\"\n */\n cacheLocation?: BrowserCacheLocation | string;\n /**\n * If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false.\n */\n storeAuthStateInCookie?: boolean;\n /**\n * If set, MSAL sets the \"Secure\" flag on cookies so they can only be sent over HTTPS. By default this flag is set to false.\n */\n secureCookies?: boolean;\n};\n\nexport type BrowserSystemOptions = SystemOptions & {\n /**\n * Used to initialize the Logger object (See ClientConfiguration.ts)\n */\n loggerOptions?: LoggerOptions;\n /**\n * Network interface implementation\n */\n networkClient?: INetworkModule;\n /**\n * Override the methods used to navigate to other webpages. Particularly useful if you are using a client-side router\n */\n navigationClient?: INavigationClient;\n /**\n * Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\n */\n windowHashTimeout?: number;\n /**\n * Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\n */\n iframeHashTimeout?: number;\n /**\n * Sets the timeout for waiting for a response hash in an iframe or popup\n */\n loadFrameTimeout?: number;\n /**\n * Maximum time the library should wait for a frame to load\n */\n navigateFrameWait?: number;\n /**\n * Time to wait for redirection to occur before resolving promise\n */\n redirectNavigationTimeout?: number;\n /**\n * Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request.\n */\n asyncPopups?: boolean;\n /**\n * Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\n */\n allowRedirectInIframe?: boolean;\n /**\n * Flag to enable native broker support (e.g. acquiring tokens from WAM on Windows)\n */\n allowNativeBroker?: boolean;\n /**\n * Sets the timeout for waiting for the native broker handshake to resolve\n */\n nativeBrokerHandshakeTimeout?: number;\n};\n\n/**\n * Telemetry Options\n */\nexport type BrowserTelemetryOptions = {\n /**\n * Telemetry information sent on request\n * - appName: Unique string name of an application\n * - appVersion: Version of the application using MSAL\n */\n application?: ApplicationTelemetry;\n};\n\n/**\n * This object allows you to configure important elements of MSAL functionality and is passed into the constructor of PublicClientApplication\n */\nexport type Configuration = {\n /**\n * This is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\n */\n auth: BrowserAuthOptions,\n /**\n * This is where you configure cache location and whether to store cache in cookies\n */\n cache?: CacheOptions,\n /**\n * This is where you can configure the network client, logger, token renewal offset\n */\n system?: BrowserSystemOptions,\n /**\n * This is where you can configure telemetry data and options\n */\n telemetry?: BrowserTelemetryOptions\n};\n\nexport type BrowserConfiguration = {\n auth: Required,\n cache: Required,\n system: Required,\n telemetry: Required\n};\n\n/**\n * MSAL function that sets the default options when not explicitly configured from app developer\n *\n * @param auth\n * @param cache\n * @param system\n *\n * @returns Configuration object\n */\nexport function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem, telemetry: userInputTelemetry }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\n\n // Default auth options for browser\n const DEFAULT_AUTH_OPTIONS: Required = {\n clientId: Constants.EMPTY_STRING,\n authority: `${Constants.DEFAULT_AUTHORITY}`,\n knownAuthorities: [],\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\n authorityMetadata: Constants.EMPTY_STRING,\n redirectUri: Constants.EMPTY_STRING,\n postLogoutRedirectUri: Constants.EMPTY_STRING,\n navigateToLoginRequestUrl: true,\n clientCapabilities: [],\n protocolMode: ProtocolMode.AAD,\n azureCloudOptions: {\n azureCloudInstance: AzureCloudInstance.None,\n tenant: Constants.EMPTY_STRING\n },\n skipAuthorityMetadataCache: false,\n };\n\n // Default cache options for browser\n const DEFAULT_CACHE_OPTIONS: Required = {\n cacheLocation: BrowserCacheLocation.SessionStorage,\n storeAuthStateInCookie: false,\n secureCookies: false\n };\n\n // Default logger options for browser\n const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n loggerCallback: (): void => {},\n logLevel: LogLevel.Info,\n piiLoggingEnabled: false\n };\n\n // Default system options for browser\n const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required = {\n ...DEFAULT_SYSTEM_OPTIONS,\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\n networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule,\n navigationClient: new NavigationClient(),\n loadFrameTimeout: 0,\n // If loadFrameTimeout is provided, use that as default.\n windowHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS,\n iframeHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_IFRAME_TIMEOUT_MS,\n navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0,\n redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\n asyncPopups: false,\n allowRedirectInIframe: false,\n allowNativeBroker: false,\n nativeBrokerHandshakeTimeout: userInputSystem?.nativeBrokerHandshakeTimeout || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS\n };\n\n const DEFAULT_TELEMETRY_OPTIONS: Required = {\n application: {\n appName: Constants.EMPTY_STRING,\n appVersion: Constants.EMPTY_STRING\n }\n };\n\n const overlayedConfig: BrowserConfiguration = {\n auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\n cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\n system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...userInputSystem },\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry }\n };\n return overlayedConfig;\n}\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, SignedHttpRequestParameters } from \"./ICrypto\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { UrlString } from \"../url/UrlString\";\n\n/**\n * See eSTS docs for more info.\n * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.\n * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:\n * - sw: software storage\n * - uhw: hardware storage\n */\ntype ReqCnf = {\n kid: string;\n xms_ksl: KeyLocation;\n};\n\nexport type ReqCnfData = {\n kid: string;\n reqCnfString: string;\n reqCnfHash: string;\n};\n\nenum KeyLocation {\n SW = \"sw\",\n UHW = \"uhw\"\n}\n\nexport class PopTokenGenerator {\n\n private cryptoUtils: ICrypto;\n\n constructor(cryptoUtils: ICrypto) {\n this.cryptoUtils = cryptoUtils;\n }\n\n /**\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\n * @param request\n * @returns\n */\n async generateCnf(request: SignedHttpRequestParameters): Promise {\n const reqCnf = await this.generateKid(request);\n const reqCnfString: string = this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\n\n return {\n kid: reqCnf.kid,\n reqCnfString, \n reqCnfHash: await this.cryptoUtils.hashString(reqCnfString) \n };\n }\n\n /**\n * Generates key_id for a SHR token request\n * @param request\n * @returns\n */\n async generateKid(request: SignedHttpRequestParameters): Promise {\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\n\n return {\n kid: kidThumbprint,\n xms_ksl: KeyLocation.SW\n };\n }\n\n /**\n * Signs the POP access_token with the local generated key-pair\n * @param accessToken\n * @param request\n * @returns\n */\n async signPopToken(accessToken: string, keyId: string, request: SignedHttpRequestParameters): Promise {\n return this.signPayload(accessToken, keyId, request);\n }\n\n /**\n * Utility function to generate the signed JWT for an access_token\n * @param payload\n * @param kid\n * @param request\n * @param claims\n * @returns\n */\n async signPayload(payload: string, keyId: string, request: SignedHttpRequestParameters, claims?: object): Promise {\n\n // Deconstruct request to extract SHR parameters\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce } = request;\n\n const resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\n return await this.cryptoUtils.signJwt({\n at: payload,\n ts: TimeUtils.nowSeconds(),\n m: resourceRequestMethod?.toUpperCase(),\n u: resourceUrlComponents?.HostNameAndPort,\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\n p: resourceUrlComponents?.AbsolutePath,\n q: (resourceUrlComponents?.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined,\n client_claims: shrClaims || undefined,\n ...claims\n }, keyId, request.correlationId);\n }\n}\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-browser\";\nexport const version = \"2.28.1\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, AccountEntity, CacheManager } from \"@azure/msal-common\";\nimport { InteractionType } from \"../utils/BrowserConstants\";\nimport { EventCallbackFunction, EventError, EventMessage, EventPayload } from \"./EventMessage\";\nimport { EventType } from \"./EventType\";\n\nexport class EventHandler {\n // Callback for subscribing to events\n private eventCallbacks: Map;\n private logger: Logger;\n private browserCrypto: ICrypto;\n private listeningToStorageEvents: boolean;\n\n constructor(logger: Logger, browserCrypto: ICrypto) {\n this.eventCallbacks = new Map();\n this.logger = logger;\n this.browserCrypto = browserCrypto;\n this.listeningToStorageEvents = false;\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\n }\n\n /**\n * Adds event callbacks to array\n * @param callback\n */\n addEventCallback(callback: EventCallbackFunction): string | null {\n if (typeof window !== \"undefined\") {\n const callbackId = this.browserCrypto.createNewGuid();\n this.eventCallbacks.set(callbackId, callback);\n this.logger.verbose(`Event callback registered with id: ${callbackId}`);\n \n return callbackId;\n }\n \n return null;\n }\n\n /**\n * Removes callback with provided id from callback array\n * @param callbackId\n */\n removeEventCallback(callbackId: string): void {\n this.eventCallbacks.delete(callbackId);\n this.logger.verbose(`Event callback ${callbackId} removed.`);\n }\n\n /**\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n enableAccountStorageEvents(): void {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (!this.listeningToStorageEvents) {\n this.logger.verbose(\"Adding account storage listener.\");\n this.listeningToStorageEvents = true;\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\n } else {\n this.logger.verbose(\"Account storage listener already registered.\");\n }\n }\n\n /**\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n disableAccountStorageEvents(): void {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (this.listeningToStorageEvents) {\n this.logger.verbose(\"Removing account storage listener.\");\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\n this.listeningToStorageEvents = false;\n } else {\n this.logger.verbose(\"No account storage listener registered.\");\n }\n }\n\n /**\n * Emits events by calling callback with event message\n * @param eventType\n * @param interactionType\n * @param payload\n * @param error\n */\n emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void {\n if (typeof window !== \"undefined\") {\n const message: EventMessage = {\n eventType: eventType,\n interactionType: interactionType || null,\n payload: payload || null,\n error: error || null,\n timestamp: Date.now()\n };\n\n this.logger.info(`Emitting event: ${eventType}`);\n\n this.eventCallbacks.forEach((callback: EventCallbackFunction, callbackId: string) => {\n this.logger.verbose(`Emitting event to callback ${callbackId}: ${eventType}`);\n callback.apply(null, [message]);\n });\n }\n }\n\n /**\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\n */\n private handleAccountCacheChange(e: StorageEvent): void {\n try {\n const cacheValue = e.newValue || e.oldValue;\n if (!cacheValue) {\n return;\n }\n const parsedValue = JSON.parse(cacheValue);\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\n return;\n }\n const accountEntity = CacheManager.toObject(new AccountEntity(), parsedValue);\n const accountInfo = accountEntity.getAccountInfo();\n if (!e.oldValue && e.newValue) {\n this.logger.info(\"Account was added to cache in a different window\");\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\n } else if (!e.newValue && e.oldValue) {\n this.logger.info(\"Account was removed from cache in a different window\");\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\n }\n } catch (e) {\n return;\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NetworkResponse } from \"./NetworkManager\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { HeaderNames, CacheSchemaType, ThrottlingConstants, Constants } from \"../utils/Constants\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ServerError } from \"../error/ServerError\";\nimport { RequestThumbprint } from \"./RequestThumbprint\";\nimport { ThrottlingEntity } from \"../cache/entities/ThrottlingEntity\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\nexport class ThrottlingUtils {\n\n /**\n * Prepares a RequestThumbprint to be stored as a key.\n * @param thumbprint\n */\n static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string {\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\n }\n\n /**\n * Performs necessary throttling checks before a network request.\n * @param cacheManager\n * @param thumbprint\n */\n static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void {\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\n const value = cacheManager.getThrottlingCache(key);\n\n if (value) {\n if (value.throttleTime < Date.now()) {\n cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\n return;\n }\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\n }\n }\n\n /**\n * Performs necessary throttling checks after a network request.\n * @param cacheManager\n * @param thumbprint\n * @param response\n */\n static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse): void {\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\n const thumbprintValue: ThrottlingEntity = {\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\n error: response.body.error,\n errorCodes: response.body.error_codes,\n errorMessage: response.body.error_description,\n subError: response.body.suberror\n };\n cacheManager.setThrottlingCache(\n ThrottlingUtils.generateThrottlingStorageKey(thumbprint),\n thumbprintValue\n );\n }\n }\n\n /**\n * Checks a NetworkResponse object's status codes against 429 or 5xx\n * @param response\n */\n static checkResponseStatus(response: NetworkResponse): boolean {\n return response.status === 429 || response.status >= 500 && response.status < 600;\n }\n\n /**\n * Checks a NetworkResponse object's RetryAfter header\n * @param response\n */\n static checkResponseForRetryAfter(response: NetworkResponse): boolean {\n if (response.headers) {\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\n }\n return false;\n }\n\n /**\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\n * @param throttleTime\n */\n static calculateThrottleTime(throttleTime: number): number {\n const time = throttleTime <= 0 ? 0 : throttleTime;\n\n const currentSeconds = Date.now() / 1000;\n return Math.floor(Math.min(\n currentSeconds + (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS),\n currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS\n ) * 1000);\n }\n\n static removeThrottle(cacheManager: CacheManager, clientId: string, request: BaseAuthRequest, homeAccountIdentifier?: string): boolean {\n const thumbprint: RequestThumbprint = {\n clientId: clientId,\n authority: request.authority,\n scopes: request.scopes,\n homeAccountIdentifier: homeAccountIdentifier,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid\n };\n\n const key = this.generateThrottlingStorageKey(thumbprint);\n return cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, NetworkRequestOptions } from \"./INetworkModule\";\nimport { RequestThumbprint } from \"./RequestThumbprint\";\nimport { ThrottlingUtils } from \"./ThrottlingUtils\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { AuthError } from \"../error/AuthError\";\n\nexport type NetworkResponse = {\n headers: Record;\n body: T;\n status: number;\n};\n\nexport class NetworkManager {\n private networkClient: INetworkModule;\n private cacheManager: CacheManager;\n\n constructor(networkClient: INetworkModule, cacheManager: CacheManager) {\n this.networkClient = networkClient;\n this.cacheManager = cacheManager;\n }\n\n /**\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\n * @param thumbprint\n * @param tokenEndpoint\n * @param options\n */\n async sendPostRequest(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions): Promise> {\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\n\n let response;\n try {\n response = await this.networkClient.sendPostRequestAsync(tokenEndpoint, options);\n } catch (e) {\n if (e instanceof AuthError) {\n throw e;\n } else {\n throw ClientAuthError.createNetworkError(tokenEndpoint, e);\n }\n }\n\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\n\n return response;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientConfiguration, buildClientConfiguration, CommonClientConfiguration } from \"../config/ClientConfiguration\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { NetworkManager, NetworkResponse } from \"../network/NetworkManager\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { Authority } from \"../authority/Authority\";\nimport { Logger } from \"../logger/Logger\";\nimport { Constants, HeaderNames } from \"../utils/Constants\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\nimport { version, name } from \"../packageMetadata\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { CcsCredential, CcsCredentialType } from \"../account/CcsCredential\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\n\n/**\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\n */\nexport abstract class BaseClient {\n // Logger object\n public logger: Logger;\n\n // Application config\n protected config: CommonClientConfiguration;\n\n // Crypto Interface\n protected cryptoUtils: ICrypto;\n\n // Storage Interface\n protected cacheManager: CacheManager;\n\n // Network Interface\n protected networkClient: INetworkModule;\n\n // Server Telemetry Manager\n protected serverTelemetryManager: ServerTelemetryManager | null;\n\n // Network Manager\n protected networkManager: NetworkManager;\n\n // Default authority object\n public authority: Authority;\n\n // Performance telemetry client\n protected performanceClient?: IPerformanceClient;\n\n protected constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\n // Set the configuration\n this.config = buildClientConfiguration(configuration);\n\n // Initialize the logger\n this.logger = new Logger(this.config.loggerOptions, name, version);\n\n // Initialize crypto\n this.cryptoUtils = this.config.cryptoInterface;\n\n // Initialize storage interface\n this.cacheManager = this.config.storageInterface;\n\n // Set the network interface\n this.networkClient = this.config.networkInterface;\n\n // Set the NetworkManager\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\n\n // Set TelemetryManager\n this.serverTelemetryManager = this.config.serverTelemetryManager;\n\n // set Authority\n this.authority = this.config.authOptions.authority;\n\n // set performance telemetry client\n this.performanceClient = performanceClient;\n }\n\n /**\n * Creates default headers for requests to token endpoint\n */\n protected createTokenRequestHeaders(ccsCred?: CcsCredential): Record { \n const headers: Record = {};\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\n\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\n switch (ccsCred.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\n } catch (e) {\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n }\n break;\n case CcsCredentialType.UPN:\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\n break;\n }\n } \n return headers;\n }\n\n /**\n * Http post to token endpoint\n * @param tokenEndpoint\n * @param queryString\n * @param headers\n * @param thumbprint\n */\n protected async executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record, thumbprint: RequestThumbprint): Promise> {\n const response = await this.networkManager.sendPostRequest(\n thumbprint,\n tokenEndpoint,\n { body: queryString, headers: headers, proxyUrl: this.config.systemOptions.proxyUrl }\n );\n\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\n // Telemetry data successfully logged by server, clear Telemetry cache\n this.config.serverTelemetryManager.clearTelemetryCache();\n }\n\n return response;\n }\n\n /**\n * Updates the authority object of the client. Endpoint discovery must be completed.\n * @param updatedAuthority\n */\n updateAuthority(updatedAuthority: Authority): void {\n if (!updatedAuthority.discoveryComplete()) {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\n }\n this.authority = updatedAuthority;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { PromptValue, CodeChallengeMethodValues} from \"../utils/Constants\";\nimport { StringDict } from \"../utils/MsalTypes\";\n\n/**\n * Validates server consumable params from the \"request\" objects\n */\nexport class RequestValidator {\n\n /**\n * Utility to check if the `redirectUri` in the request is a non-null value\n * @param redirectUri\n */\n static validateRedirectUri(redirectUri: string) : void {\n if (StringUtils.isEmpty(redirectUri)) {\n throw ClientConfigurationError.createRedirectUriEmptyError();\n }\n }\n\n /**\n * Utility to validate prompt sent by the user in the request\n * @param prompt\n */\n static validatePrompt(prompt: string) : void {\n const promptValues = [];\n\n for (const value in PromptValue) {\n promptValues.push(PromptValue[value]);\n }\n\n if (promptValues.indexOf(prompt) < 0) {\n throw ClientConfigurationError.createInvalidPromptError(prompt);\n }\n }\n\n static validateClaims(claims: string) : void {\n try {\n JSON.parse(claims);\n } catch(e) {\n throw ClientConfigurationError.createInvalidClaimsRequestError();\n }\n }\n\n /**\n * Utility to validate code_challenge and code_challenge_method\n * @param codeChallenge\n * @param codeChallengeMethod\n */\n static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string) : void {\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\n } else {\n this.validateCodeChallengeMethod(codeChallengeMethod);\n }\n }\n\n /**\n * Utility to validate code_challenge_method\n * @param codeChallengeMethod\n */\n static validateCodeChallengeMethod(codeChallengeMethod: string) : void {\n if (\n [\n CodeChallengeMethodValues.PLAIN,\n CodeChallengeMethodValues.S256\n ].indexOf(codeChallengeMethod) < 0\n ) {\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\n }\n }\n\n /**\n * Removes unnecessary or duplicate query parameters from extraQueryParameters\n * @param request\n */\n static sanitizeEQParams(eQParams: StringDict, queryParams: Map) : StringDict {\n if (!eQParams) {\n return {};\n }\n\n // Remove any query parameters already included in SSO params\n queryParams.forEach((value, key) => {\n if (eQParams[key]) {\n delete eQParams[key];\n }\n });\n\n return eQParams;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AADServerParamKeys, Constants, ResponseMode, SSOTypes, CLIENT_INFO, AuthenticationScheme, ClaimsRequestKeys, PasswordGrantConstants, OIDC_DEFAULT_SCOPES, ThrottlingConstants, HeaderNames} from \"../utils/Constants\";\nimport { ScopeSet } from \"./ScopeSet\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { StringDict } from \"../utils/MsalTypes\";\nimport { RequestValidator } from \"./RequestValidator\";\nimport { ApplicationTelemetry, LibraryInfo } from \"../config/ClientConfiguration\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\nimport { ClientInfo } from \"../account/ClientInfo\";\n\nexport class RequestParameterBuilder {\n\n private parameters: Map;\n\n constructor() {\n this.parameters = new Map();\n }\n\n /**\n * add response_type = code\n */\n addResponseTypeCode(): void {\n this.parameters.set(\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)\n );\n }\n\n /**\n * add response_type = token id_token\n */\n addResponseTypeForTokenAndIdToken(): void {\n this.parameters.set(\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)\n );\n }\n\n /**\n * add response_mode. defaults to query.\n * @param responseMode\n */\n addResponseMode(responseMode?: ResponseMode): void {\n this.parameters.set(\n AADServerParamKeys.RESPONSE_MODE,\n encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY)\n );\n }\n\n /**\n * Add flag to indicate STS should attempt to use WAM if available\n */\n addNativeBroker(): void {\n this.parameters.set(\n AADServerParamKeys.NATIVE_BROKER,\n encodeURIComponent(\"1\")\n );\n }\n\n /**\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\n * @param scopeSet\n * @param addOidcScopes\n */\n addScopes(scopes: string[], addOidcScopes: boolean = true): void {\n const requestScopes = addOidcScopes ? [...scopes || [], ...OIDC_DEFAULT_SCOPES] : scopes || [];\n const scopeSet = new ScopeSet(requestScopes);\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\n }\n\n /**\n * add clientId\n * @param clientId\n */\n addClientId(clientId: string): void {\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\n }\n\n /**\n * add redirect_uri\n * @param redirectUri\n */\n addRedirectUri(redirectUri: string): void {\n RequestValidator.validateRedirectUri(redirectUri);\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\n }\n\n /**\n * add post logout redirectUri\n * @param redirectUri\n */\n addPostLogoutRedirectUri(redirectUri: string): void {\n RequestValidator.validateRedirectUri(redirectUri);\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\n }\n\n /**\n * add id_token_hint to logout request\n * @param idTokenHint\n */\n addIdTokenHint(idTokenHint: string): void {\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\n }\n\n /**\n * add domain_hint\n * @param domainHint\n */\n addDomainHint(domainHint: string): void {\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\n }\n\n /**\n * add login_hint\n * @param loginHint\n */\n addLoginHint(loginHint: string): void {\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\n }\n\n /**\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\n * @param loginHint\n */\n addCcsUpn(loginHint: string): void {\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));\n }\n\n /**\n * Adds the CCS (Cache Credential Service) query parameter for account object\n * @param loginHint\n */\n addCcsOid(clientInfo: ClientInfo): void {\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));\n }\n\n /**\n * add sid\n * @param sid\n */\n addSid(sid: string): void {\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\n }\n\n /**\n * add claims\n * @param claims\n */\n addClaims(claims?: string, clientCapabilities?: Array): void {\n const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\n RequestValidator.validateClaims(mergedClaims);\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\n }\n\n /**\n * add correlationId\n * @param correlationId\n */\n addCorrelationId(correlationId: string): void {\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\n }\n\n /**\n * add library info query params\n * @param libraryInfo\n */\n addLibraryInfo(libraryInfo: LibraryInfo): void {\n // Telemetry Info\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\n if (libraryInfo.os) {\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\n }\n if (libraryInfo.cpu) {\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\n }\n }\n\n /**\n * Add client telemetry parameters\n * @param appTelemetry\n */\n addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void {\n if (appTelemetry?.appName) {\n this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\n }\n\n if (appTelemetry?.appVersion) {\n this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\n }\n }\n\n /**\n * add prompt\n * @param prompt\n */\n addPrompt(prompt: string): void {\n RequestValidator.validatePrompt(prompt);\n this.parameters.set(`${AADServerParamKeys.PROMPT}`, encodeURIComponent(prompt));\n }\n\n /**\n * add state\n * @param state\n */\n addState(state: string): void {\n if (!StringUtils.isEmpty(state)) {\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\n }\n }\n\n /**\n * add nonce\n * @param nonce\n */\n addNonce(nonce: string): void {\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\n }\n\n /**\n * add code_challenge and code_challenge_method\n * - throw if either of them are not passed\n * @param codeChallenge\n * @param codeChallengeMethod\n */\n addCodeChallengeParams(\n codeChallenge: string,\n codeChallengeMethod: string\n ): void {\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\n if (codeChallenge && codeChallengeMethod) {\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\n } else {\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\n }\n }\n\n /**\n * add the `authorization_code` passed by the user to exchange for a token\n * @param code\n */\n addAuthorizationCode(code: string): void {\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\n }\n\n /**\n * add the `authorization_code` passed by the user to exchange for a token\n * @param code\n */\n addDeviceCode(code: string): void {\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\n }\n\n /**\n * add the `refreshToken` passed by the user\n * @param refreshToken\n */\n addRefreshToken(refreshToken: string): void {\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\n }\n\n /**\n * add the `code_verifier` passed by the user to exchange for a token\n * @param codeVerifier\n */\n addCodeVerifier(codeVerifier: string): void {\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\n }\n\n /**\n * add client_secret\n * @param clientSecret\n */\n addClientSecret(clientSecret: string): void {\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\n }\n\n /**\n * add clientAssertion for confidential client flows\n * @param clientAssertion\n */\n addClientAssertion(clientAssertion: string): void {\n if (!StringUtils.isEmpty(clientAssertion)) {\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\n }\n }\n\n /**\n * add clientAssertionType for confidential client flows\n * @param clientAssertionType\n */\n addClientAssertionType(clientAssertionType: string): void {\n if (!StringUtils.isEmpty(clientAssertionType)) {\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\n }\n }\n\n /**\n * add OBO assertion for confidential client flows\n * @param clientAssertion\n */\n addOboAssertion(oboAssertion: string): void {\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\n }\n\n /**\n * add grant type\n * @param grantType\n */\n addRequestTokenUse(tokenUse: string): void {\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\n }\n\n /**\n * add grant type\n * @param grantType\n */\n addGrantType(grantType: string): void {\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\n }\n\n /**\n * add client info\n *\n */\n addClientInfo(): void {\n this.parameters.set(CLIENT_INFO, \"1\");\n }\n\n /**\n * add extraQueryParams\n * @param eQparams\n */\n addExtraQueryParameters(eQparams: StringDict): void {\n RequestValidator.sanitizeEQParams(eQparams, this.parameters);\n Object.keys(eQparams).forEach((key) => {\n this.parameters.set(key, eQparams[key]);\n });\n }\n\n addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array): string {\n let mergedClaims: object;\n\n // Parse provided claims into JSON object or initialize empty object\n if (!claims) {\n mergedClaims = {};\n } else {\n try {\n mergedClaims = JSON.parse(claims);\n } catch(e) {\n throw ClientConfigurationError.createInvalidClaimsRequestError();\n }\n }\n\n if (clientCapabilities && clientCapabilities.length > 0) {\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)){\n // Add access_token key to claims object\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\n }\n\n // Add xms_cc claim with provided clientCapabilities to access_token key\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\n values: clientCapabilities\n };\n }\n\n return JSON.stringify(mergedClaims);\n }\n\n /**\n * adds `username` for Password Grant flow\n * @param username\n */\n addUsername(username: string): void {\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\n }\n\n /**\n * adds `password` for Password Grant flow\n * @param password\n */\n addPassword(password: string): void {\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\n }\n\n /**\n * add pop_jwk to query params\n * @param cnfString\n */\n addPopToken(cnfString: string): void {\n if (!StringUtils.isEmpty(cnfString)) {\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\n }\n }\n\n /**\n * add SSH JWK and key ID to query params\n */\n addSshJwk(sshJwkString: string): void {\n if(!StringUtils.isEmpty(sshJwkString)) {\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));\n }\n }\n\n /**\n * add server telemetry fields\n * @param serverTelemetryManager\n */\n addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void {\n this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\n this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\n }\n\n /**\n * Adds parameter that indicates to the server that throttling is supported\n */\n addThrottling(): void {\n this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\n }\n\n /**\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\n */\n addLogoutHint(logoutHint: string): void {\n this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));\n }\n\n /**\n * Utility to create a URL from the params map\n */\n createQueryString(): string {\n const queryParameterArray: Array = new Array();\n\n this.parameters.forEach((value, key) => {\n queryParameterArray.push(`${key}=${value}`);\n });\n\n return queryParameterArray.join(\"&\");\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IdTokenEntity } from \"./IdTokenEntity\";\nimport { AccessTokenEntity } from \"./AccessTokenEntity\";\nimport { RefreshTokenEntity } from \"./RefreshTokenEntity\";\nimport { AccountEntity } from \"./AccountEntity\";\nimport { AppMetadataEntity } from \"./AppMetadataEntity\";\n\nexport class CacheRecord {\n account: AccountEntity | null;\n idToken: IdTokenEntity | null;\n accessToken: AccessTokenEntity | null;\n refreshToken: RefreshTokenEntity | null;\n appMetadata: AppMetadataEntity | null;\n\n constructor(accountEntity?: AccountEntity | null, idTokenEntity?: IdTokenEntity | null, accessTokenEntity?: AccessTokenEntity | null, refreshTokenEntity?: RefreshTokenEntity | null, appMetadataEntity?: AppMetadataEntity | null) {\n this.account = accountEntity || null;\n this.idToken = idTokenEntity || null;\n this.accessToken = accessTokenEntity || null;\n this.refreshToken = refreshTokenEntity || null;\n this.appMetadata = appMetadataEntity || null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISerializableTokenCache } from \"../interface/ISerializableTokenCache\";\n\n/**\n * This class instance helps track the memory changes facilitating\n * decisions to read from and write to the persistent cache\n */export class TokenCacheContext {\n /**\n * boolean indicating cache change\n */\n hasChanged: boolean;\n /**\n * serializable token cache interface\n */\n cache: ISerializableTokenCache;\n\n constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) {\n this.cache = tokenCache;\n this.hasChanged = hasChanged;\n }\n\n /**\n * boolean which indicates the changes in cache\n */\n get cacheHasChanged(): boolean {\n return this.hasChanged;\n }\n\n /**\n * function to retrieve the token cache\n */\n get tokenCache(): ISerializableTokenCache {\n return this.cache;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerAuthorizationTokenResponse } from \"./ServerAuthorizationTokenResponse\";\nimport { buildClientInfo} from \"../account/ClientInfo\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ServerAuthorizationCodeResponse } from \"./ServerAuthorizationCodeResponse\";\nimport { Logger } from \"../logger/Logger\";\nimport { ServerError } from \"../error/ServerError\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { ScopeSet } from \"../request/ScopeSet\";\nimport { AuthenticationResult } from \"./AuthenticationResult\";\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\nimport { Authority } from \"../authority/Authority\";\nimport { AuthorityType } from \"../authority/AuthorityType\";\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity\";\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\nimport { RefreshTokenEntity } from \"../cache/entities/RefreshTokenEntity\";\nimport { InteractionRequiredAuthError } from \"../error/InteractionRequiredAuthError\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ProtocolUtils, RequestStateObject } from \"../utils/ProtocolUtils\";\nimport { AuthenticationScheme, Constants, THE_FAMILY_ID } from \"../utils/Constants\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\nimport { AppMetadataEntity } from \"../cache/entities/AppMetadataEntity\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\nimport { TokenCacheContext } from \"../cache/persistence/TokenCacheContext\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\nimport { AuthorizationCodePayload } from \"./AuthorizationCodePayload\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\n/**\n * Class that handles response parsing.\n */\nexport class ResponseHandler {\n private clientId: string;\n private cacheStorage: CacheManager;\n private cryptoObj: ICrypto;\n private logger: Logger;\n private homeAccountIdentifier: string;\n private serializableCache: ISerializableTokenCache | null;\n private persistencePlugin: ICachePlugin | null;\n\n constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null) {\n this.clientId = clientId;\n this.cacheStorage = cacheStorage;\n this.cryptoObj = cryptoObj;\n this.logger = logger;\n this.serializableCache = serializableCache;\n this.persistencePlugin = persistencePlugin;\n }\n\n /**\n * Function which validates server authorization code response.\n * @param serverResponseHash\n * @param cachedState\n * @param cryptoObj\n */\n validateServerAuthorizationCodeResponse(serverResponseHash: ServerAuthorizationCodeResponse, cachedState: string, cryptoObj: ICrypto): void {\n\n if (!serverResponseHash.state || !cachedState) {\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\n throw ClientAuthError.createStateMismatchError();\n }\n\n // Check for error\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\n throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\n }\n\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\n }\n\n if (serverResponseHash.client_info) {\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\n }\n }\n\n /**\n * Function which validates server authorization token response.\n * @param serverResponse\n */\n validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse): void {\n // Check for error\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror);\n }\n\n const errString = `${serverResponse.error_codes} - [${serverResponse.timestamp}]: ${serverResponse.error_description} - Correlation ID: ${serverResponse.correlation_id} - Trace ID: ${serverResponse.trace_id}`;\n throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\n }\n }\n\n /**\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\n * @param serverTokenResponse\n * @param authority\n */\n async handleServerTokenResponse(\n serverTokenResponse: ServerAuthorizationTokenResponse,\n authority: Authority,\n reqTimestamp: number,\n request: BaseAuthRequest,\n authCodePayload?: AuthorizationCodePayload,\n userAssertionHash?: string,\n handlingRefreshTokenResponse?: boolean,\n forceCacheRefreshTokenResponse?: boolean): Promise {\n\n // create an idToken object (not entity)\n let idTokenObj: AuthToken | undefined;\n if (serverTokenResponse.id_token) {\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\n\n // token nonce check (TODO: Add a warning if no nonce is given?)\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\n throw ClientAuthError.createNonceMismatchError();\n }\n }\n }\n\n // generate homeAccountId\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\n\n // save the response tokens\n let requestStateObj: RequestStateObject | undefined;\n if (!!authCodePayload && !!authCodePayload.state) {\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\n }\n\n // Add keyId from request to serverTokenResponse if defined\n serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;\n\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload);\n let cacheContext;\n try {\n if (this.persistencePlugin && this.serializableCache) {\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\n cacheContext = new TokenCacheContext(this.serializableCache, true);\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\n }\n /*\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\n * If not present, we should return null, as it's the case that another application called removeAccount in between\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\n */\n if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && cacheRecord.account) {\n const key = cacheRecord.account.generateAccountKey();\n const account = this.cacheStorage.getAccount(key);\n if (!account) {\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, undefined);\n }\n }\n await this.cacheStorage.saveCacheRecord(cacheRecord);\n } finally {\n if (this.persistencePlugin && this.serializableCache && cacheContext) {\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\n await this.persistencePlugin.afterCacheAccess(cacheContext);\n }\n }\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse.spa_code);\n }\n\n /**\n * Generates CacheRecord\n * @param serverTokenResponse\n * @param idTokenObj\n * @param authority\n */\n private generateCacheRecord(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, request: BaseAuthRequest, idTokenObj?: AuthToken, userAssertionHash?: string, authCodePayload?: AuthorizationCodePayload): CacheRecord {\n const env = authority.getPreferredCache();\n if (StringUtils.isEmpty(env)) {\n throw ClientAuthError.createInvalidCacheEnvironmentError();\n }\n\n // IdToken: non AAD scenarios can have empty realm\n let cachedIdToken: IdTokenEntity | undefined;\n let cachedAccount: AccountEntity | undefined;\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\n cachedIdToken = IdTokenEntity.createIdTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.id_token || Constants.EMPTY_STRING,\n this.clientId,\n idTokenObj.claims.tid || Constants.EMPTY_STRING,\n );\n\n cachedAccount = this.generateAccountEntity(\n serverTokenResponse,\n idTokenObj,\n authority,\n authCodePayload\n );\n }\n\n // AccessToken\n let cachedAccessToken: AccessTokenEntity | null = null;\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\n\n // If scopes not returned in server response, use request scopes\n const responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);\n\n /*\n * Use timestamp calculated before request\n * Server may return timestamps as strings, parse to numbers if so.\n */\n const expiresIn: number = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\n const extExpiresIn: number = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\n const refreshIn: number | undefined = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\n const refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\n\n // non AAD scenarios can have empty realm\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.access_token || Constants.EMPTY_STRING,\n this.clientId,\n idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant,\n responseScopes.printScopes(),\n tokenExpirationSeconds,\n extendedTokenExpirationSeconds,\n this.cryptoObj,\n refreshOnSeconds,\n serverTokenResponse.token_type,\n userAssertionHash,\n serverTokenResponse.key_id,\n request.claims,\n request.requestedClaimsHash\n );\n }\n\n // refreshToken\n let cachedRefreshToken: RefreshTokenEntity | null = null;\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.refresh_token || Constants.EMPTY_STRING,\n this.clientId,\n serverTokenResponse.foci,\n userAssertionHash\n );\n }\n\n // appMetadata\n let cachedAppMetadata: AppMetadataEntity | null = null;\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\n }\n\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\n }\n\n /**\n * Generate Account\n * @param serverTokenResponse\n * @param idToken\n * @param authority\n */\n private generateAccountEntity(serverTokenResponse: ServerAuthorizationTokenResponse, idToken: AuthToken, authority: Authority, authCodePayload?: AuthorizationCodePayload): AccountEntity {\n const authorityType = authority.authorityType;\n const cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;\n const msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;\n\n // ADFS does not require client_info in the response\n if (authorityType === AuthorityType.Adfs) {\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\n return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\n }\n\n // This fallback applies to B2C as well as they fall under an AAD account type.\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\n throw ClientAuthError.createClientInfoEmptyError();\n }\n\n return serverTokenResponse.client_info ?\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost) :\n AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\n }\n\n /**\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\n *\n * Optionally takes a state string that is set as-is in the response.\n *\n * @param cacheRecord\n * @param idTokenObj\n * @param fromTokenCache\n * @param stateString\n */\n static async generateAuthenticationResult(\n cryptoObj: ICrypto,\n authority: Authority,\n cacheRecord: CacheRecord,\n fromTokenCache: boolean,\n request: BaseAuthRequest,\n idTokenObj?: AuthToken,\n requestState?: RequestStateObject,\n code?: string,\n ): Promise {\n let accessToken: string = Constants.EMPTY_STRING;\n let responseScopes: Array = [];\n let expiresOn: Date | null = null;\n let extExpiresOn: Date | undefined;\n let familyId: string = Constants.EMPTY_STRING;\n\n if (cacheRecord.accessToken) {\n if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP) {\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(cryptoObj);\n const { secret, keyId } = cacheRecord.accessToken;\n\n if (!keyId) {\n throw ClientAuthError.createKeyIdMissingError();\n }\n\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\n } else {\n accessToken = cacheRecord.accessToken.secret;\n }\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\n }\n\n if (cacheRecord.appMetadata) {\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\n }\n const uid = idTokenObj?.claims.oid || idTokenObj?.claims.sub || Constants.EMPTY_STRING;\n const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;\n\n return {\n authority: authority.canonicalAuthority,\n uniqueId: uid,\n tenantId: tid,\n scopes: responseScopes,\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\n accessToken: accessToken,\n fromCache: fromTokenCache,\n expiresOn: expiresOn,\n correlationId: request.correlationId,\n extExpiresOn: extExpiresOn,\n familyId: familyId,\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || Constants.EMPTY_STRING,\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\n code,\n fromNativeBroker: false\n };\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient\";\nimport { CommonAuthorizationUrlRequest } from \"../request/CommonAuthorizationUrlRequest\";\nimport { CommonAuthorizationCodeRequest } from \"../request/CommonAuthorizationCodeRequest\";\nimport { Authority } from \"../authority/Authority\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\nimport { GrantType, AuthenticationScheme, PromptValue, Separators, AADServerParamKeys } from \"../utils/Constants\";\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { ResponseHandler } from \"../response/ResponseHandler\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { UrlString } from \"../url/UrlString\";\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\nimport { CommonEndSessionRequest } from \"../request/CommonEndSessionRequest\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { AccountInfo } from \"../account/AccountInfo\";\nimport { buildClientInfoFromHomeAccountId, buildClientInfo } from \"../account/ClientInfo\";\nimport { CcsCredentialType, CcsCredential } from \"../account/CcsCredential\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { RequestValidator } from \"../request/RequestValidator\";\n\n/**\n * Oauth2.0 Authorization Code client\n */\nexport class AuthorizationCodeClient extends BaseClient {\n // Flag to indicate if client is for hybrid spa auth code redemption\n protected includeRedirectUri: boolean = true;\n\n constructor(configuration: ClientConfiguration) {\n super(configuration);\n }\n\n /**\n * Creates the URL of the authorization request letting the user input credentials and consent to the\n * application. The URL target the /authorize endpoint of the authority configured in the\n * application object.\n *\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\n * acquireToken(AuthorizationCodeRequest)\n * @param request\n */\n async getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise {\n const queryString = await this.createAuthCodeUrlQueryString(request);\n\n return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\n }\n\n /**\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\n * authorization_code_grant\n * @param request\n */\n async acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise {\n this.logger.info(\"in acquireToken call\");\n if (!request || StringUtils.isEmpty(request.code)) {\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\n }\n\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await this.executeTokenRequest(this.authority, request);\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n\n // Validate response. This function throws a server error if an error is returned by the server.\n responseHandler.validateTokenResponse(response.body);\n return await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload);\n }\n\n /**\n * Handles the hash fragment response from public client code request. Returns a code response used by\n * the client to exchange for a token in acquireToken.\n * @param hashFragment\n */\n handleFragmentResponse(hashFragment: string, cachedState: string): AuthorizationCodePayload {\n // Handle responses.\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\n\n // Deserialize hash fragment response parameters.\n const hashUrlString = new UrlString(hashFragment);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hashUrlString.getHash());\n\n // Get code response\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\n\n // throw when there is no auth code in the response\n if (!serverParams.code) {\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\n }\n return {\n ...serverParams,\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\n code: serverParams.code\n };\n }\n\n /**\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param authorityUri\n */\n getLogoutUri(logoutRequest: CommonEndSessionRequest): string {\n // Throw error if logoutRequest is null/undefined\n if (!logoutRequest) {\n throw ClientConfigurationError.createEmptyLogoutRequestError();\n }\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\n\n // Construct logout URI\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\n }\n\n /**\n * Executes POST request to token endpoint\n * @param authority\n * @param request\n */\n private async executeTokenRequest(authority: Authority, request: CommonAuthorizationCodeRequest): Promise> {\n const thumbprint: RequestThumbprint = {\n clientId: this.config.authOptions.clientId,\n authority: authority.canonicalAuthority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid\n };\n\n const requestBody = await this.createTokenRequestBody(request);\n const queryParameters = this.createTokenQueryParameters(request);\n let ccsCredential: CcsCredential | undefined = undefined;\n if (request.clientInfo) {\n try {\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\n ccsCredential = {\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n type: CcsCredentialType.HOME_ACCOUNT_ID\n };\n } catch (e) {\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\n }\n }\n const headers: Record = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\n const endpoint = StringUtils.isEmpty(queryParameters) ? authority.tokenEndpoint : `${authority.tokenEndpoint}?${queryParameters}`;\n\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint);\n }\n\n /**\n * Creates query string for the /token request\n * @param request\n */\n private createTokenQueryParameters(request: CommonAuthorizationCodeRequest): string {\n const parameterBuilder = new RequestParameterBuilder();\n\n if (request.tokenQueryParameters) {\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * Generates a map for all the params to be sent to the service\n * @param request\n */\n private async createTokenRequestBody(request: CommonAuthorizationCodeRequest): Promise {\n const parameterBuilder = new RequestParameterBuilder();\n\n parameterBuilder.addClientId(this.config.authOptions.clientId);\n\n /*\n * For hybrid spa flow, there will be a code but no verifier\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\n */\n if (!this.includeRedirectUri) {\n // Just validate\n RequestValidator.validateRedirectUri(request.redirectUri);\n } else {\n // Validate and include redirect uri\n parameterBuilder.addRedirectUri(request.redirectUri);\n }\n\n // Add scope array, parameter builder will add default scopes and dedupe\n parameterBuilder.addScopes(request.scopes);\n\n // add code: user set, not validated\n parameterBuilder.addAuthorizationCode(request.code);\n\n // Add library metadata\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n parameterBuilder.addThrottling();\n\n if (this.serverTelemetryManager) {\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n }\n\n // add code_verifier if passed\n if (request.codeVerifier) {\n parameterBuilder.addCodeVerifier(request.codeVerifier);\n }\n\n if (this.config.clientCredentials.clientSecret) {\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n }\n\n if (this.config.clientCredentials.clientAssertion) {\n const clientAssertion = this.config.clientCredentials.clientAssertion;\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n }\n\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\n parameterBuilder.addClientInfo();\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n const reqCnfData = await popTokenGenerator.generateCnf(request);\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n if(request.sshJwk) {\n parameterBuilder.addSshJwk(request.sshJwk);\n } else {\n throw ClientConfigurationError.createMissingSshJwkError();\n }\n }\n\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\n parameterBuilder.addCorrelationId(correlationId);\n\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n }\n\n let ccsCred: CcsCredential | undefined = undefined;\n if (request.clientInfo) {\n try {\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\n ccsCred = {\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n type: CcsCredentialType.HOME_ACCOUNT_ID\n };\n } catch (e) {\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\n }\n } else {\n ccsCred = request.ccsCredential;\n }\n\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\n switch (ccsCred.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n }\n break;\n case CcsCredentialType.UPN:\n parameterBuilder.addCcsUpn(ccsCred.credential);\n break;\n }\n }\n\n if (request.tokenBodyParameters) {\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\n }\n\n // Add hybrid spa parameters if not already provided\n if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[AADServerParamKeys.RETURN_SPA_CODE])) {\n parameterBuilder.addExtraQueryParameters({\n [AADServerParamKeys.RETURN_SPA_CODE]: \"1\"\n });\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\n * @param request\n */\n private async createAuthCodeUrlQueryString(request: CommonAuthorizationUrlRequest): Promise {\n const parameterBuilder = new RequestParameterBuilder();\n\n parameterBuilder.addClientId(this.config.authOptions.clientId);\n\n const requestScopes = [...request.scopes || [], ...request.extraScopesToConsent || []];\n parameterBuilder.addScopes(requestScopes);\n\n // validate the redirectUri (to be a non null value)\n parameterBuilder.addRedirectUri(request.redirectUri);\n\n // generate the correlationId if not set by the user and add\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\n parameterBuilder.addCorrelationId(correlationId);\n\n // add response_mode. If not passed in it defaults to query.\n parameterBuilder.addResponseMode(request.responseMode);\n\n // add response_type = code\n parameterBuilder.addResponseTypeCode();\n\n // add library info parameters\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n\n // add client_info=1\n parameterBuilder.addClientInfo();\n\n if (request.codeChallenge && request.codeChallengeMethod) {\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\n }\n\n if (request.prompt) {\n parameterBuilder.addPrompt(request.prompt);\n }\n\n if (request.domainHint) {\n parameterBuilder.addDomainHint(request.domainHint);\n }\n\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\n // AAD will throw if prompt=select_account is passed with an account hint\n if (request.sid && request.prompt === PromptValue.NONE) {\n // SessionID is only used in silent calls\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\n parameterBuilder.addSid(request.sid);\n } else if (request.account) {\n const accountSid = this.extractAccountSid(request.account);\n const accountLoginHintClaim = this.extractLoginHint(request.account);\n // If login_hint claim is present, use it over sid/username\n if (accountLoginHintClaim) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\n parameterBuilder.addLoginHint(accountLoginHintClaim);\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n }\n } else if (accountSid && request.prompt === PromptValue.NONE) {\n /*\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\n * SessionId is only used in silent calls\n */\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\n parameterBuilder.addSid(accountSid);\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n }\n } else if (request.loginHint) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\n parameterBuilder.addLoginHint(request.loginHint);\n parameterBuilder.addCcsUpn(request.loginHint);\n } else if (request.account.username) {\n // Fallback to account username if provided\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\n parameterBuilder.addLoginHint(request.account.username);\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n }\n }\n } else if (request.loginHint) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\n parameterBuilder.addLoginHint(request.loginHint);\n parameterBuilder.addCcsUpn(request.loginHint);\n }\n } else {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\n }\n\n if (request.nonce) {\n parameterBuilder.addNonce(request.nonce);\n }\n\n if (request.state) {\n parameterBuilder.addState(request.state);\n }\n\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n }\n\n if (request.extraQueryParameters) {\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n }\n\n if (request.nativeBroker) {\n // signal ests that this is a WAM call\n parameterBuilder.addNativeBroker();\n\n // pass the req_cnf for POP\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\n const reqCnfData = await popTokenGenerator.generateCnf(request);\n parameterBuilder.addPopToken(reqCnfData.reqCnfHash);\n }\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * This API validates the `EndSessionRequest` and creates a URL\n * @param request\n */\n private createLogoutUrlQueryString(request: CommonEndSessionRequest): string {\n const parameterBuilder = new RequestParameterBuilder();\n\n if (request.postLogoutRedirectUri) {\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\n }\n\n if (request.correlationId) {\n parameterBuilder.addCorrelationId(request.correlationId);\n }\n\n if (request.idTokenHint) {\n parameterBuilder.addIdTokenHint(request.idTokenHint);\n }\n\n if(request.state) {\n parameterBuilder.addState(request.state);\n }\n\n if (request.logoutHint) {\n parameterBuilder.addLogoutHint(request.logoutHint);\n }\n\n if (request.extraQueryParameters) {\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\n * @param account\n */\n private extractAccountSid(account: AccountInfo): string | null {\n return account.idTokenClaims?.sid || null;\n }\n\n private extractLoginHint(account: AccountInfo): string | null {\n return account.idTokenClaims?.login_hint || null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\n */\nexport type OpenIdConfigResponse = {\n authorization_endpoint: string;\n token_endpoint: string;\n end_session_endpoint?: string;\n issuer: string;\n jwks_uri: string;\n};\n\nexport function isOpenIdConfigResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"authorization_endpoint\") &&\n response.hasOwnProperty(\"token_endpoint\") && \n response.hasOwnProperty(\"issuer\") &&\n response.hasOwnProperty(\"jwks_uri\")\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const rawMetdataJSON = {\"endpointMetadata\":{\"https://login.microsoftonline.com/common/\":{\"token_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/common/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/common/\":{\"token_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"},\"https://login.microsoftonline.com/consumers/\":{\"token_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/consumers/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/consumers/\":{\"token_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"},\"https://login.microsoftonline.com/organizations/\":{\"token_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/organizations/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/organizations/\":{\"token_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"}},\"instanceDiscoveryMetadata\":{\"https://login.microsoftonline.com/common/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/common/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/common/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.com/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.com/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]}}};\n\nexport const EndpointMetadata = rawMetdataJSON.endpointMetadata;\nexport const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse\";\nimport { Constants, RegionDiscoverySources, ResponseCodes } from \"../utils/Constants\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\nimport { ImdsOptions } from \"./ImdsOptions\";\n\nexport class RegionDiscovery {\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Options for the IMDS endpoint request\n protected static IMDS_OPTIONS: ImdsOptions = {\n headers: {\n Metadata: \"true\",\n },\n };\n\n constructor(networkInterface: INetworkModule) {\n this.networkInterface = networkInterface;\n }\n\n /**\n * Detect the region from the application's environment.\n * \n * @returns Promise\n */\n public async detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata, proxyUrl: string): Promise {\n // Initialize auto detected region with the region from the envrionment \n let autodetectedRegionName = environmentRegion;\n\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS \n if (!autodetectedRegionName) {\n const options = RegionDiscovery.IMDS_OPTIONS;\n if (proxyUrl) {\n options.proxyUrl = proxyUrl;\n }\n\n try {\n const localIMDSVersionResponse = await this.getRegionFromIMDS(Constants.IMDS_VERSION, options);\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\n autodetectedRegionName = localIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\n } \n \n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. \n if (localIMDSVersionResponse.status === ResponseCodes.httpBadRequest) {\n const currentIMDSVersion = await this.getCurrentVersion(options);\n if (!currentIMDSVersion) {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n }\n\n const currentIMDSVersionResponse = await this.getRegionFromIMDS(currentIMDSVersion, options);\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\n autodetectedRegionName = currentIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\n }\n }\n } catch(e) {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n } \n } else {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\n }\n\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\n if (!autodetectedRegionName) {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n }\n\n return autodetectedRegionName || null;\n }\n\n /**\n * Make the call to the IMDS endpoint\n * \n * @param imdsEndpointUrl\n * @returns Promise>\n */\n private async getRegionFromIMDS(version: string, options: ImdsOptions): Promise> {\n return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\n }\n\n /**\n * Get the most recent version of the IMDS endpoint available\n * \n * @returns Promise\n */\n private async getCurrentVersion(options: ImdsOptions): Promise {\n try {\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options);\n\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\n return response.body[\"newest-versions\"][0];\n }\n\n return null;\n } catch (e) {\n return null;\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError, InteractionRequiredAuthError } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"./BrowserAuthError\";\n\nexport type OSError = {\n error: number;\n protocol_error: string;\n properties: object;\n status: string;\n retryable?: boolean;\n};\n\nexport enum NativeStatusCode {\n USER_INTERACTION_REQUIRED = \"USER_INTERACTION_REQUIRED\",\n USER_CANCEL = \"USER_CANCEL\",\n NO_NETWORK = \"NO_NETWORK\",\n TRANSIENT_ERROR = \"TRANSIENT_ERROR\",\n PERSISTENT_ERROR = \"PERSISTENT_ERROR\",\n DISABLED = \"DISABLED\",\n ACCOUNT_UNAVAILABLE = \"ACCOUNT_UNAVAILABLE\"\n}\n\nexport const NativeAuthErrorMessage = {\n extensionError: {\n code: \"ContentError\"\n },\n userSwitch: {\n code: \"user_switch\",\n desc: \"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.\"\n },\n tokensNotFoundInCache: {\n code: \"tokens_not_found_in_internal_memory_cache\",\n desc: \"Tokens not cached in MSAL JS internal memory, please make the WAM request\"\n }\n};\n\nexport class NativeAuthError extends AuthError {\n ext: OSError | undefined;\n\n constructor(errorCode: string, description: string, ext?: OSError) {\n super(errorCode, description);\n\n Object.setPrototypeOf(this, NativeAuthError.prototype);\n this.name = \"NativeAuthError\";\n this.ext = ext;\n }\n\n /**\n * These errors should result in a fallback to the 'standard' browser based auth flow.\n */\n isFatal(): boolean {\n if (this.ext && this.ext.status && (this.ext.status === NativeStatusCode.PERSISTENT_ERROR || this.ext.status === NativeStatusCode.DISABLED)) {\n return true;\n }\n\n switch (this.errorCode) {\n case NativeAuthErrorMessage.extensionError.code:\n return true;\n default:\n return false;\n }\n }\n\n /**\n * Create the appropriate error object based on the WAM status code.\n * @param code\n * @param description\n * @param ext\n * @returns\n */\n static createError(code: string, description: string, ext?: OSError): AuthError {\n if (ext && ext.status) {\n switch (ext.status) {\n case NativeStatusCode.ACCOUNT_UNAVAILABLE:\n return InteractionRequiredAuthError.createNativeAccountUnavailableError();\n case NativeStatusCode.USER_INTERACTION_REQUIRED:\n return new InteractionRequiredAuthError(code, description);\n case NativeStatusCode.USER_CANCEL:\n return BrowserAuthError.createUserCancelledError();\n case NativeStatusCode.NO_NETWORK:\n return BrowserAuthError.createNoNetworkConnectivityError();\n }\n }\n\n return new NativeAuthError(code, description, ext);\n }\n\n /**\n * Creates user switch error when the user chooses a different account in the native broker prompt\n * @returns\n */\n static createUserSwitchError(): NativeAuthError {\n return new NativeAuthError(NativeAuthErrorMessage.userSwitch.code, NativeAuthErrorMessage.userSwitch.desc);\n }\n\n /**\n * Creates a tokens not found error when the internal cache look up fails\n * @returns NativeAuthError: tokensNotFoundInCache\n */\n static createTokensNotFoundInCacheError(): NativeAuthError {\n return new NativeAuthError(NativeAuthErrorMessage.tokensNotFoundInCache.code, NativeAuthErrorMessage.tokensNotFoundInCache.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorityType } from \"./AuthorityType\";\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\nimport { UrlString } from \"../url/UrlString\";\nimport { IUri } from \"../url/IUri\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\nimport { EndpointMetadata, InstanceDiscoveryMetadata } from \"./AuthorityMetadata\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ProtocolMode } from \"./ProtocolMode\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\nimport { AuthorityOptions , AzureCloudInstance } from \"./AuthorityOptions\";\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\nimport { RegionDiscovery } from \"./RegionDiscovery\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\nimport { ImdsOptions } from \"./ImdsOptions\";\nimport { AzureCloudOptions } from \"../config/ClientConfiguration\";\n\n/**\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\n * endpoint. It will store the pertinent config data in this object for use during token calls.\n */\nexport class Authority {\n\n // Canonical authority url string\n private _canonicalAuthority: UrlString;\n // Canonicaly authority url components\n private _canonicalAuthorityUrlComponents: IUri | null;\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Cache Manager to cache network responses\n protected cacheManager: ICacheManager;\n // Protocol mode to construct endpoints\n private authorityOptions: AuthorityOptions;\n // Authority metadata\n private metadata: AuthorityMetadataEntity;\n // Region discovery service\n private regionDiscovery: RegionDiscovery;\n // Region discovery metadata\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\n // Proxy url string\n private proxyUrl: string;\n\n constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string) {\n this.canonicalAuthority = authority;\n this._canonicalAuthority.validateAsUri();\n this.networkInterface = networkInterface;\n this.cacheManager = cacheManager;\n this.authorityOptions = authorityOptions;\n this.regionDiscovery = new RegionDiscovery(networkInterface);\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\n this.proxyUrl = proxyUrl || Constants.EMPTY_STRING;\n }\n\n // See above for AuthorityType\n public get authorityType(): AuthorityType {\n const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\n\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\n return AuthorityType.Adfs;\n }\n\n return AuthorityType.Default;\n }\n\n /**\n * ProtocolMode enum representing the way endpoints are constructed.\n */\n public get protocolMode(): ProtocolMode {\n return this.authorityOptions.protocolMode;\n }\n\n /**\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\n */\n public get options(): AuthorityOptions {\n return this.authorityOptions;\n }\n\n /**\n * A URL that is the authority set by the developer\n */\n public get canonicalAuthority(): string {\n return this._canonicalAuthority.urlString;\n }\n\n /**\n * Sets canonical authority.\n */\n public set canonicalAuthority(url: string) {\n this._canonicalAuthority = new UrlString(url);\n this._canonicalAuthority.validateAsUri();\n this._canonicalAuthorityUrlComponents = null;\n }\n\n /**\n * Get authority components.\n */\n public get canonicalAuthorityUrlComponents(): IUri {\n if (!this._canonicalAuthorityUrlComponents) {\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\n }\n\n return this._canonicalAuthorityUrlComponents;\n }\n\n /**\n * Get hostname and port i.e. login.microsoftonline.com\n */\n public get hostnameAndPort(): string {\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\n }\n\n /**\n * Get tenant for authority.\n */\n public get tenant(): string {\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\n }\n\n /**\n * OAuth /authorize endpoint for requests\n */\n public get authorizationEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.authorization_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth /token endpoint for requests\n */\n public get tokenEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.token_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n public get deviceCodeEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth logout endpoint for requests\n */\n public get endSessionEndpoint(): string {\n if(this.discoveryComplete()) {\n // ROPC policies may not have end_session_endpoint set\n if (!this.metadata.end_session_endpoint) {\n throw ClientAuthError.createLogoutNotSupportedError();\n }\n const endpoint = this.replacePath(this.metadata.end_session_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth issuer for requests\n */\n public get selfSignedJwtAudience(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.issuer);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Jwks_uri for token signing keys\n */\n public get jwksUri(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.jwks_uri);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Replaces tenant in url path with current tenant. Defaults to common.\n * @param urlString\n */\n private replaceTenant(urlString: string): string {\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\n }\n\n /**\n * Replaces path such as tenant or policy with the current tenant or policy.\n * @param urlString\n */\n private replacePath(urlString: string): string {\n let endpoint = urlString;\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\n const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\n\n currentAuthorityParts.forEach((currentPart, index) => {\n const cachedPart = cachedAuthorityParts[index];\n if (currentPart !== cachedPart) {\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\n }\n });\n\n return endpoint;\n }\n\n /**\n * The default open id configuration endpoint for any canonical authority.\n */\n protected get defaultOpenIdConfigurationEndpoint(): string {\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\n }\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\n }\n\n /**\n * Boolean that returns whethr or not tenant discovery has been completed.\n */\n discoveryComplete(): boolean {\n return !!this.metadata;\n }\n\n /**\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\n * and the /authorize, /token and logout endpoints.\n */\n public async resolveEndpointsAsync(): Promise {\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\n if (!metadataEntity) {\n metadataEntity = new AuthorityMetadataEntity();\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n }\n\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\n\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\n // Reset the expiration time unless both values came from a successful cache lookup\n metadataEntity.resetExpiresAt();\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n }\n\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\n this.metadata = metadataEntity;\n }\n\n /**\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\n * @param metadataEntity\n */\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise {\n let metadata = this.getEndpointMetadataFromConfig();\n if (metadata) {\n metadataEntity.updateEndpointMetadata(metadata, false);\n return AuthorityMetadataSource.CONFIG;\n }\n\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\n // No need to update\n return AuthorityMetadataSource.CACHE;\n }\n\n let harcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\n metadata = await this.getEndpointMetadataFromNetwork();\n if (metadata) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n metadata = await this.updateMetadataWithRegionalInformation(metadata);\n }\n\n metadataEntity.updateEndpointMetadata(metadata, true);\n return AuthorityMetadataSource.NETWORK;\n } \n\n if (harcodedMetadata && !this.authorityOptions.skipAuthorityMetadataCache) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n harcodedMetadata = await this.updateMetadataWithRegionalInformation(\n harcodedMetadata\n );\n }\n\n metadataEntity.updateEndpointMetadata(harcodedMetadata, false);\n return AuthorityMetadataSource.HARDCODED_VALUES;\n } else {\n throw ClientAuthError.createUnableToGetOpenidConfigError(\n this.defaultOpenIdConfigurationEndpoint\n );\n }\n }\n\n /**\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\n * @param metadataEntity\n */\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\n }\n\n /**\n * Parse authorityMetadata config option\n */\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\n if (this.authorityOptions.authorityMetadata) {\n try {\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\n } catch (e) {\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\n }\n }\n\n return null;\n }\n\n /**\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\n * \n * @param hasHardcodedMetadata boolean\n */\n private async getEndpointMetadataFromNetwork(): Promise {\n const options: ImdsOptions = {};\n if (this.proxyUrl) {\n options.proxyUrl = this.proxyUrl;\n }\n\n /*\n * TODO: Add a timeout if the authority exists in our library's \n * hardcoded list of metadata\n */\n\n try {\n const response = await this.networkInterface.sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint, options);\n return isOpenIdConfigResponse(response.body) ? response.body : null;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Get OAuth endpoints for common authorities.\n */\n private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null {\n if (this.canonicalAuthority in EndpointMetadata) {\n return EndpointMetadata[this.canonicalAuthority];\n }\n\n return null;\n }\n\n /**\n * Update the retrieved metadata with regional information.\n */\n private async updateMetadataWithRegionalInformation(metadata: OpenIdConfigResponse): Promise {\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration?.environmentRegion, this.regionDiscoveryMetadata, this.proxyUrl);\n\n const azureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\n ? autodetectedRegionName\n : this.authorityOptions.azureRegionConfiguration?.azureRegion;\n\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\n } else {\n if (autodetectedRegionName) {\n this.regionDiscoveryMetadata.region_outcome = (this.authorityOptions.azureRegionConfiguration?.azureRegion === autodetectedRegionName) ?\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\n } else {\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\n }\n }\n\n if (azureRegion) {\n this.regionDiscoveryMetadata.region_used = azureRegion;\n return Authority.replaceWithRegionalInformation(metadata, azureRegion);\n }\n\n return metadata;\n }\n\n /**\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\n * @param cachedMetadata\n * @param newMetadata\n */\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise {\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\n if (metadata) {\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\n return AuthorityMetadataSource.CONFIG;\n }\n\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\n // No need to update\n return AuthorityMetadataSource.CACHE;\n }\n\n const harcodedMetadata = this.getCloudDiscoveryMetadataFromHarcodedValues();\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\n if (metadata) {\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\n return AuthorityMetadataSource.NETWORK;\n } \n \n if (harcodedMetadata && !this.options.skipAuthorityMetadataCache) {\n metadataEntity.updateCloudDiscoveryMetadata(harcodedMetadata, false);\n return AuthorityMetadataSource.HARDCODED_VALUES;\n } else {\n // Metadata could not be obtained from config, cache or network\n throw ClientConfigurationError.createUntrustedAuthorityError();\n }\n }\n\n /**\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\n */\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\n // Check if network response was provided in config\n if (this.authorityOptions.cloudDiscoveryMetadata) {\n try {\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\n if (metadata) {\n return metadata;\n }\n } catch (e) {\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\n }\n }\n\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\n if (this.isInKnownAuthorities()) {\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n }\n\n return null;\n }\n\n /**\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\n * \n * @param hasHardcodedMetadata boolean\n */\n private async getCloudDiscoveryMetadataFromNetwork(): Promise {\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\n const options: ImdsOptions = {};\n if (this.proxyUrl) {\n options.proxyUrl = this.proxyUrl;\n }\n\n /*\n * TODO: Add a timeout if the authority exists in our library's\n * hardcoded list of metadata\n */\n\n let match = null;\n try {\n const response =\n await this.networkInterface.sendGetRequestAsync(\n instanceDiscoveryEndpoint,\n options\n );\n const metadata = isCloudInstanceDiscoveryResponse(response.body)\n ? response.body.metadata\n : [];\n if (metadata.length === 0) {\n // If no metadata is returned, authority is untrusted\n return null;\n }\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\n metadata,\n this.hostnameAndPort\n );\n } catch (e) {\n return null;\n }\n\n if (!match) {\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\n match = Authority.createCloudDiscoveryMetadataFromHost(\n this.hostnameAndPort\n );\n }\n return match;\n }\n\n /**\n * Get cloud discovery metadata for common authorities \n */\n private getCloudDiscoveryMetadataFromHarcodedValues(): CloudDiscoveryMetadata | null {\n if (this.canonicalAuthority in InstanceDiscoveryMetadata) {\n return InstanceDiscoveryMetadata[this.canonicalAuthority];\n }\n\n return null;\n }\n\n /**\n * Helper function to determine if this host is included in the knownAuthorities config option\n */\n private isInKnownAuthorities(): boolean {\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\n });\n\n return matches.length > 0;\n }\n\n /**\n * helper function to populate the authority based on azureCloudOptions\n * @param authorityString\n * @param azureCloudOptions\n */\n static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string {\n let authorityAzureCloudInstance;\n\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\n const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\n }\n\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\n }\n\n /**\n * Creates cloud discovery metadata object from a given host\n * @param host\n */\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\n return {\n preferred_network: host,\n preferred_cache: host,\n aliases: [host]\n };\n }\n\n /**\n * Searches instance discovery network response for the entry that contains the host in the aliases list\n * @param response\n * @param authority\n */\n static getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authority: string): CloudDiscoveryMetadata | null {\n for (let i = 0; i < response.length; i++) {\n const metadata = response[i];\n if (metadata.aliases.indexOf(authority) > -1) {\n return metadata;\n }\n }\n\n return null;\n }\n\n /**\n * helper function to generate environment from authority object\n */\n getPreferredCache(): string {\n if(this.discoveryComplete()) {\n return this.metadata.preferred_cache;\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Returns whether or not the provided host is an alias of this authority instance\n * @param host\n */\n isAlias(host: string): boolean {\n return this.metadata.aliases.indexOf(host) > -1;\n }\n\n /**\n * Checks whether the provided host is that of a public cloud authority\n *\n * @param authority string\n * @returns bool\n */\n static isPublicCloudAuthority(host: string): boolean {\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\n }\n\n /**\n * Rebuild the authority string with the region\n *\n * @param host string\n * @param region string\n */\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\n // Create and validate a Url string object with the initial authority string\n const authorityUrlInstance = new UrlString(host);\n authorityUrlInstance.validateAsUri();\n\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\n\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\n\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\n }\n\n // Include the query string portion of the url\n const url = UrlString.constructAuthorityUriFromObject({\n ...authorityUrlInstance.getUrlComponents(),\n HostNameAndPort: hostNameAndPort\n }).urlString;\n\n // Add the query string if a query string was provided\n if (queryString) return `${url}?${queryString}`;\n\n return url;\n }\n\n /**\n * Replace the endpoints in the metadata object with their regional equivalents.\n *\n * @param metadata OpenIdConfigResponse\n * @param azureRegion string\n */\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, \"allowestsrnonmsi=true\");\n\n if (metadata.end_session_endpoint) {\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\n }\n\n return metadata;\n }\n}\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\n\n/**\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\n */\nexport type CloudInstanceDiscoveryResponse = {\n tenant_discovery_endpoint: string;\n metadata: Array;\n};\n\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\n response.hasOwnProperty(\"metadata\")\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Authority } from \"./Authority\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityOptions } from \"./AuthorityOptions\";\n\nexport class AuthorityFactory {\n\n /**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Also performs endpoint discovery.\n *\n * @param authorityUri\n * @param networkClient\n * @param protocolMode\n */\n static async createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Promise {\n // Initialize authority and perform discovery endpoint check.\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl);\n\n try {\n await acquireTokenAuthority.resolveEndpointsAsync();\n return acquireTokenAuthority;\n } catch (e) {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\n }\n }\n\n /**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Does not perform endpoint discovery.\n *\n * @param authorityUrl\n * @param networkInterface\n * @param protocolMode\n */\n static createInstance(authorityUrl: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Authority {\n // Throw error if authority url is empty\n if (StringUtils.isEmpty(authorityUrl)) {\n throw ClientConfigurationError.createUrlEmptyError();\n }\n\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SERVER_TELEM_CONSTANTS, Separators, CacheOutcome, Constants, RegionDiscoverySources, RegionDiscoveryOutcomes } from \"../../utils/Constants\";\nimport { CacheManager } from \"../../cache/CacheManager\";\nimport { AuthError } from \"../../error/AuthError\";\nimport { ServerTelemetryRequest } from \"./ServerTelemetryRequest\";\nimport { ServerTelemetryEntity } from \"../../cache/entities/ServerTelemetryEntity\";\nimport { StringUtils } from \"../../utils/StringUtils\";\nimport { RegionDiscoveryMetadata } from \"../../authority/RegionDiscoveryMetadata\";\n\nexport class ServerTelemetryManager {\n private cacheManager: CacheManager;\n private apiId: number;\n private correlationId: string;\n private telemetryCacheKey: string;\n private wrapperSKU: String;\n private wrapperVer: String;\n private regionUsed: string | undefined;\n private regionSource: RegionDiscoverySources | undefined;\n private regionOutcome: RegionDiscoveryOutcomes | undefined;\n private cacheOutcome: CacheOutcome = CacheOutcome.NO_CACHE_HIT;\n\n constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager) {\n this.cacheManager = cacheManager;\n this.apiId = telemetryRequest.apiId;\n this.correlationId = telemetryRequest.correlationId;\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\n\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\n }\n\n /**\n * API to add MSER Telemetry to request\n */\n generateCurrentRequestHeaderValue(): string {\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\n const platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\n const requestWithRegionDiscoveryFields = [request, regionDiscoveryFields].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, requestWithRegionDiscoveryFields, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n }\n\n /**\n * API to add MSER Telemetry for the last failed request\n */\n generateLastRequestHeaderValue(): string {\n const lastRequests = this.getLastRequests();\n\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n const failedRequests = lastRequests.failedRequests.slice(0, 2*maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const errorCount = lastRequests.errors.length;\n\n // Indicate whether this header contains all data or partial data\n const overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n }\n\n /**\n * API to cache token failures for MSER data capture\n * @param error\n */\n cacheFailedRequest(error: AuthError): void {\n const lastRequests = this.getLastRequests();\n if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\n // Remove a cached error to make room, first in first out\n lastRequests.failedRequests.shift(); // apiId\n lastRequests.failedRequests.shift(); // correlationId\n lastRequests.errors.shift();\n }\n \n lastRequests.failedRequests.push(this.apiId, this.correlationId);\n\n if (!StringUtils.isEmpty(error.subError)) {\n lastRequests.errors.push(error.subError);\n } else if (!StringUtils.isEmpty(error.errorCode)) {\n lastRequests.errors.push(error.errorCode);\n } else if (!!error && error.toString()) {\n lastRequests.errors.push(error.toString());\n } else {\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\n }\n\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\n\n return;\n }\n\n /**\n * Update server telemetry cache entry by incrementing cache hit counter\n */\n incrementCacheHits(): number {\n const lastRequests = this.getLastRequests();\n lastRequests.cacheHits += 1;\n\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\n return lastRequests.cacheHits;\n }\n\n /**\n * Get the server telemetry entity from cache or initialize a new one\n */\n getLastRequests(): ServerTelemetryEntity {\n const initialValue: ServerTelemetryEntity = new ServerTelemetryEntity();\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey) as ServerTelemetryEntity;\n\n return lastRequests || initialValue;\n }\n\n /**\n * Remove server telemetry cache entry\n */\n clearTelemetryCache(): void {\n const lastRequests = this.getLastRequests();\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n const errorCount = lastRequests.errors.length;\n if (numErrorsFlushed === errorCount) {\n // All errors were sent on last request, clear Telemetry cache\n this.cacheManager.removeItem(this.telemetryCacheKey);\n } else {\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\n const serverTelemEntity = new ServerTelemetryEntity();\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed*2); // failedRequests contains 2 items for each error\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\n\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\n }\n }\n\n /**\n * Returns the maximum number of errors that can be flushed to the server in the next network request\n * @param serverTelemetryEntity\n */\n static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number {\n let i;\n let maxErrors = 0;\n let dataSize = 0;\n const errorCount = serverTelemetryEntity.errors.length;\n for (i = 0; i < errorCount; i++) {\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\n const apiId = serverTelemetryEntity.failedRequests[2*i] || Constants.EMPTY_STRING;\n const correlationId = serverTelemetryEntity.failedRequests[2*i + 1] || Constants.EMPTY_STRING;\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\n\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\n\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\n // Adding this entry to the header would still keep header size below the limit\n maxErrors += 1;\n } else {\n break;\n }\n }\n\n return maxErrors;\n }\n\n /**\n * Get the region discovery fields\n * \n * @returns string\n */\n getRegionDiscoveryFields(): string {\n const regionDiscoveryFields: string[] = [];\n\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\n\n return regionDiscoveryFields.join(\",\");\n }\n\n /**\n * Update the region discovery metadata\n * \n * @param regionDiscoveryMetadata\n * @returns void\n */\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata: RegionDiscoveryMetadata): void {\n this.regionUsed = regionDiscoveryMetadata.region_used;\n this.regionSource = regionDiscoveryMetadata.region_source;\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\n }\n\n /**\n * Set cache outcome \n */\n setCacheOutcome(cacheOutcome: CacheOutcome): void {\n this.cacheOutcome = cacheOutcome;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, INetworkModule, Logger, AuthenticationResult, AccountInfo, AccountEntity, BaseAuthRequest, AuthenticationScheme, UrlString, ServerTelemetryManager, ServerTelemetryRequest, ClientConfigurationError, StringUtils, Authority, AuthorityOptions, AuthorityFactory, IPerformanceClient } from \"@azure/msal-common\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\n\nexport abstract class BaseInteractionClient {\n\n protected config: BrowserConfiguration;\n protected browserStorage: BrowserCacheManager;\n protected browserCrypto: ICrypto;\n protected networkClient: INetworkModule;\n protected logger: Logger;\n protected eventHandler: EventHandler;\n protected navigationClient: INavigationClient;\n protected nativeMessageHandler: NativeMessageHandler | undefined;\n protected correlationId: string;\n protected performanceClient: IPerformanceClient;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n this.config = config;\n this.browserStorage = storageImpl;\n this.browserCrypto = browserCrypto;\n this.networkClient = this.config.system.networkClient;\n this.eventHandler = eventHandler;\n this.navigationClient = navigationClient;\n this.nativeMessageHandler = nativeMessageHandler;\n this.correlationId = correlationId || this.browserCrypto.createNewGuid();\n this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\n this.performanceClient = performanceClient;\n }\n\n abstract acquireToken(request: RedirectRequest|PopupRequest|SsoSilentRequest): Promise;\n\n abstract logout(request: EndSessionRequest): Promise;\n\n protected async clearCacheOnLogout(account?: AccountInfo| null): Promise {\n if (account) {\n if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) {\n this.logger.verbose(\"Setting active account to null\");\n this.browserStorage.setActiveAccount(null);\n }\n // Clear given account.\n try {\n await this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account));\n this.logger.verbose(\"Cleared cache items belonging to the account provided in the logout request.\");\n } catch (error) {\n this.logger.error(\"Account provided in logout request was not found. Local cache unchanged.\");\n }\n } else {\n try {\n this.logger.verbose(\"No account provided in logout request, clearing all cache items.\", this.correlationId);\n // Clear all accounts and tokens\n await this.browserStorage.clear();\n // Clear any stray keys from IndexedDB\n await this.browserCrypto.clearKeystore();\n } catch(e) {\n this.logger.error(\"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\");\n }\n }\n }\n\n /**\n * Initializer function for all request APIs\n * @param request\n */\n protected async initializeBaseRequest(request: Partial): Promise {\n this.logger.verbose(\"Initializing BaseAuthRequest\");\n const authority = request.authority || this.config.auth.authority;\n\n const scopes = [...((request && request.scopes) || [])];\n\n const validatedRequest: BaseAuthRequest = {\n ...request,\n correlationId: this.correlationId,\n authority,\n scopes\n };\n\n // Set authenticationScheme to BEARER if not explicitly set in the request\n if (!validatedRequest.authenticationScheme) {\n validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\n this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\n } else {\n if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) {\n if (!request.sshJwk) {\n throw ClientConfigurationError.createMissingSshJwkError();\n }\n if(!request.sshKid) {\n throw ClientConfigurationError.createMissingSshKidError();\n }\n }\n this.logger.verbose(`Authentication Scheme set to \"${validatedRequest.authenticationScheme}\" as configured in Auth request`);\n }\n\n // Set requested claims hash if claims were requested\n if (request.claims && !StringUtils.isEmpty(request.claims)) {\n validatedRequest.requestedClaimsHash = await this.browserCrypto.hashString(request.claims);\n }\n\n return validatedRequest;\n }\n\n /**\n *\n * Use to get the redirect uri configured in MSAL or null.\n * @param requestRedirectUri\n * @returns Redirect URL\n *\n */\n getRedirectUri(requestRedirectUri?: string): string {\n this.logger.verbose(\"getRedirectUri called\");\n const redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\n }\n\n /**\n *\n * @param apiId\n * @param correlationId\n * @param forceRefresh\n */\n protected initializeServerTelemetryManager(apiId: number, forceRefresh?: boolean): ServerTelemetryManager {\n this.logger.verbose(\"initializeServerTelemetryManager called\");\n const telemetryPayload: ServerTelemetryRequest = {\n clientId: this.config.auth.clientId,\n correlationId: this.correlationId,\n apiId: apiId,\n forceRefresh: forceRefresh || false,\n wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\n wrapperVer: this.browserStorage.getWrapperMetadata()[1]\n };\n\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getDiscoveredAuthority(requestAuthority?: string): Promise {\n this.logger.verbose(\"getDiscoveredAuthority called\");\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata\n };\n\n if (requestAuthority) {\n this.logger.verbose(\"Creating discovered authority with request authority\");\n return await AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions);\n }\n\n this.logger.verbose(\"Creating discovered authority with configured authority\");\n return await AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\n/**\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\n */\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\n /**\n * Generates an auth code request tied to the url request.\n * @param request\n */\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise {\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\n\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...request,\n redirectUri: request.redirectUri,\n code: Constants.EMPTY_STRING,\n codeVerifier: generatedPkceParams.verifier\n };\n\n request.codeChallenge = generatedPkceParams.challenge;\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\n\n return authCodeRequest;\n }\n\n /**\n * Initializer for the logout request.\n * @param logoutRequest\n */\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\n\n const validLogoutRequest: CommonEndSessionRequest = {\n correlationId: this.correlationId || this.browserCrypto.createNewGuid(),\n ...logoutRequest\n };\n\n /**\n * Set logout_hint to be login_hint from ID Token Claims if present\n * and logoutHint attribute wasn't manually set in logout request\n */\n if (logoutRequest) {\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\n if (!logoutRequest.logoutHint) {\n if(logoutRequest.account) {\n const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\n if (logoutHint) {\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\n validLogoutRequest.logoutHint = logoutHint;\n }\n } else {\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\n }\n } else {\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\n }\n } else {\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\n }\n\n /*\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\n * Otherwise, use passed uri, config, or current page.\n */\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else if (this.config.auth.postLogoutRedirectUri === null) {\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\n } else if (this.config.auth.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else {\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\n }\n } else {\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\n }\n\n return validLogoutRequest;\n }\n\n /**\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\n * logout_hint in end session request.\n * @param account\n */\n protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null {\n const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\n if (idTokenClaims) {\n if (idTokenClaims.login_hint) {\n return idTokenClaims.login_hint;\n } else {\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\n }\n } else {\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\n }\n\n return null;\n }\n\n /**\n * Creates an Authorization Code Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\n return new AuthorizationCodeClient(clientConfig);\n }\n\n /**\n * Creates a Client Configuration object with the given request authority, or the default authority.\n * @param serverTelemetryManager\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise {\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\n\n return {\n authOptions: {\n clientId: this.config.auth.clientId,\n authority: discoveredAuthority,\n clientCapabilities: this.config.auth.clientCapabilities\n },\n systemOptions: {\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\n preventCorsPreflight: true\n },\n loggerOptions: {\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\n logLevel: this.config.system.loggerOptions.logLevel,\n correlationId: this.correlationId\n },\n cryptoInterface: this.browserCrypto,\n networkInterface: this.networkClient,\n storageInterface: this.browserStorage,\n serverTelemetryManager: serverTelemetryManager,\n libraryInfo: {\n sku: BrowserConstants.MSAL_SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING\n },\n telemetry: this.config.telemetry\n };\n }\n\n /**\n * @param hash\n * @param interactionType\n */\n protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string {\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\n if (!serverParams.state) {\n throw BrowserAuthError.createHashDoesNotContainStateError();\n }\n\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\n if (!platformStateObj) {\n throw BrowserAuthError.createUnableToParseStateError();\n }\n\n if (platformStateObj.interactionType !== interactionType) {\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\n }\n\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\n return serverParams.state;\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise {\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\n const getAuthorityMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache\n };\n\n // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\n const userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\n\n // fall back to the authority from config\n const builtAuthority = Authority.generateAuthority( userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\n return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)\n .then((result: Authority) => {\n getAuthorityMeasurement.endMeasurement({\n success: true\n });\n\n return result;\n })\n .catch((error:AuthError) => {\n getAuthorityMeasurement.endMeasurement({\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n success: false\n });\n\n throw error;\n });\n }\n\n /**\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\n * @param request\n * @param interactionType\n */\n protected async initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): Promise {\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\n const redirectUri = this.getRedirectUri(request.redirectUri);\n const browserState: BrowserStateObject = {\n interactionType: interactionType\n };\n const state = ProtocolUtils.setRequestState(\n this.browserCrypto,\n (request && request.state)|| Constants.EMPTY_STRING,\n browserState\n );\n\n const validatedRequest: AuthorizationUrlRequest = {\n ...await this.initializeBaseRequest(request),\n redirectUri: redirectUri,\n state: state,\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\n responseMode: ResponseMode.FRAGMENT\n };\n\n const account = request.account || this.browserStorage.getActiveAccount();\n if (account) {\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\n this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);\n validatedRequest.account = account;\n }\n\n // Check for ADAL/MSAL v1 SSO\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\n if (legacyLoginHint) {\n validatedRequest.loginHint = legacyLoginHint;\n }\n }\n\n return validatedRequest;\n }\n}\n","import React, { Component } from 'react';\r\n// Keeps track of how many requests are currently active.\r\nexport let activeRequests = 0;\r\n/*\r\n Store a reference to the ProgressBar so 'progressBarFetch' can\r\n move the ProgressBar to the 'init' state.\r\n*/\r\nexport let progressBar;\r\n\r\nexport class ProgressBar extends Component {\r\n\r\n constructor() {\r\n super(...arguments);\r\n this.state = {\r\n mode: 'hibernate',\r\n };\r\n }\r\n // Set the reference to progressBar\r\n componentDidMount() {\r\n progressBar = this;\r\n }\r\n // Only render if the mode changes\r\n shouldComponentUpdate(nextProps, nextState) {\r\n return nextState.mode !== this.state.mode;\r\n }\r\n /**\r\n * The ProgressBar continuously checks the status of how many\r\n * requests are currently active, and will accordingly move\r\n * to another state.\r\n *\r\n * @memberof ProgressBar\r\n */\r\n tick() {\r\n const mode = this.state.mode;\r\n if (mode === 'complete') {\r\n //console.log('complete: moving to hibernate after 1 second to allow the close animation to complete');\r\n setTimeout(() => {\r\n this.setState({ mode: 'hibernate' });\r\n }, 5);\r\n }\r\n else if (mode === 'active') {\r\n if (activeRequests === 0) {\r\n //console.log('active: there are no more pending request move to complete if there are still no pending requests after 200 milliseconds');\r\n setTimeout(() => {\r\n if (activeRequests === 0) {\r\n //console.log('active: even after 200 milliseconds there are no more pending request, moving to complete');\r\n this.moveToMode('complete');\r\n }\r\n else {\r\n //console.log('active: after 200 milliseconds another request was pending instead of going to complete will stay active.');\r\n this.tick();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n //console.log('active: there are still pending requests staying active');\r\n this.tickWithDelay();\r\n }\r\n }\r\n else {\r\n // mode === 'init'\r\n if (activeRequests > 0) {\r\n //console.log('init: there are pending request move to active if there are still pending requests after 100 milliseconds');\r\n setTimeout(() => {\r\n if (activeRequests > 0) {\r\n //console.log('init: even after 100 milliseconds there are pending request, moving to active to trigger animation');\r\n this.moveToMode('active');\r\n }\r\n else {\r\n //console.log('init: after 100 milliseconds there were no pending request, the requests was so fast that showing an animation is unnecessary, move to hibernate');\r\n this.setState({ mode: 'hibernate' });\r\n }\r\n }, 50);\r\n }\r\n else {\r\n //console.log('init: no pending requests move to hibernate');\r\n this.setState({ mode: 'hibernate' });\r\n }\r\n }\r\n }\r\n moveToInit() {\r\n if (this.state.mode === 'hibernate') {\r\n this.moveToMode('init');\r\n }\r\n }\r\n moveToMode(mode) {\r\n this.setState({ mode }, () => {\r\n this.tick();\r\n });\r\n }\r\n tickWithDelay() {\r\n setTimeout(() => {\r\n this.tick();\r\n }, 50);\r\n }\r\n render() {\r\n const mode = this.state.mode;\r\n if (mode === 'hibernate') {\r\n return null;\r\n }\r\n if (window.self !== window.top)\r\n return null;\r\n const width = mode === 'complete' ? 100 : mode === 'init' ? 0 : 80;\r\n const animationSpeed = mode === 'complete' ? 0.8 : 30;\r\n const transition = mode === 'init' ? '' : `width ${animationSpeed}s ease-in`;\r\n const style = Object.assign({ position: 'absolute', top: '0', zIndex: 9000, backgroundColor: '#e3f8ff', height: '4px', transition, width: `${width}%` }, this.props.style);\r\n return React.createElement(\"div\", { className: \"react-fetch-progress-bar\", style: style });\r\n }\r\n}\r\n// We store the fetch here as provided by the user.\r\nlet originalFetch;\r\nexport function setOriginalFetch(nextOriginalFetch) {\r\n originalFetch = nextOriginalFetch;\r\n}\r\n/**\r\n * Wrapper around fetch: https://developer.mozilla.org/en/docs/Web/API/Fetch_API\r\n *\r\n * It is used to monitor the number of requests which are currently\r\n * active. Each time a requests is made it increases the number of\r\n * requests, each time a request is finished, the number is decreased.\r\n *\r\n * @export\r\n * @param {string} url The url you want to send a request to.\r\n * @param {RequestOptions} [options] The options you want to pass for that request\r\n * @returns {Promise} A Promise which returns a Response\r\n */\r\nexport async function progressBarFetch(url, options) {\r\n activeRequests += 1;\r\n if (progressBar) {\r\n progressBar.moveToInit();\r\n }\r\n try {\r\n const response = await originalFetch(url, options);\r\n activeRequests -= 1;\r\n return response;\r\n }\r\n catch (error) {\r\n activeRequests -= 1;\r\n return Promise.reject(error);\r\n }\r\n}\r\n/**\r\n * Sets the number of activeRequests manually.\r\n *\r\n * This method exists for testing purposes, so you should not\r\n * use it.\r\n *\r\n * @export\r\n * @param {number} nextActiveRequest\r\n */\r\nexport function setActiveRequests(nextActiveRequest) {\r\n activeRequests = nextActiveRequest;\r\n}","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\nimport { BaseClient } from \"./BaseClient\";\nimport { CommonRefreshTokenRequest } from \"../request/CommonRefreshTokenRequest\";\nimport { Authority } from \"../authority/Authority\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\nimport { GrantType, AuthenticationScheme, Errors } from \"../utils/Constants\";\nimport { ResponseHandler } from \"../response/ResponseHandler\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { ServerError } from \"../error/ServerError\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { UrlString } from \"../url/UrlString\";\nimport { CcsCredentialType } from \"../account/CcsCredential\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\nimport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from \"../error/InteractionRequiredAuthError\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\"; \nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\n\n/**\n * OAuth2.0 refresh token client\n */\nexport class RefreshTokenClient extends BaseClient {\n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\n super(configuration,performanceClient);\n }\n\n public async acquireToken(request: CommonRefreshTokenRequest): Promise {\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await this.executeTokenRequest(request, this.authority);\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n\n responseHandler.validateTokenResponse(response.body);\n return responseHandler.handleServerTokenResponse(\n response.body,\n this.authority,\n reqTimestamp,\n request,\n undefined,\n undefined,\n true,\n request.forceCache\n );\n }\n\n /**\n * Gets cached refresh token and attaches to request, then calls acquireToken API\n * @param request\n */\n public async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise {\n // Cannot renew token if no request object is given.\n if (!request) {\n throw ClientConfigurationError.createEmptyTokenRequestError();\n }\n\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n if (!request.account) {\n throw ClientAuthError.createNoAccountInSilentRequestError();\n }\n\n // try checking if FOCI is enabled for the given application\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, this.config.authOptions.clientId);\n\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\n if (isFOCI) {\n try {\n return this.acquireTokenWithCachedRefreshToken(request, true);\n } catch (e) {\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code;\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\n\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\n return this.acquireTokenWithCachedRefreshToken(request, false);\n // throw in all other cases\n } else {\n throw e;\n }\n }\n }\n\n // fall back to application refresh token acquisition\n return this.acquireTokenWithCachedRefreshToken(request, false);\n }\n\n /**\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\n * @param request\n */\n private async acquireTokenWithCachedRefreshToken(request: CommonSilentFlowRequest, foci: boolean) {\n // fetches family RT or application RT based on FOCI value\n const refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\n\n // no refresh Token\n if (!refreshToken) {\n throw InteractionRequiredAuthError.createNoTokensFoundError();\n }\n\n const refreshTokenRequest: CommonRefreshTokenRequest = {\n ...request,\n refreshToken: refreshToken.secret,\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\n ccsCredential: {\n credential: request.account.homeAccountId,\n type: CcsCredentialType.HOME_ACCOUNT_ID\n }\n };\n\n return this.acquireToken(refreshTokenRequest);\n }\n\n /**\n * Constructs the network message and makes a NW call to the underlying secure token service\n * @param request\n * @param authority\n */\n private async executeTokenRequest(request: CommonRefreshTokenRequest, authority: Authority)\n : Promise> {\n const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); \n const requestBody = await this.createTokenRequestBody(request);\n const queryParameters = this.createTokenQueryParameters(request);\n const headers: Record = this.createTokenRequestHeaders(request.ccsCredential);\n const thumbprint: RequestThumbprint = {\n clientId: this.config.authOptions.clientId,\n authority: authority.canonicalAuthority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid\n };\n\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParameters);\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)\n .then((result) =>{\n acquireTokenMeasurement?.endMeasurement({\n success: true\n });\n return result;\n })\n .catch((error) =>{\n acquireTokenMeasurement?.endMeasurement({\n success: false\n });\n throw error;\n });\n }\n\n /**\n * Creates query string for the /token request\n * @param request\n */\n private createTokenQueryParameters(request: CommonRefreshTokenRequest): string {\n const parameterBuilder = new RequestParameterBuilder();\n\n if (request.tokenQueryParameters) {\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * Helper function to create the token request body\n * @param request\n */\n private async createTokenRequestBody(request: CommonRefreshTokenRequest): Promise {\n const correlationId = request.correlationId;\n const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.BaseClientCreateTokenRequestHeaders, correlationId); \n const parameterBuilder = new RequestParameterBuilder();\n\n parameterBuilder.addClientId(this.config.authOptions.clientId);\n\n parameterBuilder.addScopes(request.scopes);\n\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\n\n parameterBuilder.addClientInfo();\n\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n parameterBuilder.addThrottling();\n\n if (this.serverTelemetryManager) {\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n }\n \n parameterBuilder.addCorrelationId(correlationId);\n\n parameterBuilder.addRefreshToken(request.refreshToken);\n\n if (this.config.clientCredentials.clientSecret) {\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n }\n\n if (this.config.clientCredentials.clientAssertion) {\n const clientAssertion = this.config.clientCredentials.clientAssertion;\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n }\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n const reqCnfData = await popTokenGenerator.generateCnf(request);\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n if (request.sshJwk) {\n parameterBuilder.addSshJwk(request.sshJwk);\n } else {\n acquireTokenMeasurement?.endMeasurement({\n success: false\n });\n throw ClientConfigurationError.createMissingSshJwkError();\n }\n }\n\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n }\n\n if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) {\n switch (request.ccsCredential.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n }\n break;\n case CcsCredentialType.UPN:\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\n break;\n }\n }\n acquireTokenMeasurement?.endMeasurement({\n success: true\n });\n return parameterBuilder.createQueryString();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient\";\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { RefreshTokenClient } from \"./RefreshTokenClient\";\nimport { ClientAuthError, ClientAuthErrorMessage } from \"../error/ClientAuthError\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ResponseHandler } from \"../response/ResponseHandler\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\nimport { CacheOutcome } from \"../utils/Constants\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\n\nexport class SilentFlowClient extends BaseClient {\n \n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\n super(configuration,performanceClient);\n }\n\n /**\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\n * the given token and returns the renewed token\n * @param request\n */\n async acquireToken(request: CommonSilentFlowRequest): Promise {\n try {\n return await this.acquireCachedToken(request);\n } catch (e) {\n if (e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\n const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\n return refreshTokenClient.acquireTokenByRefreshToken(request);\n } else {\n throw e;\n }\n }\n }\n\n /**\n * Retrieves token from cache or throws an error if it must be refreshed.\n * @param request\n */\n async acquireCachedToken(request: CommonSilentFlowRequest): Promise {\n // Cannot renew token if no request object is given.\n if (!request) {\n throw ClientConfigurationError.createEmptyTokenRequestError();\n }\n\n if (request.forceRefresh) {\n // Must refresh due to present force_refresh flag.\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.FORCE_REFRESH);\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true.\");\n throw ClientAuthError.createRefreshRequiredError();\n }\n\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n if (!request.account) {\n throw ClientAuthError.createNoAccountInSilentRequestError();\n }\n\n const environment = request.authority || this.authority.getPreferredCache();\n\n const cacheRecord = this.cacheManager.readCacheRecord(request.account, this.config.authOptions.clientId, request, environment);\n\n if (!cacheRecord.accessToken) {\n // Must refresh due to non-existent access_token.\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\n throw ClientAuthError.createRefreshRequiredError();\n } else if (\n TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||\n TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)\n ) {\n // Must refresh due to expired access_token.\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\n this.logger.info(`SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`);\n throw ClientAuthError.createRefreshRequiredError();\n } else if (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)) {\n // Must refresh due to the refresh_in value.\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.REFRESH_CACHED_ACCESS_TOKEN);\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'.\");\n throw ClientAuthError.createRefreshRequiredError();\n }\n\n if (this.config.serverTelemetryManager) {\n this.config.serverTelemetryManager.incrementCacheHits();\n }\n\n return await this.generateResultFromCacheRecord(cacheRecord, request);\n }\n\n /**\n * Helper function to build response object from the CacheRecord\n * @param cacheRecord\n */\n private async generateResultFromCacheRecord(cacheRecord: CacheRecord, request: CommonSilentFlowRequest): Promise {\n let idTokenObj: AuthToken | undefined;\n if (cacheRecord.idToken) {\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\n }\n return await ResponseHandler.generateAuthenticationResult(\n this.cryptoUtils,\n this.authority,\n cacheRecord,\n true,\n request,\n idTokenObj\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, SilentFlowClient, ServerTelemetryManager, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError} from \"@azure/msal-common\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { ApiId } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\n\nexport class SilentCacheClient extends StandardInteractionClient {\n /**\n * Returns unexpired tokens from the cache, if available\n * @param silentRequest\n */\n async acquireToken(silentRequest: CommonSilentFlowRequest): Promise {\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId);\n // Telemetry manager only used to increment cacheHits here\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\n\n const silentAuthClient = await this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Silent auth client created\");\n\n try {\n const cachedToken = await silentAuthClient.acquireCachedToken(silentRequest);\n\n acquireTokenMeasurement.endMeasurement({\n success: true,\n fromCache: true\n });\n return cachedToken;\n } catch (error) {\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code) {\n this.logger.verbose(\"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\");\n }\n acquireTokenMeasurement.endMeasurement({\n errorCode: error instanceof AuthError && error.errorCode || undefined,\n subErrorCode: error instanceof AuthError && error.subError || undefined,\n success: false\n });\n throw error;\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Creates an Silent Flow Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createSilentFlowClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\n return new SilentFlowClient(clientConfig, this.performanceClient);\n }\n\n async initializeSilentRequest(request: SilentRequest, account: AccountInfo): Promise {\n return {\n ...request,\n ...await this.initializeBaseRequest(request),\n account: account,\n forceRefresh: request.forceRefresh || false\n };\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, Logger, ICrypto, PromptValue, AuthToken, Constants, AccountEntity, AuthorityType, ScopeSet, TimeUtils, AuthenticationScheme, UrlString, OIDC_DEFAULT_SCOPES, PopTokenGenerator, SignedHttpRequestParameters, IPerformanceClient, PerformanceEvents, IdTokenEntity, AccessTokenEntity, ClientAuthError, AuthError, CommonSilentFlowRequest, AccountInfo } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { NativeExtensionMethod, ApiId, TemporaryCacheKeys, NativeConstants } from \"../utils/BrowserConstants\";\nimport { NativeExtensionRequestBody, NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\nimport { MATS, NativeResponse } from \"../broker/nativeBroker/NativeResponse\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { SilentCacheClient } from \"./SilentCacheClient\";\n\nexport class NativeInteractionClient extends BaseInteractionClient {\n protected apiId: ApiId;\n protected accountId: string;\n protected nativeMessageHandler: NativeMessageHandler;\n protected silentCacheClient: SilentCacheClient;\n protected nativeStorageManager: BrowserCacheManager;\n\n constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, nativeStorageImpl: BrowserCacheManager, correlationId?: string) {\n super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\n this.apiId = apiId;\n this.accountId = accountId;\n this.nativeMessageHandler = provider;\n this.nativeStorageManager = nativeStorageImpl;\n this.silentCacheClient = new SilentCacheClient(config, this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\n }\n\n /**\n * Acquire token from native platform via browser extension\n * @param request\n */\n async acquireToken(request: PopupRequest|SilentRequest|SsoSilentRequest): Promise {\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\n\n // start the perf measurement\n const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\n const reqTimestamp = TimeUtils.nowSeconds();\n\n // initialize native request\n const nativeRequest = await this.initializeNativeRequest(request);\n\n // check if the tokens can be retrieved from internal cache\n try {\n const result = await this.acquireTokensFromCache(this.accountId, nativeRequest);\n nativeATMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true,\n fromCache: true\n });\n return result;\n } catch (e) {\n // continue with a native call for any and all errors\n this.logger.info(\"MSAL internal Cache does not contain tokens, proceed to make a native call\");\n }\n\n // fall back to native calls\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeRequest\n };\n\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n const validatedResponse: NativeResponse = this.validateNativeResponse(response);\n\n return this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\n .then((result: AuthenticationResult) => {\n nativeATMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true\n });\n return result;\n })\n .catch((error: AuthError) => {\n nativeATMeasurement.endMeasurement({\n success: false,\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n isNativeBroker: true\n });\n throw error;\n });\n }\n\n /**\n * Creates silent flow request\n * @param request\n * @param cachedAccount\n * @returns CommonSilentFlowRequest\n */\n private createSilentCacheRequest(request: NativeTokenRequest, cachedAccount: AccountInfo): CommonSilentFlowRequest {\n return {\n authority: request.authority,\n correlationId: this.correlationId,\n scopes: ScopeSet.fromString(request.scope).asArray(),\n account: cachedAccount,\n forceRefresh: false,\n };\n }\n\n /**\n * Fetches the tokens from the cache if un-expired\n * @param nativeAccountId\n * @param request\n * @returns authenticationResult\n */\n protected async acquireTokensFromCache(nativeAccountId: string, request: NativeTokenRequest): Promise {\n\n // fetch the account from in-memory cache\n const accountEntity = this.browserStorage.readAccountFromCacheWithNativeAccountId(nativeAccountId);\n if (!accountEntity) {\n throw ClientAuthError.createNoAccountFoundError();\n }\n const account = accountEntity.getAccountInfo();\n\n // leverage silent flow for cached tokens retrieval\n try {\n const silentRequest = this.createSilentCacheRequest(request, account);\n const result = await this.silentCacheClient.acquireToken(silentRequest);\n return result;\n } catch (e) {\n throw e;\n }\n }\n\n /**\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\n * @param request\n */\n async acquireTokenRedirect(request: RedirectRequest): Promise {\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\n const nativeRequest = await this.initializeNativeRequest(request);\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeRequest\n };\n\n try {\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n } catch (e) {\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\n if (e instanceof NativeAuthError && e.isFatal()) {\n throw e;\n }\n }\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\n\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false\n };\n const redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\n await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again\n }\n\n /**\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\n */\n async handleRedirectPromise(): Promise {\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\n if (!this.browserStorage.isInteractionInProgress(true)) {\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\n return null;\n }\n\n const cachedRequest = this.browserStorage.getCachedNativeRequest();\n if (!cachedRequest) {\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\n return null;\n }\n\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: cachedRequest\n };\n\n const reqTimestamp = TimeUtils.nowSeconds();\n\n try {\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n const result = this.handleNativeResponse(response as NativeResponse, cachedRequest, reqTimestamp);\n this.browserStorage.setInteractionInProgress(false);\n return result;\n } catch (e) {\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n }\n }\n\n /**\n * Logout from native platform via browser extension\n * @param request\n */\n logout(): Promise {\n this.logger.trace(\"NativeInteractionClient - logout called.\");\n return Promise.reject(\"Logout not implemented yet\");\n }\n\n /**\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\n * @param response\n * @param request\n * @param reqTimestamp\n */\n protected async handleNativeResponse(response: NativeResponse, request: NativeTokenRequest, reqTimestamp: number): Promise {\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\n\n if (response.account.id !== request.accountId) {\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\n throw NativeAuthError.createUserSwitchError();\n }\n\n // create an idToken object (not entity)\n const idTokenObj = new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\n\n // Get the preferred_cache domain for the given authority\n const authority = await this.getDiscoveredAuthority(request.authority);\n const authorityPreferredCache = authority.getPreferredCache();\n\n // Save account in browser storage\n const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\n const accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, authorityPreferredCache, response.account.id);\n this.browserStorage.setAccount(accountEntity);\n\n // If scopes not returned in server response, use request scopes\n const responseScopes = response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\n\n const accountProperties = response.account.properties || {};\n const uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\n const tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\n\n // This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT is still received, SHR is calculated locally\n let responseAccessToken;\n let responseTokenType: AuthenticationScheme = AuthenticationScheme.BEARER;\n switch (request.tokenType) {\n case AuthenticationScheme.POP: {\n // Set the token type to POP in the response\n responseTokenType = AuthenticationScheme.POP;\n\n // Check if native layer returned an SHR token\n if (response.shr) {\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\n responseAccessToken = response.shr;\n break;\n }\n\n // Generate SHR in msal js if WAM does not compute it when POP is enabled\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce\n };\n\n /**\n * KeyID must be present in the native request from when the PoP key was generated in order for\n * PopTokenGenerator to query the full key for signing\n */\n if (!request.keyId) {\n throw ClientAuthError.createKeyIdMissingError();\n }\n\n responseAccessToken = await popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters);\n break;\n\n }\n // assign the access token to the response for all non-POP cases (Should be Bearer only today)\n default: {\n responseAccessToken = response.access_token;\n }\n }\n\n const mats = this.getMATSFromResponse(response);\n\n const result: AuthenticationResult = {\n authority: authority.canonicalAuthority,\n uniqueId: uid,\n tenantId: tid,\n scopes: responseScopes.asArray(),\n account: accountEntity.getAccountInfo(),\n idToken: response.id_token,\n idTokenClaims: idTokenObj.claims,\n accessToken: responseAccessToken,\n fromCache: mats ? this.isResponseFromCache(mats) : false,\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\n tokenType: responseTokenType,\n correlationId: this.correlationId,\n state: response.state,\n fromNativeBroker: true\n };\n\n // cache idToken in inmemory storage\n const idTokenEntity = IdTokenEntity.createIdTokenEntity(\n homeAccountIdentifier,\n request.authority,\n response.id_token || Constants.EMPTY_STRING,\n request.clientId,\n idTokenObj.claims.tid || Constants.EMPTY_STRING,\n );\n this.nativeStorageManager.setIdTokenCredential(idTokenEntity);\n\n // cache accessToken in inmemory storage\n const expiresIn: number = (responseTokenType === AuthenticationScheme.POP)\n ? Constants.SHR_NONCE_VALIDITY\n : (\n typeof response.expires_in === \"string\"\n ? parseInt(response.expires_in, 10)\n : response.expires_in\n ) || 0;\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\n const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(\n homeAccountIdentifier,\n request.authority,\n responseAccessToken,\n request.clientId,\n tid,\n responseScopes.printScopes(),\n tokenExpirationSeconds,\n 0,\n this.browserCrypto\n );\n this.nativeStorageManager.setAccessTokenCredential(accessTokenEntity);\n\n // Remove any existing cached tokens for this account in browser storage\n this.browserStorage.removeAccountContext(accountEntity).catch((e) => {\n this.logger.error(`Error occurred while removing account context from browser storage. ${e}`);\n });\n\n return result;\n }\n\n /**\n * Validates native platform response before processing\n * @param response\n */\n private validateNativeResponse(response: object): NativeResponse {\n if (\n response.hasOwnProperty(\"access_token\") &&\n response.hasOwnProperty(\"id_token\") &&\n response.hasOwnProperty(\"client_info\") &&\n response.hasOwnProperty(\"account\") &&\n response.hasOwnProperty(\"scope\") &&\n response.hasOwnProperty(\"expires_in\")\n ) {\n return response as NativeResponse;\n } else {\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\n }\n }\n\n /**\n * Gets MATS telemetry from native response\n * @param response\n * @returns\n */\n private getMATSFromResponse(response: NativeResponse): MATS|null {\n if (response.properties.MATS) {\n try {\n return JSON.parse(response.properties.MATS);\n } catch (e) {\n this.logger.error(\"NativeInteractionClient - Error parsing MATS telemetry, returning null instead\");\n }\n }\n\n return null;\n }\n\n /**\n * Returns whether or not response came from native cache\n * @param response\n * @returns\n */\n private isResponseFromCache(mats: MATS): boolean {\n if (typeof mats.is_cached === \"undefined\") {\n this.logger.verbose(\"NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.\");\n return false;\n }\n\n return !!mats.is_cached;\n }\n\n /**\n * Translates developer provided request object into NativeRequest object\n * @param request\n */\n protected async initializeNativeRequest(request: PopupRequest|SsoSilentRequest): Promise {\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\n\n const authority = request.authority || this.config.auth.authority;\n const canonicalAuthority = new UrlString(authority);\n canonicalAuthority.validateAsUri();\n\n // scopes are expected to be received by the native broker as \"scope\" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here.\n const { scopes, ...remainingProperties } = request; \n const scopeSet = new ScopeSet(scopes || []);\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\n\n const getPrompt = () => {\n // If request is silent, prompt is always none\n switch (this.apiId) {\n case ApiId.ssoSilent:\n case ApiId.acquireTokenSilent_silentFlow:\n this.logger.trace(\"initializeNativeRequest: silent request sets prompt to none\");\n return PromptValue.NONE;\n default:\n break;\n }\n\n // Prompt not provided, request may proceed and native broker decides if it needs to prompt\n if (!request.prompt) {\n this.logger.trace(\"initializeNativeRequest: prompt was not provided\");\n return undefined;\n }\n\n // If request is interactive, check if prompt provided is allowed to go directly to native broker\n switch (request.prompt) {\n case PromptValue.NONE:\n case PromptValue.CONSENT:\n case PromptValue.LOGIN:\n this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\n return request.prompt;\n default:\n this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`);\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\n }\n };\n \n const validatedRequest: NativeTokenRequest = {\n ...remainingProperties,\n accountId: this.accountId,\n clientId: this.config.auth.clientId,\n authority: canonicalAuthority.urlString,\n scope: scopeSet.printScopes(),\n redirectUri: this.getRedirectUri(request.redirectUri),\n prompt: getPrompt(),\n correlationId: this.correlationId,\n tokenType: request.authenticationScheme,\n windowTitleSubstring: document.title,\n extraParameters: {\n ...request.extraQueryParameters,\n ...request.tokenQueryParameters,\n telemetry: NativeConstants.MATS_TELEMETRY\n },\n extendedExpiryToken: false // Make this configurable?\n };\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n\n // add POP request type\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestUri: request.resourceRequestUri,\n resourceRequestMethod: request.resourceRequestMethod,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce\n };\n\n const popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n const reqCnfData = await popTokenGenerator.generateCnf(shrParameters);\n\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\n validatedRequest.reqCnf = reqCnfData.reqCnfHash;\n validatedRequest.keyId = reqCnfData.kid;\n }\n\n return validatedRequest;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NativeConstants, NativeExtensionMethod } from \"../../utils/BrowserConstants\";\nimport { Logger, AuthError, AuthenticationScheme } from \"@azure/msal-common\";\nimport { NativeExtensionRequest, NativeExtensionRequestBody } from \"./NativeRequest\";\nimport { NativeAuthError } from \"../../error/NativeAuthError\";\nimport { BrowserAuthError } from \"../../error/BrowserAuthError\";\nimport { BrowserConfiguration } from \"../../config/Configuration\";\n\ntype ResponseResolvers = {\n resolve: (value:T|PromiseLike) => void;\n reject: (value:AuthError|Error|PromiseLike|PromiseLike) => void;\n};\n\nexport class NativeMessageHandler {\n private extensionId: string | undefined;\n private logger: Logger;\n private handshakeTimeoutMs: number;\n private responseId: number;\n private timeoutId: number | undefined;\n private resolvers: Map>;\n private handshakeResolvers: Map>;\n private messageChannel: MessageChannel;\n private windowListener: (event: MessageEvent) => void;\n\n constructor(logger: Logger, handshakeTimeoutMs: number, extensionId?: string) {\n this.logger = logger;\n this.handshakeTimeoutMs = handshakeTimeoutMs;\n this.extensionId = extensionId;\n this.resolvers = new Map(); // Used for non-handshake messages\n this.handshakeResolvers = new Map(); // Used for handshake messages\n this.responseId = 0;\n this.messageChannel = new MessageChannel();\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\n }\n\n /**\n * Sends a given message to the extension and resolves with the extension response\n * @param body \n */\n async sendMessage(body: NativeExtensionRequestBody): Promise {\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\n const req: NativeExtensionRequest = {\n channel: NativeConstants.CHANNEL_ID,\n extensionId: this.extensionId,\n responseId: this.responseId++,\n body: body\n };\n\n this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\n this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(req)}`);\n this.messageChannel.port1.postMessage(req);\n\n return new Promise((resolve, reject) => {\n this.resolvers.set(req.responseId, {resolve, reject});\n });\n }\n\n /**\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\n * @param logger \n * @param handshakeTimeoutMs\n */\n static async createProvider(logger: Logger, handshakeTimeoutMs: number): Promise {\n logger.trace(\"NativeMessageHandler - createProvider called.\");\n try {\n const preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, NativeConstants.PREFERRED_EXTENSION_ID);\n await preferredProvider.sendHandshakeRequest();\n return preferredProvider;\n } catch (e) {\n // If preferred extension fails for whatever reason, fallback to using any installed extension\n const backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs);\n await backupProvider.sendHandshakeRequest();\n return backupProvider;\n }\n }\n\n /**\n * Send handshake request helper.\n */\n private async sendHandshakeRequest(): Promise {\n this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\n // Register this event listener before sending handshake\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\n\n const req: NativeExtensionRequest = {\n channel: NativeConstants.CHANNEL_ID,\n extensionId: this.extensionId,\n responseId: this.responseId++,\n\n body: {\n method: NativeExtensionMethod.HandshakeRequest\n }\n };\n\n this.messageChannel.port1.onmessage = (event) => {\n this.onChannelMessage(event);\n };\n\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\n\n return new Promise((resolve, reject) => {\n this.handshakeResolvers.set(req.responseId, {resolve, reject});\n this.timeoutId = window.setTimeout(() => {\n /*\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\n */\n window.removeEventListener(\"message\", this.windowListener, false);\n this.messageChannel.port1.close();\n this.messageChannel.port2.close();\n reject(BrowserAuthError.createNativeHandshakeTimeoutError());\n this.handshakeResolvers.delete(req.responseId);\n }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\n });\n }\n\n /**\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\n * @param event \n */\n private onWindowMessage(event: MessageEvent): void {\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\n // We only accept messages from ourselves\n if (event.source !== window) {\n return;\n }\n\n const request = event.data;\n\n if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\n return;\n }\n\n if (request.extensionId && request.extensionId !== this.extensionId) {\n return;\n }\n\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\n this.logger.verbose(request.extensionId ? `Extension with id: ${request.extensionId} not installed` : \"No extension installed\");\n clearTimeout(this.timeoutId);\n this.messageChannel.port1.close();\n this.messageChannel.port2.close();\n window.removeEventListener(\"message\", this.windowListener, false);\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\n if (handshakeResolver) {\n handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\n }\n }\n }\n\n /**\n * Invoked when a message is received from the extension on the MessageChannel port\n * @param event \n */\n private onChannelMessage(event: MessageEvent): void {\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\n const request = event.data;\n \n const resolver = this.resolvers.get(request.responseId);\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\n\n try {\n const method = request.body.method;\n \n if (method === NativeExtensionMethod.Response) {\n if (!resolver) {\n return;\n }\n const response = request.body.response;\n this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\n this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(response)}`);\n if (response.status !== \"Success\") {\n resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\n } else if (response.result) {\n if (response.result[\"code\"] && response.result[\"description\"]) {\n resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\n } else {\n resolver.resolve(response.result);\n }\n } else {\n throw AuthError.createUnexpectedError(\"Event does not contain result.\");\n }\n this.resolvers.delete(request.responseId);\n } else if (method === NativeExtensionMethod.HandshakeResponse) {\n if (!handshakeResolver) {\n return;\n }\n clearTimeout(this.timeoutId); // Clear setTimeout\n window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\n this.extensionId = request.extensionId;\n this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`);\n\n handshakeResolver.resolve();\n this.handshakeResolvers.delete(request.responseId);\n } \n // Do nothing if method is not Response or HandshakeResponse\n } catch (err) {\n this.logger.error(\"Error parsing response from WAM Extension\");\n this.logger.errorPii(`Error parsing response from WAM Extension: ${err.toString()}`);\n this.logger.errorPii(`Unable to parse ${event}`);\n\n if (resolver) {\n resolver.reject(err as AuthError);\n } else if (handshakeResolver) {\n handshakeResolver.reject(err as AuthError);\n }\n }\n }\n \n /**\n * Returns boolean indicating whether or not the request should attempt to use native broker\n * @param logger\n * @param config\n * @param nativeExtensionProvider\n * @param authenticationScheme \n */\n static isNativeAvailable(config: BrowserConfiguration, logger: Logger, nativeExtensionProvider?: NativeMessageHandler, authenticationScheme?: AuthenticationScheme): boolean {\n logger.trace(\"isNativeAvailable called\");\n if (!config.system.allowNativeBroker) {\n logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\n // Developer disabled WAM\n return false;\n }\n\n if (!nativeExtensionProvider) {\n logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\n // Extension is not available\n return false;\n }\n\n if (authenticationScheme) {\n switch(authenticationScheme) {\n case AuthenticationScheme.BEARER:\n case AuthenticationScheme.POP:\n logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\n return true;\n default:\n logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\n return false;\n }\n }\n\n return true;\n }\n} \n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodePayload , StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError, CcsCredential, Logger, ServerError } from \"@azure/msal-common\";\n\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\nimport { TemporaryCacheKeys } from \"../utils/BrowserConstants\";\n\nexport type InteractionParams = {};\n\n/**\n * Abstract class which defines operations for a browser interaction handling class.\n */\nexport class InteractionHandler {\n\n protected authModule: AuthorizationCodeClient;\n protected browserStorage: BrowserCacheManager;\n protected authCodeRequest: CommonAuthorizationCodeRequest;\n protected logger: Logger;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger) {\n this.authModule = authCodeModule;\n this.browserStorage = storageImpl;\n this.authCodeRequest = authCodeRequest;\n this.logger = logger;\n }\n\n /**\n * Function to handle response parameters from hash.\n * @param locationHash\n */\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise {\n this.logger.verbose(\"InteractionHandler.handleCodeResponse called\");\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n\n let authCodeResponse;\n try {\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n } catch (e) {\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n throw BrowserAuthError.createUserCancelledError();\n } else {\n throw e;\n }\n }\n\n return this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule);\n }\n\n /**\n * Process auth code response from AAD\n * @param authCodeResponse \n * @param state \n * @param authority \n * @param networkModule \n * @returns \n */\n async handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, state: string, authority: Authority, networkModule: INetworkModule, validateNonce: boolean = true): Promise {\n this.logger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n \n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n }\n\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\n if (validateNonce) {\n authCodeResponse.nonce = cachedNonce || undefined;\n }\n \n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n\n /**\n * Updates authority based on cloudInstanceHostname\n * @param cloudInstanceHostname \n * @param authority \n * @param networkModule \n */\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise {\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options);\n this.authModule.updateAuthority(cloudInstanceAuthority);\n }\n\n /**\n * Looks up ccs creds in the cache\n */\n protected checkCcsCredentials(): CcsCredential | null {\n // Look up ccs credential in temp cache\n const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\n if (cachedCcsCred) {\n try {\n return JSON.parse(cachedCcsCred) as CcsCredential;\n } catch (e) {\n this.authModule.logger.error(\"Cache credential could not be parsed\");\n this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);\n }\n }\n return null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ThrottlingUtils, CommonEndSessionRequest, UrlString, AuthError, OIDC_DEFAULT_SCOPES, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, PerformanceEvents, StringUtils, IPerformanceClient, Logger, ICrypto } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { EventType } from \"../event/EventType\";\nimport { InteractionType, ApiId, BrowserConstants } from \"../utils/BrowserConstants\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { InteractionHandler, InteractionParams } from \"../interaction_handler/InteractionHandler\";\nimport { PopupWindowAttributes } from \"../request/PopupWindowAttributes\";\n\nexport type PopupParams = InteractionParams & {\n popup?: Window|null;\n popupName: string;\n popupWindowAttributes: PopupWindowAttributes\n};\n\nexport class PopupClient extends StandardInteractionClient {\n private currentWindow: Window | undefined;\n protected nativeStorage: BrowserCacheManager;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n // Properly sets this reference for the unload event.\n this.unloadWindow = this.unloadWindow.bind(this);\n this.nativeStorage = nativeStorageImpl;\n }\n\n /**\n * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\n * @param request\n */\n acquireToken(request: PopupRequest): Promise {\n try {\n const popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority);\n const popupWindowAttributes = request.popupWindowAttributes || {};\n\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\n if (this.config.system.asyncPopups) {\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\n // Passes on popup position and dimensions if in request\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes);\n } else {\n // asyncPopups flag is set to false. Opens popup before acquiring token.\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\n const popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes, popup);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n /**\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\n * @param logoutRequest\n */\n logout(logoutRequest?: EndSessionPopupRequest): Promise {\n try {\n this.logger.verbose(\"logoutPopup called\");\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\n\n const popupName = this.generateLogoutPopupName(validLogoutRequest);\n const authority = logoutRequest && logoutRequest.authority;\n const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\n const popupWindowAttributes = logoutRequest?.popupWindowAttributes || {};\n\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\n if (this.config.system.asyncPopups) {\n this.logger.verbose(\"asyncPopups set to true\");\n // Passes on popup position and dimensions if in request\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, undefined, mainWindowRedirectUri);\n } else {\n // asyncPopups flag is set to false. Opens popup before logging out.\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\n const popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, popup, mainWindowRedirectUri);\n }\n } catch (e) {\n // Since this function is synchronous we need to reject\n return Promise.reject(e);\n }\n }\n\n /**\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\n * @param validRequest\n * @param popupName\n * @param popup\n * @param popupWindowAttributes\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n protected async acquireTokenPopupAsync(request: PopupRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, popup?: Window|null): Promise {\n this.logger.verbose(\"acquireTokenPopupAsync called\");\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup);\n const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Popup);\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\n\n try {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\n\n // Initialize the client\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\n this.logger.verbose(\"Auth code client created\");\n\n const isNativeBroker = NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme);\n // Start measurement for server calls with native brokering enabled\n let fetchNativeAccountIdMeasurement;\n if (isNativeBroker) {\n fetchNativeAccountIdMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId);\n }\n\n // Create acquire token url.\n const navigateUrl = await authClient.getAuthCodeUrl({\n ...validRequest,\n nativeBroker: isNativeBroker\n });\n\n // Create popup interaction handler.\n const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger);\n\n // Show the UI once the url has been created. Get the window handle for the popup.\n const popupParameters: PopupParams = {\n popup,\n popupName,\n popupWindowAttributes\n };\n const popupWindow: Window = this.initiateAuthRequest(navigateUrl, popupParameters);\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\n\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n const hash = await this.monitorPopupForHash(popupWindow);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Popup, validRequest.correlationId);\n // Remove throttle if it exists\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\n\n if (serverParams.accountId) {\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n // end measurement for server call with native brokering enabled\n if (fetchNativeAccountIdMeasurement) {\n fetchNativeAccountIdMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true\n });\n }\n\n if (!this.nativeMessageHandler) {\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n }\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId);\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n return nativeInteractionClient.acquireToken({\n ...validRequest,\n state: userRequestState,\n prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\n }).finally(() => {\n this.browserStorage.cleanRequestByState(state);\n });\n }\n\n // Handle response from hash string.\n const result = await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n\n return result;\n } catch (e) {\n if (popup) {\n // Close the synchronous popup if an error is thrown before the window unload event is registered\n popup.close();\n }\n\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(validRequest.state);\n throw e;\n }\n }\n\n /**\n *\n * @param validRequest\n * @param popupName\n * @param requestAuthority\n * @param popup\n * @param mainWindowRedirectUri\n * @param popupWindowAttributes\n */\n protected async logoutPopupAsync(validRequest: CommonEndSessionRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, requestAuthority?: string, popup?: Window|null, mainWindowRedirectUri?: string): Promise {\n this.logger.verbose(\"logoutPopupAsync called\");\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup);\n\n try {\n // Clear cache on logout\n await this.clearCacheOnLogout(validRequest.account);\n\n // Initialize the client\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, requestAuthority);\n this.logger.verbose(\"Auth code client created\");\n\n // Create logout string and navigate user window to logout.\n const logoutUri: string = authClient.getLogoutUri(validRequest);\n\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\n\n // Open the popup window to requestUrl.\n const popupWindow = this.openPopup(logoutUri, {popupName, popupWindowAttributes, popup});\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\n\n await this.waitForLogoutPopup(popupWindow);\n\n if (mainWindowRedirectUri) {\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.logoutPopup,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false\n };\n const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\n\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\n this.logger.verbosePii(`Redirecting main window to: ${absoluteUrl}`);\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\n } else {\n this.logger.verbose(\"No main window navigation requested\");\n }\n } catch (e) {\n if (popup) {\n // Close the synchronous popup if an error is thrown before the window unload event is registered\n popup.close();\n }\n\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n\n this.browserStorage.setInteractionInProgress(false);\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e);\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\n serverTelemetryManager.cacheFailedRequest(e);\n throw e;\n }\n\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\n }\n\n /**\n * Opens a popup window with given request Url.\n * @param requestUrl\n */\n initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\n // Check that request url is not empty.\n if (!StringUtils.isEmpty(requestUrl)) {\n this.logger.infoPii(`Navigate to: ${requestUrl}`);\n // Open the popup window to requestUrl.\n return this.openPopup(requestUrl, params);\n } else {\n // Throw error if request URL is empty.\n this.logger.error(\"Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n }\n\n /**\n * Monitors a window until it loads a url with the same origin.\n * @param popupWindow - window that is being monitored\n * @param timeout - timeout for processing hash once popup is redirected back to application\n */\n monitorPopupForHash(popupWindow: Window): Promise {\n return new Promise((resolve, reject) => {\n /*\n * Polling for popups needs to be tick-based,\n * since a non-trivial amount of time can be spent on interaction (which should not count against the timeout).\n */\n const maxTicks = this.config.system.windowHashTimeout / BrowserConstants.POLL_INTERVAL_MS;\n let ticks = 0;\n\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - polling started\");\n\n const intervalId = setInterval(() => {\n // Window is closed\n if (popupWindow.closed) {\n this.logger.error(\"PopupHandler.monitorPopupForHash - window closed\");\n this.cleanPopup();\n clearInterval(intervalId);\n reject(BrowserAuthError.createUserCancelledError());\n return;\n }\n\n let href: string = Constants.EMPTY_STRING;\n let hash: string = Constants.EMPTY_STRING;\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = popupWindow.location.href;\n hash = popupWindow.location.hash;\n } catch (e) {}\n\n // Don't process blank pages or cross domain\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\n return;\n }\n\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - popup window is on same origin as caller\");\n\n /*\n * Only run clock when we are on same domain for popups\n * as popup operations can take a long time.\n */\n ticks++;\n\n if (hash) {\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - found hash in url\");\n clearInterval(intervalId);\n this.cleanPopup(popupWindow);\n\n if (UrlString.hashContainsKnownProperties(hash)) {\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - hash contains known properties, returning.\");\n resolve(hash);\n } else {\n this.logger.error(\"PopupHandler.monitorPopupForHash - found hash in url but it does not contain known properties. Check that your router is not changing the hash prematurely.\");\n this.logger.errorPii(`PopupHandler.monitorPopupForHash - hash found: ${hash}`);\n reject(BrowserAuthError.createHashDoesNotContainKnownPropertiesError());\n }\n } else if (ticks > maxTicks) {\n this.logger.error(\"PopupHandler.monitorPopupForHash - unable to find hash in url, timing out\");\n clearInterval(intervalId);\n reject(BrowserAuthError.createMonitorPopupTimeoutError());\n }\n }, BrowserConstants.POLL_INTERVAL_MS);\n });\n }\n\n /**\n * Waits for user interaction in logout popup window\n * @param popupWindow\n * @returns\n */\n waitForLogoutPopup(popupWindow: Window): Promise {\n return new Promise((resolve) => {\n this.logger.verbose(\"PopupHandler.waitForLogoutPopup - polling started\");\n\n const intervalId = setInterval(() => {\n // Window is closed\n if (popupWindow.closed) {\n this.logger.error(\"PopupHandler.waitForLogoutPopup - window closed\");\n this.cleanPopup();\n clearInterval(intervalId);\n resolve();\n }\n\n let href: string = Constants.EMPTY_STRING;\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = popupWindow.location.href;\n } catch (e) {}\n\n // Don't process blank pages or cross domain\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\n return;\n }\n\n this.logger.verbose(\"PopupHandler.waitForLogoutPopup - popup window is on same origin as caller, closing.\");\n\n clearInterval(intervalId);\n this.cleanPopup(popupWindow);\n resolve();\n }, BrowserConstants.POLL_INTERVAL_MS);\n });\n }\n\n /**\n * @hidden\n *\n * Configures popup window for login.\n *\n * @param urlNavigate\n * @param title\n * @param popUpWidth\n * @param popUpHeight\n * @param popupWindowAttributes\n * @ignore\n * @hidden\n */\n openPopup(urlNavigate: string, popupParams: PopupParams): Window {\n try {\n let popupWindow;\n // Popup window passed in, setting url to navigate to\n if (popupParams.popup) {\n popupWindow = popupParams.popup;\n this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`);\n popupWindow.location.assign(urlNavigate);\n } else if (typeof popupParams.popup === \"undefined\") {\n // Popup will be undefined if it was not passed in\n this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`);\n popupWindow = this.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes);\n }\n\n // Popup will be null if popups are blocked\n if (!popupWindow) {\n throw BrowserAuthError.createEmptyWindowCreatedError();\n }\n if (popupWindow.focus) {\n popupWindow.focus();\n }\n this.currentWindow = popupWindow;\n window.addEventListener(\"beforeunload\", this.unloadWindow);\n\n return popupWindow;\n } catch (e) {\n this.logger.error(\"error opening popup \" + (e as AuthError).message);\n this.browserStorage.setInteractionInProgress(false);\n throw BrowserAuthError.createPopupWindowError((e as AuthError).toString());\n }\n }\n\n /**\n * Helper function to set popup window dimensions and position\n * @param urlNavigate\n * @param popupName\n * @param popupWindowAttributes\n * @returns\n */\n openSizedPopup(urlNavigate: string, popupName: string, popupWindowAttributes: PopupWindowAttributes): Window|null {\n /**\n * adding winLeft and winTop to account for dual monitor\n * using screenLeft and screenTop for IE8 and earlier\n */\n const winLeft = window.screenLeft ? window.screenLeft : window.screenX;\n const winTop = window.screenTop ? window.screenTop : window.screenY;\n /**\n * window.innerWidth displays browser window\"s height and width excluding toolbars\n * using document.documentElement.clientWidth for IE8 and earlier\n */\n const winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n const winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n\n let width = popupWindowAttributes.popupSize?.width;\n let height = popupWindowAttributes.popupSize?.height;\n let top = popupWindowAttributes.popupPosition?.top;\n let left = popupWindowAttributes.popupPosition?.left;\n\n if (!width || width < 0 || width > winWidth) {\n this.logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\n width = BrowserConstants.POPUP_WIDTH;\n }\n\n if (!height || height < 0 || height > winHeight) {\n this.logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\n height = BrowserConstants.POPUP_HEIGHT;\n }\n\n if (!top || top < 0 || top > winHeight) {\n this.logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\n }\n\n if (!left || left < 0 || left > winWidth) {\n this.logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\n }\n\n return window.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`);\n }\n\n /**\n * Event callback to unload main window.\n */\n unloadWindow(e: Event): void {\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\n if (this.currentWindow) {\n this.currentWindow.close();\n }\n // Guarantees browser unload will happen, so no other errors will be thrown.\n e.preventDefault();\n }\n\n /**\n * Closes popup, removes any state vars created during popup calls.\n * @param popupWindow\n */\n cleanPopup(popupWindow?: Window): void {\n if (popupWindow) {\n // Close window.\n popupWindow.close();\n }\n // Remove window unload function\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\n }\n\n /**\n * Generates the name for the popup based on the client id and request\n * @param clientId\n * @param request\n */\n generatePopupName(scopes: Array, authority: string): string {\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${scopes.join(\"-\")}.${authority}.${this.correlationId}`;\n }\n\n /**\n * Generates the name for the popup based on the client id and request for logouts\n * @param clientId\n * @param request\n */\n generateLogoutPopupName(request: CommonEndSessionRequest): string {\n const homeAccountId = request.account && request.account.homeAccountId;\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, Authority, INetworkModule, ClientAuthError, Logger, ServerError } from \"@azure/msal-common\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\n\nexport type RedirectParams = InteractionParams & {\n navigationClient: INavigationClient;\n redirectTimeout: number;\n redirectStartPage: string;\n onRedirectNavigate?: (url: string) => void | boolean;\n};\n\nexport class RedirectHandler extends InteractionHandler {\n\n private browserCrypto: ICrypto;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, browserCrypto: ICrypto) {\n super(authCodeModule, storageImpl, authCodeRequest, logger);\n this.browserCrypto = browserCrypto;\n }\n\n /**\n * Redirects window to given URL.\n * @param urlNavigate\n */\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\n // Navigate if valid URL\n if (!StringUtils.isEmpty(requestUrl)) {\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\n if (params.redirectStartPage) {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\n }\n\n // Set interaction status in the library.\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\n this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`);\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: params.redirectTimeout,\n noHistory: false\n };\n \n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\n if (typeof params.onRedirectNavigate === \"function\") {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\n const navigate = params.onRedirectNavigate(requestUrl);\n\n // Returning false from onRedirectNavigate will stop navigation\n if (navigate !== false) {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n } else {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\n return;\n }\n } else {\n // Navigate window to request URL\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n }\n } else {\n // Throw error if request URL is empty.\n this.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n }\n\n /**\n * Handle authorization code response in the window.\n * @param hash\n */\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise {\n this.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\n\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n\n let authCodeResponse;\n try {\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n } catch (e) {\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n throw BrowserAuthError.createUserCancelledError();\n } else {\n throw e;\n }\n }\n\n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n }\n\n authCodeResponse.nonce = cachedNonce || undefined;\n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, UrlString, AuthError, ServerTelemetryManager, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, ThrottlingUtils, ICrypto, Logger, IPerformanceClient } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { ApiId, InteractionType, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { RedirectHandler } from \"../interaction_handler/RedirectHandler\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { EventType } from \"../event/EventType\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\n\nexport class RedirectClient extends StandardInteractionClient {\n protected nativeStorage: BrowserCacheManager;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n this.nativeStorage = nativeStorageImpl;\n }\n\n /**\n * Redirects the page to the /authorize endpoint of the IDP\n * @param request\n */\n async acquireToken(request: RedirectRequest): Promise {\n const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Redirect);\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);\n\n const handleBackButton = (event: PageTransitionEvent) => {\n // Clear temporary cache if the back button is clicked during the redirect flow.\n if (event.persisted) {\n this.logger.verbose(\"Page was restored from back/forward cache. Clearing temporary cache.\");\n this.browserStorage.cleanRequestByState(validRequest.state);\n }\n };\n\n try {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\n\n // Initialize the client\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\n this.logger.verbose(\"Auth code client created\");\n\n // Create redirect interaction handler.\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto);\n\n // Create acquire token url.\n const navigateUrl = await authClient.getAuthCodeUrl({\n ...validRequest,\n nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme)\n });\n\n const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\n this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`);\n\n // Clear temporary cache if the back button is clicked during the redirect flow.\n window.addEventListener(\"pageshow\", handleBackButton);\n\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\n return await interactionHandler.initiateAuthRequest(navigateUrl, {\n navigationClient: this.navigationClient,\n redirectTimeout: this.config.system.redirectNavigationTimeout,\n redirectStartPage: redirectStartPage,\n onRedirectNavigate: request.onRedirectNavigate\n });\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(this.correlationId);\n }\n window.removeEventListener(\"pageshow\", handleBackButton);\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(validRequest.state);\n throw e;\n }\n }\n\n /**\n * Checks if navigateToLoginRequestUrl is set, and:\n * - if true, performs logic to cache and navigate\n * - if false, handles hash string and parses response\n * @param hash\n */\n async handleRedirectPromise(hash?: string): Promise {\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);\n try {\n if (!this.browserStorage.isInteractionInProgress(true)) {\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\n return null;\n }\n\n const responseHash = this.getRedirectResponseHash(hash || window.location.hash);\n if (!responseHash) {\n // Not a recognized server response hash or hash not associated with a redirect request\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\n return null;\n }\n\n let state: string;\n try {\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(responseHash);\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Redirect);\n this.logger.verbose(\"State extracted from hash\");\n } catch (e) {\n this.logger.info(`handleRedirectPromise was unable to extract state due to: ${e}`);\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\n return null;\n }\n\n // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated\n const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING;\n const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\n const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\n\n if (loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl) {\n // We are on the page we need to navigate to - handle hash\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\n const handleHashResult = await this.handleHash(responseHash, state, serverTelemetryManager);\n\n if (loginRequestUrl.indexOf(\"#\") > -1) {\n // Replace current hash with non-msal hash, if present\n BrowserUtils.replaceHash(loginRequestUrl);\n }\n\n return handleHashResult;\n } else if (!this.config.auth.navigateToLoginRequestUrl) {\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\n return this.handleHash(responseHash, state, serverTelemetryManager);\n } else if (!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe) {\n /*\n * Returned from authority using redirect - need to perform navigation before processing response\n * Cache the hash to be retrieved after the next redirect\n */\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.handleRedirectPromise,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: true\n };\n\n /**\n * Default behavior is to redirect to the start page and not process the hash now.\n * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above.\n */\n let processHashOnRedirect: boolean = true;\n if (!loginRequestUrl || loginRequestUrl === \"null\") {\n // Redirect to home page if login request url is null (real null or the string null)\n const homepage = BrowserUtils.getHomepage();\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\n processHashOnRedirect = await this.navigationClient.navigateInternal(homepage, navigationOptions);\n } else {\n // Navigate to page that initiated the redirect request\n this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`);\n processHashOnRedirect = await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions);\n }\n\n // If navigateInternal implementation returns false, handle the hash now\n if (!processHashOnRedirect) {\n return this.handleHash(responseHash, state, serverTelemetryManager);\n }\n }\n\n return null;\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\n throw e;\n }\n }\n\n /**\n * Gets the response hash for a redirect request\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\n * @param hash\n */\n protected getRedirectResponseHash(hash: string): string | null {\n this.logger.verbose(\"getRedirectResponseHash called\");\n // Get current location hash from window or cache.\n const isResponseHash: boolean = UrlString.hashContainsKnownProperties(hash);\n\n if (isResponseHash) {\n BrowserUtils.clearHash(window);\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\n return hash;\n }\n\n const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\n\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\n return cachedHash;\n }\n\n /**\n * Checks if hash exists and handles in window.\n * @param hash\n * @param state\n */\n protected async handleHash(hash: string, state: string, serverTelemetryManager: ServerTelemetryManager): Promise {\n const cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\n this.logger.verbose(\"handleHash called, retrieved cached request\");\n\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n\n if (serverParams.accountId) {\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n if (!this.nativeMessageHandler) {\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n }\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, cachedRequest.correlationId);\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n return nativeInteractionClient.acquireToken({\n ...cachedRequest,\n state: userRequestState,\n prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\n }).finally(() => {\n this.browserStorage.cleanRequestByState(state);\n });\n }\n\n // Hash contains known properties - handle and return in callback\n const currentAuthority = this.browserStorage.getCachedAuthority(state);\n if (!currentAuthority) {\n throw BrowserAuthError.createNoCachedAuthorityError();\n }\n\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, currentAuthority);\n this.logger.verbose(\"Auth code client created\");\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto);\n return await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n }\n\n /**\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param logoutRequest\n */\n async logout(logoutRequest?: EndSessionRequest): Promise {\n this.logger.verbose(\"logoutRedirect called\");\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);\n\n try {\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\n\n // Clear cache on logout\n await this.clearCacheOnLogout(validLogoutRequest.account);\n\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.logout,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false\n };\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority);\n this.logger.verbose(\"Auth code client created\");\n\n // Create logout string and navigate user window to logout.\n const logoutUri: string = authClient.getLogoutUri(validLogoutRequest);\n\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\n // Check if onRedirectNavigate is implemented, and invoke it if so\n if (logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\") {\n const navigate = logoutRequest.onRedirectNavigate(logoutUri);\n\n if (navigate !== false) {\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\n // Ensure interaction is in progress\n if (!this.browserStorage.getInteractionInProgress()) {\n this.browserStorage.setInteractionInProgress(true);\n }\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\n return;\n } else {\n // Ensure interaction is not in progress\n this.browserStorage.setInteractionInProgress(false);\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\n }\n } else {\n // Ensure interaction is in progress\n if (!this.browserStorage.getInteractionInProgress()) {\n this.browserStorage.setInteractionInProgress(true);\n }\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\n return;\n }\n } catch(e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e);\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\n throw e;\n }\n\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\n }\n\n /**\n * Use to get the redirectStartPage either from request or use current window\n * @param requestStartPage\n */\n protected getRedirectStartPage(requestStartPage?: string): string {\n const redirectStartPage = requestStartPage || window.location.href;\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Constants, Logger } from \"@azure/msal-common\";\nimport { InteractionHandler } from \"./InteractionHandler\";\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\n\nexport class SilentHandler extends InteractionHandler {\n\n private navigateFrameWait: number;\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, navigateFrameWait: number) {\n super(authCodeModule, storageImpl, authCodeRequest, logger);\n this.navigateFrameWait = navigateFrameWait;\n }\n\n /**\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\n * @param urlNavigate\n * @param userRequestScopes\n */\n async initiateAuthRequest(requestUrl: string): Promise {\n if (StringUtils.isEmpty(requestUrl)) {\n // Throw error if request URL is empty.\n this.logger.info(\"Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n\n return this.navigateFrameWait ? await this.loadFrame(requestUrl) : this.loadFrameSync(requestUrl);\n }\n\n /**\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\n * @param iframe\n * @param timeout\n */\n monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\n this.logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);\n }\n\n /*\n * Polling for iframes can be purely timing based,\n * since we don't need to account for interaction.\n */\n const nowMark = window.performance.now();\n const timeoutMark = nowMark + timeout;\n\n const intervalId = setInterval(() => {\n if (window.performance.now() > timeoutMark) {\n this.removeHiddenIframe(iframe);\n clearInterval(intervalId);\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\n return;\n }\n\n let href: string = Constants.EMPTY_STRING;\n const contentWindow = iframe.contentWindow;\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\n } catch (e) {}\n\n if (StringUtils.isEmpty(href)) {\n return;\n }\n\n const contentHash = contentWindow ? contentWindow.location.hash: Constants.EMPTY_STRING;\n if (UrlString.hashContainsKnownProperties(contentHash)) {\n // Success case\n this.removeHiddenIframe(iframe);\n clearInterval(intervalId);\n resolve(contentHash);\n return;\n }\n }, BrowserConstants.POLL_INTERVAL_MS);\n });\n }\n\n /**\n * @hidden\n * Loads iframe with authorization endpoint URL\n * @ignore\n */\n private loadFrame(urlNavigate: string): Promise {\n /*\n * This trick overcomes iframe navigation in IE\n * IE does not load the page consistently in iframe\n */\n\n return new Promise((resolve, reject) => {\n const frameHandle = this.createHiddenIframe();\n\n setTimeout(() => {\n if (!frameHandle) {\n reject(\"Unable to load iframe\");\n return;\n }\n\n frameHandle.src = urlNavigate;\n\n resolve(frameHandle);\n }, this.navigateFrameWait);\n });\n }\n\n /**\n * @hidden\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\n * @param urlNavigate\n * @param frameName\n * @param logger\n */\n private loadFrameSync(urlNavigate: string): HTMLIFrameElement{\n const frameHandle = this.createHiddenIframe();\n\n frameHandle.src = urlNavigate;\n\n return frameHandle;\n }\n\n /**\n * @hidden\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\n * @ignore\n */\n private createHiddenIframe(): HTMLIFrameElement {\n const authFrame = document.createElement(\"iframe\");\n\n authFrame.style.visibility = \"hidden\";\n authFrame.style.position = \"absolute\";\n authFrame.style.width = authFrame.style.height = \"0\";\n authFrame.style.border = \"0\";\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\n\n return authFrame;\n }\n\n /**\n * @hidden\n * Removes a hidden iframe from the page.\n * @ignore\n */\n private removeHiddenIframe(iframe: HTMLIFrameElement): void {\n if (document.body === iframe.parentNode) {\n document.body.removeChild(iframe);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, ICrypto, Logger, StringUtils, PromptValue, CommonAuthorizationCodeRequest, AuthorizationCodeClient, AuthError, Constants, UrlString, ServerAuthorizationCodeResponse, ProtocolUtils, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\n\nexport class SilentIframeClient extends StandardInteractionClient {\n protected apiId: ApiId;\n protected nativeStorage: BrowserCacheManager;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n this.apiId = apiId;\n this.nativeStorage = nativeStorageImpl;\n }\n\n /**\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none\n * @param request\n */\n async acquireToken(request: SsoSilentRequest): Promise {\n this.logger.verbose(\"acquireTokenByIframe called\");\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\n // Check that we have some SSO data\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\n }\n\n // Check that prompt is set to none, throw error if it is set to anything else.\n if (request.prompt && request.prompt !== PromptValue.NONE) {\n acquireTokenMeasurement.endMeasurement({\n success: false\n });\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\n }\n\n // Create silent request\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest({\n ...request,\n prompt: PromptValue.NONE\n }, InteractionType.Silent);\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\n\n try {\n // Initialize the client\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Auth code client created\");\n\n return await this.silentTokenHelper(authClient, silentRequest).then((result: AuthenticationResult) => {\n acquireTokenMeasurement.endMeasurement({\n success: true,\n fromCache: false\n });\n return result;\n });\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(silentRequest.state);\n acquireTokenMeasurement.endMeasurement({\n errorCode: e instanceof AuthError && e.errorCode || undefined,\n subErrorCode: e instanceof AuthError && e.subError || undefined,\n success: false\n });\n throw e;\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Helper which acquires an authorization code silently using a hidden iframe from given url\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\n * @param navigateUrl\n * @param userRequestScopes\n */\n protected async silentTokenHelper(authClient: AuthorizationCodeClient, silentRequest: AuthorizationUrlRequest): Promise {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\n // Create authorize request url\n const navigateUrl = await authClient.getAuthCodeUrl({\n ...silentRequest,\n nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme)\n });\n // Create silent handler\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\n // Get the frame handle for the silent request\n const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\n\n if (serverParams.accountId) {\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n if (!this.nativeMessageHandler) {\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n }\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, this.correlationId);\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n return nativeInteractionClient.acquireToken({\n ...silentRequest,\n state: userRequestState,\n prompt: PromptValue.NONE\n }).finally(() => {\n this.browserStorage.cleanRequestByState(state);\n });\n }\n\n // Handle response from hash string\n return silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AuthError, AzureCloudOptions, PerformanceEvents } from \"@azure/msal-common\";\nimport { ApiId } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport class SilentRefreshClient extends StandardInteractionClient {\n /**\n * Exchanges the refresh token for new tokens\n * @param request\n */\n async acquireToken(request: CommonSilentFlowRequest): Promise {\n const silentRequest: CommonSilentFlowRequest = {\n ...request,\n ...await this.initializeBaseRequest(request)\n };\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\n\n const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Refresh token client created\");\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\n return refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\n .then((result: AuthenticationResult) => {\n acquireTokenMeasurement.endMeasurement({\n success: true,\n fromCache: result.fromCache\n });\n\n return result;\n })\n .catch((e: AuthError) => {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n acquireTokenMeasurement.endMeasurement({\n errorCode: e.errorCode,\n subErrorCode: e.subError,\n success: false\n });\n throw e;\n });\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Creates a Refresh Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\n return new RefreshTokenClient(clientConfig, this.performanceClient);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccessTokenEntity, ICrypto, IdTokenEntity, Logger, ScopeSet, Authority, AuthorityOptions, ExternalTokenResponse, AccountEntity, AuthToken } from \"@azure/msal-common\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { BrowserCacheManager } from \"./BrowserCacheManager\";\nimport { ITokenCache } from \"./ITokenCache\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport type LoadTokenOptions = {\n clientInfo?: string,\n expiresOn?: number,\n extendedExpiresOn?: number\n};\n\n/**\n * Token cache manager\n */\nexport class TokenCache implements ITokenCache {\n // Flag to indicate if in browser environment\n public isBrowserEnvironment: boolean;\n // Input configuration by developer/user\n protected config: BrowserConfiguration;\n // Browser cache storage\n private storage: BrowserCacheManager;\n // Logger\n private logger: Logger;\n // Crypto class\n private cryptoObj: ICrypto;\n\n constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto) {\n this.isBrowserEnvironment = typeof window !== \"undefined\";\n this.config = configuration;\n this.storage = storage;\n this.logger = logger;\n this.cryptoObj = cryptoObj;\n }\n\n // Move getAllAccounts here and cache utility APIs\n\n /**\n * API to load tokens to msal-browser cache.\n * @param request\n * @param response\n * @param options\n */\n loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): void {\n this.logger.info(\"TokenCache - loadExternalTokens called\");\n\n if (!response.id_token) {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\n }\n\n if (request.account) {\n this.loadIdToken(response.id_token, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\n this.loadAccessToken(request, response, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\n } else if (request.authority) {\n\n const authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\n };\n const authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions);\n\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\n if (options.clientInfo) {\n this.logger.trace(\"TokenCache - homeAccountId from options\");\n this.loadIdToken(response.id_token, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\n this.loadAccessToken(request, response, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\n } else if (response.client_info) {\n this.logger.trace(\"TokenCache - homeAccountId from response\");\n this.loadIdToken(response.id_token, response.client_info, authority.hostnameAndPort, authority.tenant, options);\n this.loadAccessToken(request, response, response.client_info, authority.hostnameAndPort, authority.tenant, options);\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\n }\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\n }\n }\n\n /**\n * Helper function to load id tokens to msal-browser cache\n * @param idToken\n * @param homeAccountId\n * @param environment\n * @param tenantId\n * @param options\n */\n private loadIdToken(idToken: string, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\n\n const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);\n const idAuthToken = new AuthToken(idToken, this.cryptoObj);\n const accountEntity = options.clientInfo ?\n AccountEntity.createAccount(options.clientInfo, homeAccountId, idAuthToken, undefined, undefined, undefined, environment) :\n AccountEntity.createGenericAccount(homeAccountId, idAuthToken, undefined, undefined, undefined, environment);\n\n if (this.isBrowserEnvironment) {\n this.logger.verbose(\"TokenCache - loading id token\");\n this.storage.setAccount(accountEntity);\n this.storage.setIdTokenCredential(idTokenEntity);\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n }\n }\n\n /**\n * Helper function to load access tokens to msal-browser cache\n * @param request\n * @param response\n * @param options\n * @param homeAccountId\n * @param environment\n * @param tenantId\n * @returns\n */\n private loadAccessToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\n\n if (!response.access_token) {\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\n return;\n }\n\n if (!response.expires_in) {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\n }\n\n if (!options.extendedExpiresOn) {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\n }\n\n const scopes = new ScopeSet(request.scopes).printScopes();\n const expiresOn = options.expiresOn || (response.expires_in + new Date().getTime() / 1000);\n const extendedExpiresOn = options.extendedExpiresOn;\n\n const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\n\n if (this.isBrowserEnvironment) {\n this.logger.verbose(\"TokenCache - loading access token\");\n this.storage.setAccessTokenCredential(accessTokenEntity);\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n }\n }\n}\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodeClient, ClientConfiguration } from \"@azure/msal-common\";\n\nexport class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {\n constructor(config: ClientConfiguration) {\n super(config);\n this.includeRedirectUri = false;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, ICrypto, Logger, CommonAuthorizationCodeRequest, AuthError, Constants, IPerformanceClient } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\nimport { HybridSpaAuthorizationCodeClient } from \"./HybridSpaAuthorizationCodeClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\n\nexport class SilentAuthCodeClient extends StandardInteractionClient {\n private apiId: ApiId;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n this.apiId = apiId;\n }\n\n /**\n * Acquires a token silently by redeeming an authorization code against the /token endpoint\n * @param request\n */\n async acquireToken(request: AuthorizationCodeRequest): Promise {\n this.logger.trace(\"SilentAuthCodeClient.acquireToken called\");\n\n // Auth code payload is required\n if (!request.code) {\n throw BrowserAuthError.createAuthCodeRequiredError();\n\n }\n\n // Create silent request\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest(request, InteractionType.Silent);\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\n\n try {\n\n // Create auth code request (PKCE not needed)\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...silentRequest,\n code: request.code\n };\n\n // Initialize the client\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, silentRequest.authority);\n const authClient: HybridSpaAuthorizationCodeClient = new HybridSpaAuthorizationCodeClient(clientConfig);\n this.logger.verbose(\"Auth code client created\");\n\n // Create silent handler\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\n\n // Handle auth code parameters from request\n return silentHandler.handleCodeResponseFromServer(\n {\n code: request.code,\n msgraph_host: request.msGraphHost,\n cloud_graph_host_name: request.cloudGraphHostName,\n cloud_instance_host_name: request.cloudInstanceHostName\n },\n silentRequest.state,\n authClient.authority,\n this.networkClient,\n false\n );\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(silentRequest.state);\n throw e;\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IPerformanceMeasurement } from \"@azure/msal-common\";\n\nexport class BrowserPerformanceMeasurement implements IPerformanceMeasurement {\n private measureName: string;\n private correlationId: string;\n private startMark: string;\n private endMark: string;\n\n constructor(name: string, correlationId: string) {\n this.correlationId = correlationId;\n this.measureName = `msal.measure.${name}.${this.correlationId}`;\n this.startMark = `msal.start.${name}.${this.correlationId}`;\n this.endMark = `msal.end.${name}.${this.correlationId}`;\n }\n\n static supportsBrowserPerformance(): boolean {\n return typeof window !== \"undefined\" &&\n typeof window.performance !== \"undefined\" &&\n typeof window.performance.mark === \"function\" && \n typeof window.performance.measure === \"function\" &&\n typeof window.performance.clearMarks === \"function\" &&\n typeof window.performance.clearMeasures === \"function\" &&\n typeof window.performance.getEntriesByName === \"function\";\n }\n\n startMeasurement(): void {\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\n try {\n window.performance.mark(this.startMark);\n } catch (e) {\n // Silently catch\n }\n }\n }\n\n endMeasurement():void {\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\n try {\n window.performance.mark(this.endMark);\n window.performance.measure(this.measureName, this.startMark, this.endMark);\n } catch (e) {\n // Silently catch\n }\n }\n }\n\n flushMeasurement(): number | null {\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\n try {\n const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, \"measure\");\n if (entriesForMeasurement.length > 0) {\n const durationMs = entriesForMeasurement[0].duration;\n window.performance.clearMeasures(this.measureName);\n window.performance.clearMarks(this.startMark);\n window.performance.clearMarks(this.endMark);\n return durationMs;\n }\n } catch (e) {\n // Silently catch and return null\n }\n }\n return null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger, PerformanceEvent, PerformanceEvents, IPerformanceClient, PerformanceClient, IPerformanceMeasurement, InProgressPerformanceEvent, ApplicationTelemetry } from \"@azure/msal-common\";\nimport { BrowserCrypto } from \"../crypto/BrowserCrypto\";\nimport { GuidGenerator } from \"../crypto/GuidGenerator\";\nimport { BrowserPerformanceMeasurement } from \"./BrowserPerformanceMeasurement\";\n\nexport class BrowserPerformanceClient extends PerformanceClient implements IPerformanceClient {\n private browserCrypto: BrowserCrypto;\n private guidGenerator: GuidGenerator;\n \n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry) {\n super(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry);\n this.browserCrypto = new BrowserCrypto(this.logger);\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\n }\n \n startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\n return new BrowserPerformanceMeasurement(measureName, correlationId);\n }\n\n generateId() : string {\n return this.guidGenerator.generateGuid();\n }\n\n private getPageVisibility(): string | null {\n return document.visibilityState?.toString() || null;\n }\n \n /**\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\n * Also captures browser page visibilityState.\n *\n * @param {PerformanceEvents} measureName\n * @param {?string} [correlationId]\n * @returns {((event?: Partial) => PerformanceEvent| null)}\n */\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\n // Capture page visibilityState and then invoke start/end measurement\n const startPageVisibility = this.getPageVisibility();\n \n const inProgressEvent = super.startMeasurement(measureName, correlationId);\n\n return {\n ...inProgressEvent,\n endMeasurement: (event?: Partial): PerformanceEvent | null => {\n return inProgressEvent.endMeasurement({\n startPageVisibility,\n endPageVisibility: this.getPageVisibility(),\n ...event\n });\n }\n };\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CryptoOps } from \"../crypto/CryptoOps\";\nimport { StringUtils, ServerError, InteractionRequiredAuthError, AccountInfo, Constants, INetworkModule, AuthenticationResult, Logger, CommonSilentFlowRequest, ICrypto, DEFAULT_CRYPTO_IMPLEMENTATION, AuthError, PerformanceEvents, PerformanceCallbackFunction, StubPerformanceClient, IPerformanceClient, BaseAuthRequest, PromptValue } from \"@azure/msal-common\";\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from \"../cache/BrowserCacheManager\";\nimport { BrowserConfiguration, buildConfiguration, CacheOptions, Configuration } from \"../config/Configuration\";\nimport { InteractionType, ApiId, BrowserConstants, BrowserCacheLocation, WrapperSKU, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { version, name } from \"../packageMetadata\";\nimport { EventCallbackFunction } from \"../event/EventMessage\";\nimport { EventType } from \"../event/EventType\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { PopupClient } from \"../interaction_client/PopupClient\";\nimport { RedirectClient } from \"../interaction_client/RedirectClient\";\nimport { SilentIframeClient } from \"../interaction_client/SilentIframeClient\";\nimport { SilentRefreshClient } from \"../interaction_client/SilentRefreshClient\";\nimport { TokenCache } from \"../cache/TokenCache\";\nimport { ITokenCache } from \"../cache/ITokenCache\";\nimport { NativeInteractionClient } from \"../interaction_client/NativeInteractionClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { SilentCacheClient } from \"../interaction_client/SilentCacheClient\";\nimport { SilentAuthCodeClient } from \"../interaction_client/SilentAuthCodeClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\nimport { BrowserPerformanceClient } from \"../telemetry/BrowserPerformanceClient\";\n\nexport abstract class ClientApplication {\n\n // Crypto interface implementation\n protected readonly browserCrypto: ICrypto;\n\n // Storage interface implementation\n protected readonly browserStorage: BrowserCacheManager;\n\n // Native Cache in memory storage implementation\n protected readonly nativeInternalStorage: BrowserCacheManager;\n\n // Network interface implementation\n protected readonly networkClient: INetworkModule;\n\n // Navigation interface implementation\n protected navigationClient: INavigationClient;\n\n // Input configuration by developer/user\n protected config: BrowserConfiguration;\n\n // Token cache implementation\n private tokenCache: TokenCache;\n\n // Logger\n protected logger: Logger;\n\n // Flag to indicate if in browser environment\n protected isBrowserEnvironment: boolean;\n\n protected eventHandler: EventHandler;\n\n // Redirect Response Object\n protected redirectResponse: Map>;\n\n // Native Extension Provider\n protected nativeExtensionProvider: NativeMessageHandler | undefined;\n\n // Hybrid auth code responses\n private hybridAuthCodeResponses: Map>;\n\n // Performance telemetry client\n protected performanceClient: IPerformanceClient;\n\n // Flag representing whether or not the initialize API has been called and completed\n protected initialized: boolean;\n\n /**\n * @constructor\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\n *\n * Important attributes in the Configuration object for auth are:\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\n * - authority: the authority URL for your application.\n * - redirect_uri: the uri of your application registered in the portal.\n *\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n *\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\n * Full B2C functionality will be available in this library in future versions.\n *\n * @param configuration Object for the MSAL PublicClientApplication instance\n */\n constructor(configuration: Configuration) {\n /*\n * If loaded in an environment where window is not available,\n * set internal flag to false so that further requests fail.\n * This is to support server-side rendering environments.\n */\n this.isBrowserEnvironment = typeof window !== \"undefined\";\n // Set the configuration.\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\n this.initialized = false;\n\n // Initialize logger\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\n\n // Initialize the network module class.\n this.networkClient = this.config.system.networkClient;\n\n // Initialize the navigation client class.\n this.navigationClient = this.config.system.navigationClient;\n\n // Initialize redirectResponse Map\n this.redirectResponse = new Map();\n\n // Initial hybrid spa map\n this.hybridAuthCodeResponses = new Map();\n\n // Initialize performance client\n this.performanceClient = this.isBrowserEnvironment ?\n new BrowserPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application) :\n new StubPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application);\n\n // Initialize the crypto class.\n this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger, this.performanceClient) : DEFAULT_CRYPTO_IMPLEMENTATION;\n\n this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\n\n // Initialize the browser storage class.\n this.browserStorage = this.isBrowserEnvironment ?\n new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) :\n DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\n\n // initialize in memory storage for native flows\n const nativeCacheOptions: Required = {\n cacheLocation: BrowserCacheLocation.MemoryStorage,\n storeAuthStateInCookie: false,\n secureCookies: false\n };\n this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger);\n\n // Initialize the token cache\n this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\n }\n\n /**\n * Initializer function to perform async startup tasks such as connecting to WAM extension\n */\n async initialize(): Promise {\n this.logger.trace(\"initialize called\");\n if (this.initialized) {\n this.logger.info(\"initialize has already been called, exiting early.\");\n return;\n }\n this.eventHandler.emitEvent(EventType.INITIALIZE_START);\n if (this.config.system.allowNativeBroker) {\n try {\n this.nativeExtensionProvider = await NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout);\n } catch (e) {\n this.logger.verbose(e);\n }\n }\n this.initialized = true;\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\n }\n\n // #region Redirect Flow\n\n /**\n * Event handler function which allows users to fire events after the PublicClientApplication object\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\n * auth flows.\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\n */\n async handleRedirectPromise(hash?: string): Promise {\n this.logger.verbose(\"handleRedirectPromise called\");\n // Block token acquisition before initialize has been called if native brokering is enabled\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\n\n const loggedInAccounts = this.getAllAccounts();\n if (this.isBrowserEnvironment) {\n /**\n * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise,\n * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called\n * several times concurrently.\n */\n const redirectResponseKey = hash || Constants.EMPTY_STRING;\n let response = this.redirectResponse.get(redirectResponseKey);\n if (typeof response === \"undefined\") {\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\n\n const request: NativeTokenRequest | null = this.browserStorage.getCachedNativeRequest();\n let redirectResponse: Promise;\n if (request && NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider) && this.nativeExtensionProvider && !hash) {\n this.logger.trace(\"handleRedirectPromise - acquiring token from native platform\");\n const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, this.nativeInternalStorage, request.correlationId);\n redirectResponse = nativeClient.handleRedirectPromise();\n } else {\n this.logger.trace(\"handleRedirectPromise - acquiring token from web flow\");\n const correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || Constants.EMPTY_STRING;\n const redirectClient = this.createRedirectClient(correlationId);\n redirectResponse = redirectClient.handleRedirectPromise(hash);\n }\n\n response = redirectResponse.then((result: AuthenticationResult | null) => {\n if (result) {\n // Emit login event if number of accounts change\n\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\n if (isLoggingIn) {\n this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\n this.logger.verbose(\"handleRedirectResponse returned result, login success\");\n } else {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\n this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\n }\n }\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\n\n return result;\n }).catch((e) => {\n // Emit login event if there is an account\n if (loggedInAccounts.length > 0) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\n }\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\n\n throw e;\n });\n this.redirectResponse.set(redirectResponseKey, response);\n } else {\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\n }\n\n return response;\n }\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\n return null;\n }\n\n /**\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\n * the page, so any code that follows this function will not execute.\n *\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n *\n * @param request\n */\n async acquireTokenRedirect(request: RedirectRequest): Promise {\n // Preflight request\n const correlationId = this.getRequestCorrelationId(request);\n this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\n\n // If logged in, emit acquire token events\n const isLoggedIn = this.getAllAccounts().length > 0;\n if (isLoggedIn) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\n }\n\n let result: Promise;\n\n if (this.nativeExtensionProvider && this.canUseNative(request)) {\n const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\n result = nativeClient.acquireTokenRedirect(request).catch((e: AuthError) => {\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n const redirectClient = this.createRedirectClient(request.correlationId);\n return redirectClient.acquireToken(request);\n } else if (e instanceof InteractionRequiredAuthError) {\n this.logger.verbose(\"acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow\");\n const redirectClient = this.createRedirectClient(request.correlationId);\n return redirectClient.acquireToken(request);\n }\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n });\n } else {\n const redirectClient = this.createRedirectClient(request.correlationId);\n result = redirectClient.acquireToken(request);\n }\n\n return result.catch((e) => {\n // If logged in, emit acquire token events\n if (isLoggedIn) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\n }\n throw e;\n });\n }\n\n // #endregion\n\n // #region Popup Flow\n\n /**\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\n *\n * @param request\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n acquireTokenPopup(request: PopupRequest): Promise {\n const correlationId = this.getRequestCorrelationId(request);\n const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId);\n\n try {\n this.logger.verbose(\"acquireTokenPopup called\", correlationId);\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\n } catch (e) {\n // Since this function is syncronous we need to reject\n return Promise.reject(e);\n }\n\n // If logged in, emit acquire token events\n const loggedInAccounts = this.getAllAccounts();\n if (loggedInAccounts.length > 0) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\n }\n\n let result: Promise;\n\n if (this.canUseNative(request)) {\n result = this.acquireTokenNative(request, ApiId.acquireTokenPopup).then((response) => {\n this.browserStorage.setInteractionInProgress(false);\n atPopupMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true,\n accessTokenSize: response.accessToken.length,\n idTokenSize: response.idToken.length,\n });\n atPopupMeasurement.flushMeasurement();\n return response;\n }).catch((e: AuthError) => {\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n const popupClient = this.createPopupClient(request.correlationId);\n return popupClient.acquireToken(request);\n } else if (e instanceof InteractionRequiredAuthError) {\n this.logger.verbose(\"acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow\");\n const popupClient = this.createPopupClient(request.correlationId);\n return popupClient.acquireToken(request);\n }\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n });\n } else {\n const popupClient = this.createPopupClient(request.correlationId);\n result = popupClient.acquireToken(request);\n }\n\n return result.then((result) => {\n\n /*\n * If logged in, emit acquire token events\n */\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\n if (isLoggingIn) {\n this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\n } else {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\n }\n\n atPopupMeasurement.endMeasurement({\n success: true,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n });\n\n atPopupMeasurement.flushMeasurement();\n return result;\n }).catch((e: AuthError) => {\n if (loggedInAccounts.length > 0) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\n }\n\n atPopupMeasurement.endMeasurement({\n errorCode: e.errorCode,\n subErrorCode: e.subError,\n success: false\n });\n atPopupMeasurement.flushMeasurement();\n\n // Since this function is syncronous we need to reject\n return Promise.reject(e);\n });\n }\n\n // #endregion\n\n // #region Silent Flow\n\n /**\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\n * - Any browser using a form of Intelligent Tracking Prevention\n * - If there is not an established session with the service\n *\n * In these cases, the request must be done inside a popup or full frame redirect.\n *\n * For the cases where interaction is required, you cannot send a request with prompt=none.\n *\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\n * you session on the server still exists.\n * @param request {@link SsoSilentRequest}\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n async ssoSilent(request: SsoSilentRequest): Promise {\n const correlationId = this.getRequestCorrelationId(request);\n const validRequest = {\n ...request,\n prompt: PromptValue.NONE,\n correlationId: correlationId\n };\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n const ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId);\n this.logger.verbose(\"ssoSilent called\", correlationId);\n this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest);\n\n let result: Promise;\n\n if (this.canUseNative(validRequest)) {\n result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch((e: AuthError) => {\n // If native token acquisition fails for availability reasons fallback to standard flow\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\n return silentIframeClient.acquireToken(validRequest);\n }\n throw e;\n });\n } else {\n const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\n result = silentIframeClient.acquireToken(validRequest);\n }\n\n return result.then((response) => {\n this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response);\n ssoSilentMeasurement.endMeasurement({\n success: true,\n isNativeBroker: response.fromNativeBroker,\n accessTokenSize: response.accessToken.length,\n idTokenSize: response.idToken.length\n });\n ssoSilentMeasurement.flushMeasurement();\n return response;\n }).catch((e: AuthError) => {\n this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\n ssoSilentMeasurement.endMeasurement({\n errorCode: e.errorCode,\n subErrorCode: e.subError,\n success: false\n });\n ssoSilentMeasurement.flushMeasurement();\n throw e;\n });\n }\n\n /**\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\n * This API is not indended for normal authorization code acquisition and redemption.\n *\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\n *\n * @param request {@link AuthorizationCodeRequest}\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n async acquireTokenByCode(request: AuthorizationCodeRequest): Promise {\n const correlationId = this.getRequestCorrelationId(request);\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n this.logger.trace(\"acquireTokenByCode called\", correlationId);\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\n const atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, request.correlationId);\n\n try {\n if (request.code) {\n const hybridAuthCode = request.code;\n let response = this.hybridAuthCodeResponses.get(hybridAuthCode);\n if (!response) {\n this.logger.verbose(\"Initiating new acquireTokenByCode request\", correlationId);\n response = this.acquireTokenByCodeAsync({\n ...request,\n correlationId\n })\n .then((result: AuthenticationResult) => {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\n atbcMeasurement.endMeasurement({\n success: true,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n isNativeBroker: result.fromNativeBroker\n });\n atbcMeasurement.flushMeasurement();\n return result;\n })\n .catch((error: AuthError) => {\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error);\n atbcMeasurement.endMeasurement({\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n success: false\n });\n atbcMeasurement.flushMeasurement();\n throw error;\n });\n this.hybridAuthCodeResponses.set(hybridAuthCode, response);\n } else {\n this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\n atbcMeasurement.endMeasurement({\n success: true\n });\n atbcMeasurement.discardMeasurement();\n }\n return response;\n } else if (request.nativeAccountId) {\n if (this.canUseNative(request, request.nativeAccountId)) {\n return this.acquireTokenNative(request, ApiId.acquireTokenByCode, request.nativeAccountId).catch((e: AuthError) => {\n // If native token acquisition fails for availability reasons fallback to standard flow\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n }\n throw e;\n });\n } else {\n throw BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError();\n }\n } else {\n throw BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError();\n }\n\n } catch (e) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\n atbcMeasurement.endMeasurement({\n errorCode: e instanceof AuthError && e.errorCode || undefined,\n subErrorCode: e instanceof AuthError && e.subError || undefined,\n success: false\n });\n throw e;\n }\n }\n\n /**\n * Creates a SilentAuthCodeClient to redeem an authorization code.\n * @param request\n * @returns Result of the operation to redeem the authorization code\n */\n private async acquireTokenByCodeAsync(request: AuthorizationCodeRequest): Promise {\n this.logger.trace(\"acquireTokenByCodeAsync called\", request.correlationId);\n const silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId);\n const silentTokenResult = await silentAuthCodeClient.acquireToken(request);\n return silentTokenResult;\n }\n\n /**\n * Use this function to obtain a token before every call to the API / resource provider\n *\n * MSAL return's a cached token when available\n * Or it send's a request to the STS to obtain a new token using a refresh token.\n *\n * @param {@link SilentRequest}\n *\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n protected async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise {\n // block the reload if it occurred inside a hidden iframe\n BrowserUtils.blockReloadInHiddenIframes();\n const atbrtMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, request.correlationId);\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, request);\n\n const silentRefreshClient = this.createSilentRefreshClient(request.correlationId);\n\n return silentRefreshClient.acquireToken(request)\n .then((result: AuthenticationResult) => {\n atbrtMeasurement.endMeasurement({\n success: true,\n fromCache: result.fromCache,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n });\n return result;\n })\n .catch(e => {\n const isServerError = e instanceof ServerError;\n const isInteractionRequiredError = e instanceof InteractionRequiredAuthError;\n const isInvalidGrantError = (e.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\n if (isServerError && isInvalidGrantError && !isInteractionRequiredError) {\n this.logger.verbose(\"Refresh token expired or invalid, attempting acquire token by iframe\", request.correlationId);\n\n const silentIframeClient = this.createSilentIframeClient(request.correlationId);\n return silentIframeClient.acquireToken(request)\n .then((result: AuthenticationResult) => {\n atbrtMeasurement.endMeasurement({\n success: true,\n fromCache: result.fromCache,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n });\n\n return result;\n })\n .catch((error) => {\n atbrtMeasurement.endMeasurement({\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n success: false\n });\n throw error;\n });\n }\n atbrtMeasurement.endMeasurement({\n success: false\n });\n throw e;\n });\n }\n\n // #endregion\n\n // #region Logout\n\n /**\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\n * @param logoutRequest\n * @deprecated\n */\n async logout(logoutRequest?: EndSessionRequest): Promise {\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\", correlationId);\n return this.logoutRedirect({\n correlationId,\n ...logoutRequest\n });\n }\n\n /**\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param logoutRequest\n */\n async logoutRedirect(logoutRequest?: EndSessionRequest): Promise {\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\n\n const redirectClient = this.createRedirectClient(correlationId);\n return redirectClient.logout(logoutRequest);\n }\n\n /**\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\n * @param logoutRequest\n */\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise {\n try {\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\n const popupClient = this.createPopupClient(correlationId);\n return popupClient.logout(logoutRequest);\n } catch (e) {\n // Since this function is syncronous we need to reject\n return Promise.reject(e);\n }\n }\n\n // #endregion\n\n // #region Account APIs\n\n /**\n * Returns all accounts that MSAL currently has data for.\n * (the account object is created at the time of successful login)\n * or empty array when no accounts are found\n * @returns Array of account objects in cache\n */\n getAllAccounts(): AccountInfo[] {\n this.logger.verbose(\"getAllAccounts called\");\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\n }\n\n /**\n * Returns the signed in account matching username.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found.\n * This API is provided for convenience but getAccountById should be used for best reliability\n * @param userName\n * @returns The account object stored in MSAL\n */\n getAccountByUsername(userName: string): AccountInfo | null {\n const allAccounts = this.getAllAccounts();\n if (!StringUtils.isEmpty(userName) && allAccounts && allAccounts.length) {\n this.logger.verbose(\"Account matching username found, returning\");\n this.logger.verbosePii(`Returning signed-in accounts matching username: ${userName}`);\n return allAccounts.filter(accountObj => accountObj.username.toLowerCase() === userName.toLowerCase())[0] || null;\n } else {\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\n return null;\n }\n }\n\n /**\n * Returns the signed in account matching homeAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param homeAccountId\n * @returns The account object stored in MSAL\n */\n getAccountByHomeId(homeAccountId: string): AccountInfo | null {\n const allAccounts = this.getAllAccounts();\n if (!StringUtils.isEmpty(homeAccountId) && allAccounts && allAccounts.length) {\n this.logger.verbose(\"Account matching homeAccountId found, returning\");\n this.logger.verbosePii(`Returning signed-in accounts matching homeAccountId: ${homeAccountId}`);\n return allAccounts.filter(accountObj => accountObj.homeAccountId === homeAccountId)[0] || null;\n } else {\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\n return null;\n }\n }\n\n /**\n * Returns the signed in account matching localAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param localAccountId\n * @returns The account object stored in MSAL\n */\n getAccountByLocalId(localAccountId: string): AccountInfo | null {\n const allAccounts = this.getAllAccounts();\n if (!StringUtils.isEmpty(localAccountId) && allAccounts && allAccounts.length) {\n this.logger.verbose(\"Account matching localAccountId found, returning\");\n this.logger.verbosePii(`Returning signed-in accounts matching localAccountId: ${localAccountId}`);\n return allAccounts.filter(accountObj => accountObj.localAccountId === localAccountId)[0] || null;\n } else {\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\n return null;\n }\n }\n\n /**\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\n * @param account\n */\n setActiveAccount(account: AccountInfo | null): void {\n this.browserStorage.setActiveAccount(account);\n }\n\n /**\n * Gets the currently active account\n */\n getActiveAccount(): AccountInfo | null {\n return this.browserStorage.getActiveAccount();\n }\n\n // #endregion\n\n // #region Helpers\n\n /**\n * Helper to validate app environment before making an auth request\n *\n * @protected\n * @param {InteractionType} interactionType What kind of interaction is being used\n * @param {boolean} [setInteractionInProgress=true] Whether to set interaction in progress temp cache flag\n */\n protected preflightBrowserEnvironmentCheck(interactionType: InteractionType, setInteractionInProgress: boolean = true): void {\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\n // Block request if not in browser environment\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\n\n // Block redirects if in an iframe\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\n\n // Block auth requests inside a hidden iframe\n BrowserUtils.blockReloadInHiddenIframes();\n\n // Block redirectUri opened in a popup from calling MSAL APIs\n BrowserUtils.blockAcquireTokenInPopups();\n\n // Block token acquisition before initialize has been called if native brokering is enabled\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\n\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\n if (interactionType === InteractionType.Redirect &&\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\n !this.config.cache.storeAuthStateInCookie) {\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\n }\n\n if (interactionType === InteractionType.Redirect || interactionType === InteractionType.Popup) {\n this.preflightInteractiveRequest(setInteractionInProgress);\n }\n }\n\n /**\n * Preflight check for interactive requests\n *\n * @protected\n * @param {boolean} setInteractionInProgress Whether to set interaction in progress temp cache flag\n */\n protected preflightInteractiveRequest(setInteractionInProgress: boolean): void {\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\n // block the reload if it occurred inside a hidden iframe\n BrowserUtils.blockReloadInHiddenIframes();\n\n // Set interaction in progress temporary cache or throw if alread set.\n if (setInteractionInProgress) {\n this.browserStorage.setInteractionInProgress(true);\n }\n }\n\n /**\n * Acquire a token from native device (e.g. WAM)\n * @param request\n */\n protected async acquireTokenNative(request: PopupRequest | SilentRequest | SsoSilentRequest, apiId: ApiId, accountId?: string): Promise {\n this.logger.trace(\"acquireTokenNative called\");\n if (!this.nativeExtensionProvider) {\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n }\n\n const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\n\n return nativeClient.acquireToken(request);\n }\n\n /**\n * Returns boolean indicating if this request can use the native broker\n * @param request\n */\n protected canUseNative(request: RedirectRequest | PopupRequest | SsoSilentRequest, accountId?: string): boolean {\n this.logger.trace(\"canUseNative called\");\n if (!NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) {\n this.logger.trace(\"canUseNative: isNativeAvailable returned false, returning false\");\n return false;\n }\n\n if (request.prompt) {\n switch (request.prompt) {\n case PromptValue.NONE:\n case PromptValue.CONSENT:\n case PromptValue.LOGIN:\n this.logger.trace(\"canUseNative: prompt is compatible with native flow\");\n break;\n default:\n this.logger.trace(`canUseNative: prompt = ${request.prompt} is not compatible with native flow, returning false`);\n return false;\n }\n }\n\n if (!accountId && !this.getNativeAccountId(request)) {\n this.logger.trace(\"canUseNative: nativeAccountId is not available, returning false\");\n return false;\n }\n\n return true;\n }\n\n /**\n * Get the native accountId from the account\n * @param request\n * @returns\n */\n protected getNativeAccountId(request: RedirectRequest | PopupRequest | SsoSilentRequest): string {\n const account = request.account || this.browserStorage.getAccountInfoByHints(request.loginHint, request.sid) || this.getActiveAccount();\n\n return account && account.nativeAccountId || \"\";\n }\n\n /**\n * Returns new instance of the Popup Interaction Client\n * @param correlationId\n */\n protected createPopupClient(correlationId?: string): PopupClient {\n return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Redirect Interaction Client\n * @param correlationId\n */\n protected createRedirectClient(correlationId?: string): RedirectClient {\n return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Silent Iframe Interaction Client\n * @param correlationId\n */\n protected createSilentIframeClient(correlationId?: string): SilentIframeClient {\n return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Silent Cache Interaction Client\n */\n protected createSilentCacheClient(correlationId?: string): SilentCacheClient {\n return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Silent Refresh Interaction Client\n */\n protected createSilentRefreshClient(correlationId?: string): SilentRefreshClient {\n return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Silent AuthCode Interaction Client\n */\n protected createSilentAuthCodeClient(correlationId?: string): SilentAuthCodeClient {\n return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Adds event callbacks to array\n * @param callback\n */\n addEventCallback(callback: EventCallbackFunction): string | null {\n return this.eventHandler.addEventCallback(callback);\n }\n\n /**\n * Removes callback with provided id from callback array\n * @param callbackId\n */\n removeEventCallback(callbackId: string): void {\n this.eventHandler.removeEventCallback(callbackId);\n }\n\n /**\n * Registers a callback to receive performance events.\n *\n * @param {PerformanceCallbackFunction} callback\n * @returns {string}\n */\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\n return this.performanceClient.addPerformanceCallback(callback);\n }\n\n /**\n * Removes a callback registered with addPerformanceCallback.\n *\n * @param {string} callbackId\n * @returns {boolean}\n */\n removePerformanceCallback(callbackId: string): boolean {\n return this.performanceClient.removePerformanceCallback(callbackId);\n }\n\n /**\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n enableAccountStorageEvents(): void {\n this.eventHandler.enableAccountStorageEvents();\n }\n\n /**\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n disableAccountStorageEvents(): void {\n this.eventHandler.disableAccountStorageEvents();\n }\n\n /**\n * Gets the token cache for the application.\n */\n getTokenCache(): ITokenCache {\n return this.tokenCache;\n }\n\n /**\n * Returns the logger instance\n */\n getLogger(): Logger {\n return this.logger;\n }\n\n /**\n * Replaces the default logger set in configurations with new Logger with new configurations\n * @param logger Logger instance\n */\n setLogger(logger: Logger): void {\n this.logger = logger;\n }\n\n /**\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\n * @param sku\n * @param version\n */\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void {\n // Validate the SKU passed in is one we expect\n this.browserStorage.setWrapperMetadata(sku, version);\n }\n\n /**\n * Sets navigation client\n * @param navigationClient\n */\n setNavigationClient(navigationClient: INavigationClient): void {\n this.navigationClient = navigationClient;\n }\n\n /**\n * Returns the configuration object\n */\n getConfiguration(): BrowserConfiguration {\n return this.config;\n }\n\n /**\n * Generates a correlation id for a request if none is provided.\n *\n * @protected\n * @param {?Partial} [request]\n * @returns {string}\n */\n protected getRequestCorrelationId(request?: Partial): string {\n if (request?.correlationId) {\n return request.correlationId;\n }\n\n if (this.isBrowserEnvironment) {\n return this.browserCrypto.createNewGuid();\n }\n\n /*\n * Included for fallback for non-browser environments,\n * and to ensure this method always returns a string.\n */\n return Constants.EMPTY_STRING;\n }\n\n // #endregion\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountInfo, AuthenticationResult, Constants, RequestThumbprint, AuthError, PerformanceEvents } from \"@azure/msal-common\";\nimport { Configuration } from \"../config/Configuration\";\nimport { DEFAULT_REQUEST, InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { IPublicClientApplication } from \"./IPublicClientApplication\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { ClientApplication } from \"./ClientApplication\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { EventType } from \"../event/EventType\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\n\n/**\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\n */\nexport class PublicClientApplication extends ClientApplication implements IPublicClientApplication {\n\n // Active requests\n private activeSilentTokenRequests: Map>;\n\n /**\n * @constructor\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\n *\n * Important attributes in the Configuration object for auth are:\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\n * - authority: the authority URL for your application.\n * - redirect_uri: the uri of your application registered in the portal.\n *\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n *\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\n * Full B2C functionality will be available in this library in future versions.\n *\n * @param configuration object for the MSAL PublicClientApplication instance\n */\n constructor(configuration: Configuration) {\n super(configuration);\n\n this.activeSilentTokenRequests = new Map();\n }\n\n /**\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\n * any code that follows this function will not execute.\n *\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n *\n * @param request\n */\n async loginRedirect(request?: RedirectRequest): Promise {\n const correlationId: string = this.getRequestCorrelationId(request);\n this.logger.verbose(\"loginRedirect called\", correlationId);\n return this.acquireTokenRedirect({\n correlationId,\n ...(request || DEFAULT_REQUEST)\n });\n }\n\n /**\n * Use when initiating the login process via opening a popup window in the user's browser\n *\n * @param request\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n loginPopup(request?: PopupRequest): Promise {\n const correlationId: string = this.getRequestCorrelationId(request);\n this.logger.verbose(\"loginPopup called\", correlationId);\n return this.acquireTokenPopup({\n correlationId,\n ...(request || DEFAULT_REQUEST)\n });\n }\n\n /**\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\n *\n * @param {@link (SilentRequest:type)}\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\n */\n async acquireTokenSilent(request: SilentRequest): Promise {\n const correlationId = this.getRequestCorrelationId(request);\n const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId);\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n this.logger.verbose(\"acquireTokenSilent called\", correlationId);\n const account = request.account || this.getActiveAccount();\n if (!account) {\n throw BrowserAuthError.createNoAccountError();\n }\n const thumbprint: RequestThumbprint = {\n clientId: this.config.auth.clientId,\n authority: request.authority || Constants.EMPTY_STRING,\n scopes: request.scopes,\n homeAccountIdentifier: account.homeAccountId,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid\n };\n const silentRequestKey = JSON.stringify(thumbprint);\n const cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\n if (typeof cachedResponse === \"undefined\") {\n this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", correlationId);\n const response = this.acquireTokenSilentAsync({\n ...request,\n correlationId\n }, account)\n .then((result) => {\n this.activeSilentTokenRequests.delete(silentRequestKey);\n atsMeasurement.endMeasurement({\n success: true,\n fromCache: result.fromCache,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n isNativeBroker: result.fromNativeBroker\n });\n atsMeasurement.flushMeasurement();\n return result;\n })\n .catch((error: AuthError) => {\n this.activeSilentTokenRequests.delete(silentRequestKey);\n atsMeasurement.endMeasurement({\n success: false\n });\n atsMeasurement.flushMeasurement();\n throw error;\n });\n this.activeSilentTokenRequests.set(silentRequestKey, response);\n return response;\n } else {\n this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", correlationId);\n atsMeasurement.endMeasurement({\n success: true\n });\n // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\n atsMeasurement.discardMeasurement();\n return cachedResponse;\n }\n }\n\n /**\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\n * @param {@link (SilentRequest:type)}\n * @param {@link (AccountInfo:type)}\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} \n */\n protected async acquireTokenSilentAsync(request: SilentRequest, account: AccountInfo): Promise{\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\n const astsAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\n\n let result: Promise;\n if (NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme) && account.nativeAccountId) {\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from native platform\");\n const silentRequest: SilentRequest = {\n ...request,\n account\n };\n result = this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(async (e: AuthError) => {\n // If native token acquisition fails for availability reasons fallback to web flow\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.logger.verbose(\"acquireTokenSilent - native platform unavailable, falling back to web flow\");\n this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt \n\n // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal\n const silentIframeClient = this.createSilentIframeClient(request.correlationId);\n return silentIframeClient.acquireToken(request);\n }\n throw e;\n }); \n } else {\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from web flow\");\n const silentCacheClient = this.createSilentCacheClient(request.correlationId);\n const silentRequest = await silentCacheClient.initializeSilentRequest(request, account);\n result = silentCacheClient.acquireToken(silentRequest).catch(async () => {\n return this.acquireTokenByRefreshToken(silentRequest);\n });\n }\n\n return result.then((response) => {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response);\n astsAsyncMeasurement.endMeasurement({\n success: true,\n fromCache: response.fromCache,\n accessTokenSize: response.accessToken.length,\n idTokenSize: response.idToken.length,\n isNativeBroker: response.fromNativeBroker\n });\n return response;\n }).catch((tokenRenewalError: AuthError) => {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\n astsAsyncMeasurement.endMeasurement({\n errorCode: tokenRenewalError.errorCode,\n subErrorCode: tokenRenewalError.subError,\n success: false\n });\n throw tokenRenewalError;\n });\n }\n}\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom/client\";\r\nimport './assets/Css/all.css';\r\nimport App from \"./App\";\r\nimport { PublicClientApplication } from \"@azure/msal-browser\";\r\nimport { msalConfig } from \"./Auth/AuthConfig\";\r\nimport { MsalProvider } from \"@azure/msal-react\";\r\nimport {\r\n progressBarFetch,\r\n setOriginalFetch,\r\n ProgressBar,\r\n} from \"./Components/progressbar/progressbar\";\r\n\r\nimport { registerLicense } from '@syncfusion/ej2-base';\r\n\r\nimport './i18n';\r\n\r\n// Registering Syncfusion license key\r\nregisterLicense('Ngo9BigBOggjHTQxAR8/V1NBaF5cXmZCf1FpRmJGdld5fUVHYVZUTXxaS00DNHVRdkdnWXledXRRRGJfUEdyXEQ=');\r\n\r\nconst msalInstance = new PublicClientApplication(msalConfig);\r\n\r\n// for progressbar\r\nsetOriginalFetch(window.fetch);\r\nwindow.fetch = progressBarFetch;\r\n\r\nconst root = ReactDOM.createRoot(\r\n document.getElementById('root')\r\n);\r\n\r\nroot.render(\r\n \r\n \r\n \r\n \r\n);\r\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n\t(global = global || self, factory(global.ReactStripe = {}, global.React));\n}(this, (function (exports, React) { 'use strict';\n\n\tReact = React && Object.prototype.hasOwnProperty.call(React, 'default') ? React['default'] : React;\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t */\n\n\tvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\tvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\n\tfunction emptyFunction() {}\n\n\tfunction emptyFunctionWithReset() {}\n\n\temptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n\tvar factoryWithThrowingShims = function () {\n\t function shim(props, propName, componentName, location, propFullName, secret) {\n\t if (secret === ReactPropTypesSecret_1) {\n\t // It is still safe when called from React.\n\t return;\n\t }\n\n\t var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n\t err.name = 'Invariant Violation';\n\t throw err;\n\t }\n\t shim.isRequired = shim;\n\n\t function getShim() {\n\t return shim;\n\t }\n\t // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n\t var ReactPropTypes = {\n\t array: shim,\n\t bool: shim,\n\t func: shim,\n\t number: shim,\n\t object: shim,\n\t string: shim,\n\t symbol: shim,\n\t any: shim,\n\t arrayOf: getShim,\n\t element: shim,\n\t elementType: shim,\n\t instanceOf: getShim,\n\t node: shim,\n\t objectOf: getShim,\n\t oneOf: getShim,\n\t oneOfType: getShim,\n\t shape: getShim,\n\t exact: getShim,\n\t checkPropTypes: emptyFunctionWithReset,\n\t resetWarningCache: emptyFunction\n\t };\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\t return ReactPropTypes;\n\t};\n\n\tvar propTypes = createCommonjsModule(function (module) {\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t */\n\t{\n\t // By explicitly using `prop-types` you are opting into new production behavior.\n\t // http://fb.me/prop-types-in-prod\n\t module.exports = factoryWithThrowingShims();\n\t}\n\t});\n\n\tfunction ownKeys(object, enumerableOnly) {\n\t var keys = Object.keys(object);\n\n\t if (Object.getOwnPropertySymbols) {\n\t var symbols = Object.getOwnPropertySymbols(object);\n\n\t if (enumerableOnly) {\n\t symbols = symbols.filter(function (sym) {\n\t return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n\t });\n\t }\n\n\t keys.push.apply(keys, symbols);\n\t }\n\n\t return keys;\n\t}\n\n\tfunction _objectSpread2(target) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t var source = arguments[i] != null ? arguments[i] : {};\n\n\t if (i % 2) {\n\t ownKeys(Object(source), true).forEach(function (key) {\n\t _defineProperty(target, key, source[key]);\n\t });\n\t } else if (Object.getOwnPropertyDescriptors) {\n\t Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n\t } else {\n\t ownKeys(Object(source)).forEach(function (key) {\n\t Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n\t });\n\t }\n\t }\n\n\t return target;\n\t}\n\n\tfunction _typeof(obj) {\n\t \"@babel/helpers - typeof\";\n\n\t if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n\t _typeof = function (obj) {\n\t return typeof obj;\n\t };\n\t } else {\n\t _typeof = function (obj) {\n\t return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t };\n\t }\n\n\t return _typeof(obj);\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t if (key in obj) {\n\t Object.defineProperty(obj, key, {\n\t value: value,\n\t enumerable: true,\n\t configurable: true,\n\t writable: true\n\t });\n\t } else {\n\t obj[key] = value;\n\t }\n\n\t return obj;\n\t}\n\n\tfunction _slicedToArray(arr, i) {\n\t return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n\t}\n\n\tfunction _arrayWithHoles(arr) {\n\t if (Array.isArray(arr)) return arr;\n\t}\n\n\tfunction _iterableToArrayLimit(arr, i) {\n\t var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n\t if (_i == null) return;\n\t var _arr = [];\n\t var _n = true;\n\t var _d = false;\n\n\t var _s, _e;\n\n\t try {\n\t for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n\t _arr.push(_s.value);\n\n\t if (i && _arr.length === i) break;\n\t }\n\t } catch (err) {\n\t _d = true;\n\t _e = err;\n\t } finally {\n\t try {\n\t if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n\t } finally {\n\t if (_d) throw _e;\n\t }\n\t }\n\n\t return _arr;\n\t}\n\n\tfunction _unsupportedIterableToArray(o, minLen) {\n\t if (!o) return;\n\t if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n\t var n = Object.prototype.toString.call(o).slice(8, -1);\n\t if (n === \"Object\" && o.constructor) n = o.constructor.name;\n\t if (n === \"Map\" || n === \"Set\") return Array.from(o);\n\t if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n\t}\n\n\tfunction _arrayLikeToArray(arr, len) {\n\t if (len == null || len > arr.length) len = arr.length;\n\n\t for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n\t return arr2;\n\t}\n\n\tfunction _nonIterableRest() {\n\t throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n\t}\n\n\tvar usePrevious = function usePrevious(value) {\n\t var ref = React.useRef(value);\n\t React.useEffect(function () {\n\t ref.current = value;\n\t }, [value]);\n\t return ref.current;\n\t};\n\n\tvar isUnknownObject = function isUnknownObject(raw) {\n\t return raw !== null && _typeof(raw) === 'object';\n\t};\n\tvar isPromise = function isPromise(raw) {\n\t return isUnknownObject(raw) && typeof raw.then === 'function';\n\t}; // We are using types to enforce the `stripe` prop in this lib,\n\t// but in an untyped integration `stripe` could be anything, so we need\n\t// to do some sanity validation to prevent type errors.\n\n\tvar isStripe = function isStripe(raw) {\n\t return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n\t};\n\n\tvar PLAIN_OBJECT_STR = '[object Object]';\n\tvar isEqual = function isEqual(left, right) {\n\t if (!isUnknownObject(left) || !isUnknownObject(right)) {\n\t return left === right;\n\t }\n\n\t var leftArray = Array.isArray(left);\n\t var rightArray = Array.isArray(right);\n\t if (leftArray !== rightArray) return false;\n\t var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n\t var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n\t if (leftPlainObject !== rightPlainObject) return false; // not sure what sort of special object this is (regexp is one option), so\n\t // fallback to reference check.\n\n\t if (!leftPlainObject && !leftArray) return left === right;\n\t var leftKeys = Object.keys(left);\n\t var rightKeys = Object.keys(right);\n\t if (leftKeys.length !== rightKeys.length) return false;\n\t var keySet = {};\n\n\t for (var i = 0; i < leftKeys.length; i += 1) {\n\t keySet[leftKeys[i]] = true;\n\t }\n\n\t for (var _i = 0; _i < rightKeys.length; _i += 1) {\n\t keySet[rightKeys[_i]] = true;\n\t }\n\n\t var allKeys = Object.keys(keySet);\n\n\t if (allKeys.length !== leftKeys.length) {\n\t return false;\n\t }\n\n\t var l = left;\n\t var r = right;\n\n\t var pred = function pred(key) {\n\t return isEqual(l[key], r[key]);\n\t };\n\n\t return allKeys.every(pred);\n\t};\n\n\tvar extractAllowedOptionsUpdates = function extractAllowedOptionsUpdates(options, prevOptions, immutableKeys) {\n\t if (!isUnknownObject(options)) {\n\t return null;\n\t }\n\n\t return Object.keys(options).reduce(function (newOptions, key) {\n\t var isUpdated = !isUnknownObject(prevOptions) || !isEqual(options[key], prevOptions[key]);\n\n\t if (immutableKeys.includes(key)) {\n\t if (isUpdated) {\n\t console.warn(\"Unsupported prop change: options.\".concat(key, \" is not a mutable property.\"));\n\t }\n\n\t return newOptions;\n\t }\n\n\t if (!isUpdated) {\n\t return newOptions;\n\t }\n\n\t return _objectSpread2(_objectSpread2({}, newOptions || {}), {}, _defineProperty({}, key, options[key]));\n\t }, null);\n\t};\n\n\tvar INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.'; // We are using types to enforce the `stripe` prop in this lib, but in a real\n\t// integration `stripe` could be anything, so we need to do some sanity\n\t// validation to prevent type errors.\n\n\tvar validateStripe = function validateStripe(maybeStripe) {\n\t if (maybeStripe === null || isStripe(maybeStripe)) {\n\t return maybeStripe;\n\t }\n\n\t throw new Error(INVALID_STRIPE_ERROR);\n\t};\n\n\tvar parseStripeProp = function parseStripeProp(raw) {\n\t if (isPromise(raw)) {\n\t return {\n\t tag: 'async',\n\t stripePromise: Promise.resolve(raw).then(validateStripe)\n\t };\n\t }\n\n\t var stripe = validateStripe(raw);\n\n\t if (stripe === null) {\n\t return {\n\t tag: 'empty'\n\t };\n\t }\n\n\t return {\n\t tag: 'sync',\n\t stripe: stripe\n\t };\n\t};\n\n\tvar ElementsContext = /*#__PURE__*/React.createContext(null);\n\tElementsContext.displayName = 'ElementsContext';\n\tvar parseElementsContext = function parseElementsContext(ctx, useCase) {\n\t if (!ctx) {\n\t throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an provider.\"));\n\t }\n\n\t return ctx;\n\t};\n\tvar CartElementContext = /*#__PURE__*/React.createContext(null);\n\tCartElementContext.displayName = 'CartElementContext';\n\tvar parseCartElementContext = function parseCartElementContext(ctx, useCase) {\n\t if (!ctx) {\n\t throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an provider.\"));\n\t }\n\n\t return ctx;\n\t};\n\t/**\n\t * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n\t * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n\t *\n\t * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n\t * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n\t * Pass the returned `Promise` to `Elements`.\n\t *\n\t * @docs https://stripe.com/docs/stripe-js/react#elements-provider\n\t */\n\n\tvar Elements = function Elements(_ref) {\n\t var rawStripeProp = _ref.stripe,\n\t options = _ref.options,\n\t children = _ref.children;\n\t var parsed = React.useMemo(function () {\n\t return parseStripeProp(rawStripeProp);\n\t }, [rawStripeProp]);\n\n\t var _React$useState = React.useState(null),\n\t _React$useState2 = _slicedToArray(_React$useState, 2),\n\t cart = _React$useState2[0],\n\t setCart = _React$useState2[1];\n\n\t var _React$useState3 = React.useState(null),\n\t _React$useState4 = _slicedToArray(_React$useState3, 2),\n\t cartState = _React$useState4[0],\n\t setCartState = _React$useState4[1]; // For a sync stripe instance, initialize into context\n\n\n\t var _React$useState5 = React.useState(function () {\n\t return {\n\t stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n\t elements: parsed.tag === 'sync' ? parsed.stripe.elements(options) : null\n\t };\n\t }),\n\t _React$useState6 = _slicedToArray(_React$useState5, 2),\n\t ctx = _React$useState6[0],\n\t setContext = _React$useState6[1];\n\n\t React.useEffect(function () {\n\t var isMounted = true;\n\n\t var safeSetContext = function safeSetContext(stripe) {\n\t setContext(function (ctx) {\n\t // no-op if we already have a stripe instance (https://github.com/stripe/react-stripe-js/issues/296)\n\t if (ctx.stripe) return ctx;\n\t return {\n\t stripe: stripe,\n\t elements: stripe.elements(options)\n\t };\n\t });\n\t }; // For an async stripePromise, store it in context once resolved\n\n\n\t if (parsed.tag === 'async' && !ctx.stripe) {\n\t parsed.stripePromise.then(function (stripe) {\n\t if (stripe && isMounted) {\n\t // Only update Elements context if the component is still mounted\n\t // and stripe is not null. We allow stripe to be null to make\n\t // handling SSR easier.\n\t safeSetContext(stripe);\n\t }\n\t });\n\t } else if (parsed.tag === 'sync' && !ctx.stripe) {\n\t // Or, handle a sync stripe instance going from null -> populated\n\t safeSetContext(parsed.stripe);\n\t }\n\n\t return function () {\n\t isMounted = false;\n\t };\n\t }, [parsed, ctx, options]); // Warn on changes to stripe prop\n\n\t var prevStripe = usePrevious(rawStripeProp);\n\t React.useEffect(function () {\n\t if (prevStripe !== null && prevStripe !== rawStripeProp) {\n\t console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n\t }\n\t }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n\t var prevOptions = usePrevious(options);\n\t React.useEffect(function () {\n\t if (!ctx.elements) {\n\t return;\n\t }\n\n\t var updates = extractAllowedOptionsUpdates(options, prevOptions, ['clientSecret', 'fonts']);\n\n\t if (updates) {\n\t ctx.elements.update(updates);\n\t }\n\t }, [options, prevOptions, ctx.elements]); // Attach react-stripe-js version to stripe.js instance\n\n\t React.useEffect(function () {\n\t var anyStripe = ctx.stripe;\n\n\t if (!anyStripe || !anyStripe._registerWrapper || !anyStripe.registerAppInfo) {\n\t return;\n\t }\n\n\t anyStripe._registerWrapper({\n\t name: 'react-stripe-js',\n\t version: \"1.14.0\"\n\t });\n\n\t anyStripe.registerAppInfo({\n\t name: 'react-stripe-js',\n\t version: \"1.14.0\",\n\t url: 'https://stripe.com/docs/stripe-js/react'\n\t });\n\t }, [ctx.stripe]);\n\t return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n\t value: ctx\n\t }, /*#__PURE__*/React.createElement(CartElementContext.Provider, {\n\t value: {\n\t cart: cart,\n\t setCart: setCart,\n\t cartState: cartState,\n\t setCartState: setCartState\n\t }\n\t }, children));\n\t};\n\tElements.propTypes = {\n\t stripe: propTypes.any,\n\t options: propTypes.object\n\t};\n\tvar useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n\t var ctx = React.useContext(ElementsContext);\n\t return parseElementsContext(ctx, useCaseMessage);\n\t};\n\tvar useCartElementContextWithUseCase = function useCartElementContextWithUseCase(useCaseMessage) {\n\t var ctx = React.useContext(CartElementContext);\n\t return parseCartElementContext(ctx, useCaseMessage);\n\t};\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n\t */\n\n\tvar useElements = function useElements() {\n\t var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n\t elements = _useElementsContextWi.elements;\n\n\t return elements;\n\t};\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n\t */\n\n\tvar useStripe = function useStripe() {\n\t var _useElementsContextWi2 = useElementsContextWithUseCase('calls useStripe()'),\n\t stripe = _useElementsContextWi2.stripe;\n\n\t return stripe;\n\t};\n\t/**\n\t * @docs https://stripe.com/docs/payments/checkout/cart-element\n\t */\n\n\tvar useCartElement = function useCartElement() {\n\t var _useCartElementContex = useCartElementContextWithUseCase('calls useCartElement()'),\n\t cart = _useCartElementContex.cart;\n\n\t return cart;\n\t};\n\t/**\n\t * @docs https://stripe.com/docs/payments/checkout/cart-element\n\t */\n\n\tvar useCartElementState = function useCartElementState() {\n\t var _useCartElementContex2 = useCartElementContextWithUseCase('calls useCartElementState()'),\n\t cartState = _useCartElementContex2.cartState;\n\n\t return cartState;\n\t};\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n\t */\n\n\tvar ElementsConsumer = function ElementsConsumer(_ref2) {\n\t var children = _ref2.children;\n\t var ctx = useElementsContextWithUseCase('mounts '); // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n\n\t return children(ctx);\n\t};\n\tElementsConsumer.propTypes = {\n\t children: propTypes.func.isRequired\n\t};\n\n\tvar useCallbackReference = function useCallbackReference(cb) {\n\t var ref = React.useRef(cb);\n\t React.useEffect(function () {\n\t ref.current = cb;\n\t }, [cb]);\n\t return function () {\n\t if (ref.current) {\n\t ref.current.apply(ref, arguments);\n\t }\n\t };\n\t};\n\n\tvar noop = function noop() {};\n\n\tvar capitalized = function capitalized(str) {\n\t return str.charAt(0).toUpperCase() + str.slice(1);\n\t};\n\n\tvar createElementComponent = function createElementComponent(type, isServer) {\n\t var displayName = \"\".concat(capitalized(type), \"Element\");\n\n\t var ClientElement = function ClientElement(_ref) {\n\t var id = _ref.id,\n\t className = _ref.className,\n\t _ref$options = _ref.options,\n\t options = _ref$options === void 0 ? {} : _ref$options,\n\t _ref$onBlur = _ref.onBlur,\n\t onBlur = _ref$onBlur === void 0 ? noop : _ref$onBlur,\n\t _ref$onFocus = _ref.onFocus,\n\t onFocus = _ref$onFocus === void 0 ? noop : _ref$onFocus,\n\t _ref$onReady = _ref.onReady,\n\t onReady = _ref$onReady === void 0 ? noop : _ref$onReady,\n\t _ref$onChange = _ref.onChange,\n\t onChange = _ref$onChange === void 0 ? noop : _ref$onChange,\n\t _ref$onEscape = _ref.onEscape,\n\t onEscape = _ref$onEscape === void 0 ? noop : _ref$onEscape,\n\t _ref$onClick = _ref.onClick,\n\t onClick = _ref$onClick === void 0 ? noop : _ref$onClick,\n\t _ref$onLoadError = _ref.onLoadError,\n\t onLoadError = _ref$onLoadError === void 0 ? noop : _ref$onLoadError,\n\t _ref$onLoaderStart = _ref.onLoaderStart,\n\t onLoaderStart = _ref$onLoaderStart === void 0 ? noop : _ref$onLoaderStart,\n\t _ref$onNetworksChange = _ref.onNetworksChange,\n\t onNetworksChange = _ref$onNetworksChange === void 0 ? noop : _ref$onNetworksChange,\n\t _ref$onCheckout = _ref.onCheckout,\n\t onCheckout = _ref$onCheckout === void 0 ? noop : _ref$onCheckout,\n\t _ref$onLineItemClick = _ref.onLineItemClick,\n\t onLineItemClick = _ref$onLineItemClick === void 0 ? noop : _ref$onLineItemClick;\n\n\t var _useElementsContextWi = useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n\t elements = _useElementsContextWi.elements;\n\n\t var elementRef = React.useRef(null);\n\t var domNode = React.useRef(null);\n\n\t var _useCartElementContex = useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n\t setCart = _useCartElementContex.setCart,\n\t setCartState = _useCartElementContex.setCartState;\n\n\t var callOnReady = useCallbackReference(onReady);\n\t var callOnBlur = useCallbackReference(onBlur);\n\t var callOnFocus = useCallbackReference(onFocus);\n\t var callOnClick = useCallbackReference(onClick);\n\t var callOnChange = useCallbackReference(onChange);\n\t var callOnEscape = useCallbackReference(onEscape);\n\t var callOnLoadError = useCallbackReference(onLoadError);\n\t var callOnLoaderStart = useCallbackReference(onLoaderStart);\n\t var callOnNetworksChange = useCallbackReference(onNetworksChange);\n\t var callOnCheckout = useCallbackReference(onCheckout);\n\t var callOnLineItemClick = useCallbackReference(onLineItemClick);\n\t React.useLayoutEffect(function () {\n\t if (elementRef.current == null && elements && domNode.current != null) {\n\t var element = elements.create(type, options);\n\n\t if (type === 'cart' && setCart) {\n\t // we know that elements.create return value must be of type StripeCartElement if type is 'cart',\n\t // we need to cast because typescript is not able to infer which overloaded method is used based off param type\n\t setCart(element);\n\t }\n\n\t elementRef.current = element;\n\t element.mount(domNode.current);\n\t element.on('ready', function (event) {\n\t if (type === 'cart' && setCartState) {\n\t // we know that elements.on event must be of type StripeCartPayloadEvent if type is 'cart'\n\t // we need to cast because typescript is not able to infer which overloaded method is used based off param type\n\t setCartState(event);\n\t }\n\n\t callOnReady(element);\n\t });\n\t element.on('change', function (event) {\n\t if (type === 'cart' && setCartState) {\n\t // we know that elements.on event must be of type StripeCartPayloadEvent if type is 'cart'\n\t // we need to cast because typescript is not able to infer which overloaded method is used based off param type\n\t setCartState(event);\n\t }\n\n\t callOnChange(event);\n\t }); // Users can pass an onBlur prop on any Element component\n\t // just as they could listen for the `blur` event on any Element,\n\t // but only certain Elements will trigger the event.\n\n\t element.on('blur', callOnBlur); // Users can pass an onFocus prop on any Element component\n\t // just as they could listen for the `focus` event on any Element,\n\t // but only certain Elements will trigger the event.\n\n\t element.on('focus', callOnFocus); // Users can pass an onEscape prop on any Element component\n\t // just as they could listen for the `escape` event on any Element,\n\t // but only certain Elements will trigger the event.\n\n\t element.on('escape', callOnEscape); // Users can pass an onLoadError prop on any Element component\n\t // just as they could listen for the `loaderror` event on any Element,\n\t // but only certain Elements will trigger the event.\n\n\t element.on('loaderror', callOnLoadError); // Users can pass an onLoaderStart prop on any Element component\n\t // just as they could listen for the `loaderstart` event on any Element,\n\t // but only certain Elements will trigger the event.\n\n\t element.on('loaderstart', callOnLoaderStart); // Users can pass an onNetworksChange prop on any Element component\n\t // just as they could listen for the `networkschange` event on any Element,\n\t // but only the Card and CardNumber Elements will trigger the event.\n\n\t element.on('networkschange', callOnNetworksChange); // Users can pass an onClick prop on any Element component\n\t // just as they could listen for the `click` event on any Element,\n\t // but only the PaymentRequestButton will actually trigger the event.\n\n\t element.on('click', callOnClick); // Users can pass an onCheckout prop on any Element component\n\t // just as they could listen for the `checkout` event on any Element,\n\t // but only certain Elements will trigger the event.\n\n\t element.on('checkout', function (event) {\n\t if (type === 'cart' && setCartState) {\n\t // we know that elements.on event must be of type StripeCartPayloadEvent if type is 'cart'\n\t // we need to cast because typescript is not able to infer which overloaded method is used based off param type\n\t setCartState(event);\n\t }\n\n\t callOnCheckout(event);\n\t }); // Users can pass an onLineItemClick prop on any Element component\n\t // just as they could listen for the `lineitemclick` event on any Element,\n\t // but only certain Elements will trigger the event.\n\n\t element.on('lineitemclick', callOnLineItemClick);\n\t }\n\t });\n\t var prevOptions = usePrevious(options);\n\t React.useEffect(function () {\n\t if (!elementRef.current) {\n\t return;\n\t }\n\n\t var updates = extractAllowedOptionsUpdates(options, prevOptions, ['paymentRequest']);\n\n\t if (updates) {\n\t elementRef.current.update(updates);\n\t }\n\t }, [options, prevOptions]);\n\t React.useLayoutEffect(function () {\n\t return function () {\n\t if (elementRef.current) {\n\t elementRef.current.destroy();\n\t elementRef.current = null;\n\t }\n\t };\n\t }, []);\n\t return /*#__PURE__*/React.createElement(\"div\", {\n\t id: id,\n\t className: className,\n\t ref: domNode\n\t });\n\t }; // Only render the Element wrapper in a server environment.\n\n\n\t var ServerElement = function ServerElement(props) {\n\t // Validate that we are in the right context by calling useElementsContextWithUseCase.\n\t useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n\t useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n\t var id = props.id,\n\t className = props.className;\n\t return /*#__PURE__*/React.createElement(\"div\", {\n\t id: id,\n\t className: className\n\t });\n\t };\n\n\t var Element = isServer ? ServerElement : ClientElement;\n\t Element.propTypes = {\n\t id: propTypes.string,\n\t className: propTypes.string,\n\t onChange: propTypes.func,\n\t onBlur: propTypes.func,\n\t onFocus: propTypes.func,\n\t onReady: propTypes.func,\n\t onEscape: propTypes.func,\n\t onClick: propTypes.func,\n\t onLoadError: propTypes.func,\n\t onLoaderStart: propTypes.func,\n\t onNetworksChange: propTypes.func,\n\t onCheckout: propTypes.func,\n\t onLineItemClick: propTypes.func,\n\t options: propTypes.object\n\t };\n\t Element.displayName = displayName;\n\t Element.__elementType = type;\n\t return Element;\n\t};\n\n\tvar isServer = typeof window === 'undefined';\n\t/**\n\t * Requires beta access:\n\t * Contact [Stripe support](https://support.stripe.com/) for more information.\n\t *\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar CardElement = createElementComponent('card', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar CardNumberElement = createElementComponent('cardNumber', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar CardExpiryElement = createElementComponent('cardExpiry', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar CardCvcElement = createElementComponent('cardCvc', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar FpxBankElement = createElementComponent('fpxBank', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar IbanElement = createElementComponent('iban', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar IdealBankElement = createElementComponent('idealBank', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar P24BankElement = createElementComponent('p24Bank', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar EpsBankElement = createElementComponent('epsBank', isServer);\n\tvar PaymentElement = createElementComponent('payment', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar PaymentRequestButtonElement = createElementComponent('paymentRequestButton', isServer);\n\t/**\n\t * Requires beta access:\n\t * Contact [Stripe support](https://support.stripe.com/) for more information.\n\t *\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar LinkAuthenticationElement = createElementComponent('linkAuthentication', isServer);\n\t/**\n\t * Requires beta access:\n\t * Contact [Stripe support](https://support.stripe.com/) for more information.\n\t *\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar AddressElement = createElementComponent('address', isServer);\n\t/**\n\t * @deprecated\n\t * Use `AddressElement` instead.\n\t *\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar ShippingAddressElement = createElementComponent('shippingAddress', isServer);\n\t/**\n\t * Requires beta access:\n\t * Contact [Stripe support](https://support.stripe.com/) for more information.\n\t *\n\t * @docs https://stripe.com/docs/elements/cart-element\n\t */\n\n\tvar CartElement = createElementComponent('cart', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar PaymentMethodMessagingElement = createElementComponent('paymentMethodMessaging', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar AffirmMessageElement = createElementComponent('affirmMessage', isServer);\n\t/**\n\t * @docs https://stripe.com/docs/stripe-js/react#element-components\n\t */\n\n\tvar AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);\n\n\texports.AddressElement = AddressElement;\n\texports.AffirmMessageElement = AffirmMessageElement;\n\texports.AfterpayClearpayMessageElement = AfterpayClearpayMessageElement;\n\texports.AuBankAccountElement = AuBankAccountElement;\n\texports.CardCvcElement = CardCvcElement;\n\texports.CardElement = CardElement;\n\texports.CardExpiryElement = CardExpiryElement;\n\texports.CardNumberElement = CardNumberElement;\n\texports.CartElement = CartElement;\n\texports.Elements = Elements;\n\texports.ElementsConsumer = ElementsConsumer;\n\texports.EpsBankElement = EpsBankElement;\n\texports.FpxBankElement = FpxBankElement;\n\texports.IbanElement = IbanElement;\n\texports.IdealBankElement = IdealBankElement;\n\texports.LinkAuthenticationElement = LinkAuthenticationElement;\n\texports.P24BankElement = P24BankElement;\n\texports.PaymentElement = PaymentElement;\n\texports.PaymentMethodMessagingElement = PaymentMethodMessagingElement;\n\texports.PaymentRequestButtonElement = PaymentRequestButtonElement;\n\texports.ShippingAddressElement = ShippingAddressElement;\n\texports.useCartElement = useCartElement;\n\texports.useCartElementState = useCartElementState;\n\texports.useElements = useElements;\n\texports.useStripe = useStripe;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","/* The following list is defined in React's core */\nvar IS_UNITLESS = {\n animationIterationCount: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n stopOpacity: true,\n strokeDashoffset: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\nmodule.exports = function(name, value) {\n if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\n return value + 'px';\n } else {\n return value;\n }\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');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\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 var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\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(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, 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 var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n 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 || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\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 // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\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// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\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\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\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 * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\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),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\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');\nvar Cancel = require('../cancel/Cancel');\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 if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\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 status: this.response && this.response.status ? this.response.status : null\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 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 // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\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 || defaults.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 headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\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","module.exports = {\n \"version\": \"0.22.0\"\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 VERSION = require('../env/data').version;\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 = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + 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' + (version ? ' in ' + version : '')));\n }\n\n if (version && !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 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","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function e(r){var o,t,f=\"\";if(\"string\"==typeof r||\"number\"==typeof r)f+=r;else if(\"object\"==typeof r)if(Array.isArray(r))for(o=0;o 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(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\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\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\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 case 'none':\n str += '; SameSite=None';\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",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t const N = 16;\n\n\t //Origin pbox and sbox, derived from PI\n\t const ORIG_P = [\n\t 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t 0x9216D5D9, 0x8979FB1B\n\t ];\n\n\t const ORIG_S = [\n\t [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n\t [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n\t [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n\t [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n\t ];\n\n\t var BLOWFISH_CTX = {\n\t pbox: [],\n\t sbox: []\n\t }\n\n\t function F(ctx, x){\n\t let a = (x >> 24) & 0xFF;\n\t let b = (x >> 16) & 0xFF;\n\t let c = (x >> 8) & 0xFF;\n\t let d = x & 0xFF;\n\n\t let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t y = y ^ ctx.sbox[2][c];\n\t y = y + ctx.sbox[3][d];\n\n\t return y;\n\t }\n\n\t function BlowFish_Encrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = 0; i < N; ++i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[N];\n\t Xl = Xl ^ ctx.pbox[N + 1];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t function BlowFish_Decrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = N + 1; i > 1; --i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[1];\n\t Xl = Xl ^ ctx.pbox[0];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t /**\n\t * Initialization ctx's pbox and sbox.\n\t *\n\t * @param {Object} ctx The object has pbox and sbox.\n\t * @param {Array} key An array of 32-bit words.\n\t * @param {int} keysize The length of the key.\n\t *\n\t * @example\n\t *\n\t * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t */\n\t function BlowFishInit(ctx, key, keysize)\n\t {\n\t for(let Row = 0; Row < 4; Row++)\n\t {\n\t ctx.sbox[Row] = [];\n\t for(let Col = 0; Col < 256; Col++)\n\t {\n\t ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t }\n\t }\n\n\t let keyIndex = 0;\n\t for(let index = 0; index < N + 2; index++)\n\t {\n\t ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t keyIndex++;\n\t if(keyIndex >= keysize)\n\t {\n\t keyIndex = 0;\n\t }\n\t }\n\n\t let Data1 = 0;\n\t let Data2 = 0;\n\t let res = 0;\n\t for(let i = 0; i < N + 2; i += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.pbox[i] = Data1;\n\t ctx.pbox[i + 1] = Data2;\n\t }\n\n\t for(let i = 0; i < 4; i++)\n\t {\n\t for(let j = 0; j < 256; j += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.sbox[i][j] = Data1;\n\t ctx.sbox[i][j + 1] = Data2;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t /**\n\t * Blowfish block cipher algorithm.\n\t */\n\t var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t //Initialization pbox and sbox\n\t BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t blockSize: 64/32,\n\n\t keySize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t * @property {number} iterations The number of iterations to perform. Default: 250000\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA256,\n\t iterations: 250000\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","'use strict';\n\nvar 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 getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(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\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\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\nmodule.exports = deepmerge_1;\n","var prefix = require('prefix-style')\nvar toCamelCase = require('to-camel-case')\nvar cache = { 'float': 'cssFloat' }\nvar addPxToStyle = require('add-px-to-style')\n\nfunction style (element, property, value) {\n var camel = cache[property]\n if (typeof camel === 'undefined') {\n camel = detect(property)\n }\n\n // may be false if CSS prop is unsupported\n if (camel) {\n if (value === undefined) {\n return element.style[camel]\n }\n\n element.style[camel] = addPxToStyle(camel, value)\n }\n}\n\nfunction each (element, properties) {\n for (var k in properties) {\n if (properties.hasOwnProperty(k)) {\n style(element, k, properties[k])\n }\n }\n}\n\nfunction detect (cssProp) {\n var camel = toCamelCase(cssProp)\n var result = prefix(camel)\n cache[camel] = cache[cssProp] = cache[result] = result\n return result\n}\n\nfunction set () {\n if (arguments.length === 2) {\n if (typeof arguments[1] === 'string') {\n arguments[0].style.cssText = arguments[1]\n } else {\n each(arguments[0], arguments[1])\n }\n } else {\n style(arguments[0], arguments[1], arguments[2])\n }\n}\n\nmodule.exports = set\nmodule.exports.set = set\n\nmodule.exports.get = function (element, properties) {\n if (Array.isArray(properties)) {\n return properties.reduce(function (obj, prop) {\n obj[prop] = style(element, prop || '')\n return obj\n }, {})\n } else {\n return style(element, properties || '')\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import {\n EqualityComparator,\n InternalEqualityComparator,\n TypeEqualityComparator,\n} from '../index.d';\n\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nexport function createDefaultIsNestedEqual(\n comparator: EqualityComparator,\n): InternalEqualityComparator {\n return function isEqual(\n a: A,\n b: B,\n _indexOrKeyA: any,\n _indexOrKeyB: any,\n _parentA: any,\n _parentB: any,\n meta: Meta,\n ) {\n return comparator(a, b, meta);\n };\n}\n\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular cache, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nexport function createIsCircular<\n AreItemsEqual extends TypeEqualityComparator,\n>(areItemsEqual: AreItemsEqual): AreItemsEqual {\n return function isCircular(\n a: any,\n b: any,\n isEqual: InternalEqualityComparator>,\n cache: WeakMap,\n ) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, isEqual, cache);\n }\n\n const cachedA = cache.get(a);\n const cachedB = cache.get(b);\n\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n\n cache.set(a, b);\n cache.set(b, a);\n\n const result = areItemsEqual(a, b, isEqual, cache);\n\n cache.delete(a);\n cache.delete(b);\n\n return result;\n } as AreItemsEqual;\n}\n\n/**\n * Targeted shallow merge of two objects.\n *\n * @NOTE\n * This exists as a tinier compiled version of the `__assign` helper that\n * `tsc` injects in case of `Object.assign` not being present.\n */\nexport function merge(a: A, b: B): A & B {\n const merged: Record = {};\n\n for (const key in a) {\n merged[key] = a[key];\n }\n\n for (const key in b) {\n merged[key] = b[key];\n }\n\n return merged as A & B;\n}\n\n/**\n * Whether the value is a plain object.\n *\n * @NOTE\n * This is a same-realm compariosn only.\n */\nexport function isPlainObject(value: any): boolean {\n return value.constructor === Object || value.constructor == null;\n}\n\n/**\n * When the value is `Promise`-like, aka \"then-able\".\n */\nexport function isPromiseLike(value: any): boolean {\n return typeof value.then === 'function';\n}\n\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nexport function sameValueZeroEqual(a: any, b: any): boolean {\n return a === b || (a !== a && b !== b);\n}\n","import { isPlainObject, isPromiseLike, sameValueZeroEqual } from './utils';\n\nimport type {\n CreateComparatorCreatorOptions,\n EqualityComparator,\n} from '../index.d';\n\nconst ARGUMENTS_TAG = '[object Arguments]';\nconst BOOLEAN_TAG = '[object Boolean]';\nconst DATE_TAG = '[object Date]';\nconst REG_EXP_TAG = '[object RegExp]';\nconst MAP_TAG = '[object Map]';\nconst NUMBER_TAG = '[object Number]';\nconst OBJECT_TAG = '[object Object]';\nconst SET_TAG = '[object Set]';\nconst STRING_TAG = '[object String]';\n\nconst { toString } = Object.prototype;\n\nexport function createComparator({\n areArraysEqual,\n areDatesEqual,\n areMapsEqual,\n areObjectsEqual,\n areRegExpsEqual,\n areSetsEqual,\n createIsNestedEqual,\n}: CreateComparatorCreatorOptions): EqualityComparator {\n const isEqual = createIsNestedEqual(comparator as EqualityComparator);\n\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n function comparator(a: any, b: any, meta: Meta): boolean {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\n\n // If the items are not non-nullish objects, then the only possibility\n // of them being equal but not strictly is if they are both `NaN`. Since\n // `NaN` is uniquely not equal to itself, we can use self-comparison of\n // both objects, which is faster than `isNaN()`.\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return a !== a && b !== b;\n }\n\n // Checks are listed in order of commonality of use-case:\n // 1. Common complex object types (plain object, array)\n // 2. Common data values (date, regexp)\n // 3. Less-common complex object types (map, set)\n // 4. Less-common data values (promise, primitive wrappers)\n // Inherently this is both subjective and assumptive, however\n // when reviewing comparable libraries in the wild this order\n // appears to be generally consistent.\n\n // `isPlainObject` only checks against the object's own realm. Cross-realm\n // comparisons are rare, and will be handled in the ultimate fallback, so\n // we can avoid the `toString.call()` cost unless necessary.\n if (isPlainObject(a) && isPlainObject(b)) {\n return areObjectsEqual(a, b, isEqual, meta);\n }\n\n // `isArray()` works on subclasses and is cross-realm, so we can again avoid\n // the `toString.call()` cost unless necessary by just checking if either\n // and then both are arrays.\n const aArray = Array.isArray(a);\n const bArray = Array.isArray(b);\n\n if (aArray || bArray) {\n return aArray === bArray && areArraysEqual(a, b, isEqual, meta);\n }\n\n // Since this is a custom object, use the classic `toString.call()` to get its\n // type. This is reasonably performant in modern environments like v8 and\n // SpiderMonkey, and allows for cross-realm comparison when other checks like\n // `instanceof` do not.\n const aTag = toString.call(a);\n\n if (aTag !== toString.call(b)) {\n return false;\n }\n\n if (aTag === DATE_TAG) {\n // `getTime()` showed better results compared to alternatives like `valueOf()`\n // or the unary `+` operator.\n return areDatesEqual(a, b, isEqual, meta);\n }\n\n if (aTag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, isEqual, meta);\n }\n\n if (aTag === MAP_TAG) {\n return areMapsEqual(a, b, isEqual, meta);\n }\n\n if (aTag === SET_TAG) {\n return areSetsEqual(a, b, isEqual, meta);\n }\n\n // If a simple object tag, then we can prioritize a simple object comparison because\n // it is likely a custom class. If an arguments tag, it should be treated as a standard\n // object.\n if (aTag === OBJECT_TAG || aTag === ARGUMENTS_TAG) {\n // The exception for value comparison is `Promise`-like contracts. These should be\n // treated the same as standard `Promise` objects, which means strict equality.\n return isPromiseLike(a) || isPromiseLike(b)\n ? false\n : areObjectsEqual(a, b, isEqual, meta);\n }\n\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\n // types.\n if (aTag === BOOLEAN_TAG || aTag === NUMBER_TAG || aTag === STRING_TAG) {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n }\n\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n // comparison that can be made.\n // - For types that can be introspected, but rarely have requirements to be compared\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n // use-cases (may be included in a future release, if requested enough).\n // - For types that can be introspected but do not have an objective definition of what\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n // In all cases, these decisions should be reevaluated based on changes to the language and\n // common development practices.\n return false;\n }\n\n return comparator as EqualityComparator;\n}\n","import { createIsCircular } from './utils';\n\nimport type { InternalEqualityComparator } from '../index.d';\n\n/**\n * Whether the arrays are equal in value.\n */\nexport function areArraysEqual(\n a: any[],\n b: any[],\n isEqual: InternalEqualityComparator,\n meta: any,\n): boolean {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n if (!isEqual(a[index], b[index], index, index, a, b, meta)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the arrays are equal in value, including circular references.\n */\nexport const areArraysEqualCircular = createIsCircular(areArraysEqual);\n","import { sameValueZeroEqual } from './utils';\n\n/**\n * Whether the dates passed are equal in value.\n *\n * @NOTE\n * This is a standalone function instead of done inline in the comparator\n * to allow for overrides.\n */\nexport function areDatesEqual(a: Date, b: Date): boolean {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n","import { createIsCircular } from './utils';\n\nimport type { InternalEqualityComparator } from '../index.d';\n\n/**\n * Whether the `Map`s are equal in value.\n */\nexport function areMapsEqual(\n a: Map,\n b: Map,\n isEqual: InternalEqualityComparator,\n meta: any,\n): boolean {\n let isValueEqual = a.size === b.size;\n\n if (!isValueEqual) {\n return false;\n }\n\n if (!a.size) {\n return true;\n }\n\n // The use of `forEach()` is to avoid the transpilation cost of `for...of` comparisons, and\n // the inability to control the performance of the resulting code. It also avoids excessive\n // iteration compared to doing comparisons of `keys()` and `values()`. As a result, though,\n // we cannot short-circuit the iterations; bookkeeping must be done to short-circuit the\n // equality checks themselves.\n\n const matchedIndices: Record = {};\n\n let indexA = 0;\n\n a.forEach((aValue, aKey) => {\n if (!isValueEqual) {\n return;\n }\n\n let hasMatch = false;\n let matchIndexB = 0;\n\n b.forEach((bValue, bKey) => {\n if (\n !hasMatch &&\n !matchedIndices[matchIndexB] &&\n (hasMatch =\n isEqual(aKey, bKey, indexA, matchIndexB, a, b, meta) &&\n isEqual(aValue, bValue, aKey, bKey, a, b, meta))\n ) {\n matchedIndices[matchIndexB] = true;\n }\n\n matchIndexB++;\n });\n\n indexA++;\n isValueEqual = hasMatch;\n });\n\n return isValueEqual;\n}\n\n/**\n * Whether the `Map`s are equal in value, including circular references.\n */\nexport const areMapsEqualCircular = createIsCircular(areMapsEqual);\n","import { createIsCircular } from './utils';\n\nimport type { InternalEqualityComparator } from '../index.d';\n\ninterface Dictionary {\n [key: string]: Value;\n $$typeof?: any;\n}\n\nconst OWNER = '_owner';\nconst { hasOwnProperty } = Object.prototype;\n\n/**\n * Whether the objects are equal in value.\n */\nexport function areObjectsEqual(\n a: Dictionary,\n b: Dictionary,\n isEqual: InternalEqualityComparator,\n meta: any,\n): boolean {\n const keysA = Object.keys(a);\n\n let index = keysA.length;\n\n if (Object.keys(b).length !== index) {\n return false;\n }\n\n let key: string;\n\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n key = keysA[index];\n\n if (key === OWNER) {\n const reactElementA = !!a.$$typeof;\n const reactElementB = !!b.$$typeof;\n\n if ((reactElementA || reactElementB) && reactElementA !== reactElementB) {\n return false;\n }\n }\n\n if (\n !hasOwnProperty.call(b, key) ||\n !isEqual(a[key], b[key], key, key, a, b, meta)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the objects are equal in value, including circular references.\n */\nexport const areObjectsEqualCircular = createIsCircular(areObjectsEqual);\n","/**\n * Whether the regexps passed are equal in value.\n *\n * @NOTE\n * This is a standalone function instead of done inline in the comparator\n * to allow for overrides. An example of this would be supporting a\n * pre-ES2015 environment where the `flags` property is not available.\n */\nexport function areRegExpsEqual(a: RegExp, b: RegExp): boolean {\n return a.source === b.source && a.flags === b.flags;\n}\n","import { createIsCircular } from './utils';\n\nimport type { InternalEqualityComparator } from '../index.d';\n\n/**\n * Whether the `Set`s are equal in value.\n */\nexport function areSetsEqual(\n a: Set,\n b: Set,\n isEqual: InternalEqualityComparator,\n meta: any,\n): boolean {\n let isValueEqual = a.size === b.size;\n\n if (!isValueEqual) {\n return false;\n }\n\n if (!a.size) {\n return true;\n }\n\n // The use of `forEach()` is to avoid the transpilation cost of `for...of` comparisons, and\n // the inability to control the performance of the resulting code. It also avoids excessive\n // iteration compared to doing comparisons of `keys()` and `values()`. As a result, though,\n // we cannot short-circuit the iterations; bookkeeping must be done to short-circuit the\n // equality checks themselves.\n\n const matchedIndices: Record = {};\n\n a.forEach((aValue, aKey) => {\n if (!isValueEqual) {\n return;\n }\n\n let hasMatch = false;\n let matchIndex = 0;\n\n b.forEach((bValue, bKey) => {\n if (\n !hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch = isEqual(aValue, bValue, aKey, bKey, a, b, meta))\n ) {\n matchedIndices[matchIndex] = true;\n }\n\n matchIndex++;\n });\n\n isValueEqual = hasMatch;\n });\n\n return isValueEqual;\n}\n\n/**\n * Whether the `Set`s are equal in value, including circular references.\n */\nexport const areSetsEqualCircular = createIsCircular(areSetsEqual);\n","import { createComparator } from './comparator';\nimport { areArraysEqual, areArraysEqualCircular } from './arrays';\nimport { areDatesEqual } from './dates';\nimport { areMapsEqual, areMapsEqualCircular } from './maps';\nimport { areObjectsEqual, areObjectsEqualCircular } from './objects';\nimport { areRegExpsEqual } from './regexps';\nimport { areSetsEqual, areSetsEqualCircular } from './sets';\nimport { createDefaultIsNestedEqual, merge, sameValueZeroEqual } from './utils';\n\nimport type {\n BaseCircularMeta,\n CreateComparatorCreatorOptions,\n EqualityComparator,\n GetComparatorOptions,\n} from '../index.d';\n\nexport { sameValueZeroEqual };\n\nconst DEFAULT_CONFIG: CreateComparatorCreatorOptions = Object.freeze(\n {\n areArraysEqual,\n areDatesEqual,\n areMapsEqual,\n areObjectsEqual,\n areRegExpsEqual,\n areSetsEqual,\n createIsNestedEqual: createDefaultIsNestedEqual,\n },\n);\nconst DEFAULT_CIRCULAR_CONFIG: CreateComparatorCreatorOptions =\n Object.freeze({\n areArraysEqual: areArraysEqualCircular,\n areDatesEqual,\n areMapsEqual: areMapsEqualCircular,\n areObjectsEqual: areObjectsEqualCircular,\n areRegExpsEqual,\n areSetsEqual: areSetsEqualCircular,\n createIsNestedEqual: createDefaultIsNestedEqual,\n });\n\nconst isDeepEqual = createComparator(DEFAULT_CONFIG);\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nexport function deepEqual(a: A, b: B): boolean {\n return isDeepEqual(a, b, undefined);\n}\n\nconst isShallowEqual = createComparator(\n merge(DEFAULT_CONFIG, { createIsNestedEqual: () => sameValueZeroEqual }),\n);\n\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nexport function shallowEqual(a: A, b: B): boolean {\n return isShallowEqual(a, b, undefined);\n}\n\nconst isCircularDeepEqual = createComparator(DEFAULT_CIRCULAR_CONFIG);\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nexport function circularDeepEqual(a: A, b: B): boolean {\n return isCircularDeepEqual(a, b, new WeakMap());\n}\n\nconst isCircularShallowEqual = createComparator(\n merge(DEFAULT_CIRCULAR_CONFIG, {\n createIsNestedEqual: () => sameValueZeroEqual,\n }),\n);\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nexport function circularShallowEqual(a: A, b: B): boolean {\n return isCircularShallowEqual(a, b, new WeakMap());\n}\n\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nexport function createCustomEqual(\n getComparatorOptions: GetComparatorOptions,\n): EqualityComparator {\n return createComparator(\n merge(DEFAULT_CONFIG, getComparatorOptions(DEFAULT_CONFIG as any)),\n );\n}\n\n/**\n * Create a custom equality comparison method that handles circular references. This is very\n * similar to `createCustomEqual`, with the only difference being that `meta` expects to be\n * populated with a `WeakMap`-like contract.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `WeakMap` out of the box.\n */\nexport function createCustomCircularEqual<\n Meta extends BaseCircularMeta = WeakMap,\n>(getComparatorOptions: GetComparatorOptions): EqualityComparator {\n const comparator = createComparator(\n merge(\n DEFAULT_CIRCULAR_CONFIG,\n getComparatorOptions(DEFAULT_CIRCULAR_CONFIG as any),\n ),\n );\n\n return ((a: any, b: any, meta: any = new WeakMap()) =>\n comparator(a, b, meta)) as EqualityComparator;\n}\n","'use strict'\n\nmodule.exports = parse\n\nvar search = /[#.]/g\n\n// Create a hast element from a simple CSS selector.\nfunction parse(selector, defaultTagName) {\n var value = selector || ''\n var name = defaultTagName || 'div'\n var props = {}\n var start = 0\n var subvalue\n var previous\n var match\n\n while (start < value.length) {\n search.lastIndex = start\n match = search.exec(value)\n subvalue = value.slice(start, match ? match.index : value.length)\n\n if (subvalue) {\n if (!previous) {\n name = subvalue\n } else if (previous === '#') {\n props.id = subvalue\n } else if (props.className) {\n props.className.push(subvalue)\n } else {\n props.className = [subvalue]\n }\n\n start += subvalue.length\n }\n\n if (match) {\n previous = match[0]\n start++\n }\n }\n\n return {type: 'element', tagName: name, properties: props, children: []}\n}\n","'use strict'\n\nvar find = require('property-information/find')\nvar normalize = require('property-information/normalize')\nvar parseSelector = require('hast-util-parse-selector')\nvar spaces = require('space-separated-tokens').parse\nvar commas = require('comma-separated-tokens').parse\n\nmodule.exports = factory\n\nvar own = {}.hasOwnProperty\n\nfunction factory(schema, defaultTagName, caseSensitive) {\n var adjust = caseSensitive ? createAdjustMap(caseSensitive) : null\n\n return h\n\n // Hyperscript compatible DSL for creating virtual hast trees.\n function h(selector, properties) {\n var node = parseSelector(selector, defaultTagName)\n var children = Array.prototype.slice.call(arguments, 2)\n var name = node.tagName.toLowerCase()\n var property\n\n node.tagName = adjust && own.call(adjust, name) ? adjust[name] : name\n\n if (properties && isChildren(properties, node)) {\n children.unshift(properties)\n properties = null\n }\n\n if (properties) {\n for (property in properties) {\n addProperty(node.properties, property, properties[property])\n }\n }\n\n addChild(node.children, children)\n\n if (node.tagName === 'template') {\n node.content = {type: 'root', children: node.children}\n node.children = []\n }\n\n return node\n }\n\n function addProperty(properties, key, value) {\n var info\n var property\n var result\n\n // Ignore nullish and NaN values.\n if (value === null || value === undefined || value !== value) {\n return\n }\n\n info = find(schema, key)\n property = info.property\n result = value\n\n // Handle list values.\n if (typeof result === 'string') {\n if (info.spaceSeparated) {\n result = spaces(result)\n } else if (info.commaSeparated) {\n result = commas(result)\n } else if (info.commaOrSpaceSeparated) {\n result = spaces(commas(result).join(' '))\n }\n }\n\n // Accept `object` on style.\n if (property === 'style' && typeof value !== 'string') {\n result = style(result)\n }\n\n // Class-names (which can be added both on the `selector` and here).\n if (property === 'className' && properties.className) {\n result = properties.className.concat(result)\n }\n\n properties[property] = parsePrimitives(info, property, result)\n }\n}\n\nfunction isChildren(value, node) {\n return (\n typeof value === 'string' ||\n 'length' in value ||\n isNode(node.tagName, value)\n )\n}\n\nfunction isNode(tagName, value) {\n var type = value.type\n\n if (tagName === 'input' || !type || typeof type !== 'string') {\n return false\n }\n\n if (typeof value.children === 'object' && 'length' in value.children) {\n return true\n }\n\n type = type.toLowerCase()\n\n if (tagName === 'button') {\n return (\n type !== 'menu' &&\n type !== 'submit' &&\n type !== 'reset' &&\n type !== 'button'\n )\n }\n\n return 'value' in value\n}\n\nfunction addChild(nodes, value) {\n var index\n var length\n\n if (typeof value === 'string' || typeof value === 'number') {\n nodes.push({type: 'text', value: String(value)})\n return\n }\n\n if (typeof value === 'object' && 'length' in value) {\n index = -1\n length = value.length\n\n while (++index < length) {\n addChild(nodes, value[index])\n }\n\n return\n }\n\n if (typeof value !== 'object' || !('type' in value)) {\n throw new Error('Expected node, nodes, or string, got `' + value + '`')\n }\n\n nodes.push(value)\n}\n\n// Parse a (list of) primitives.\nfunction parsePrimitives(info, name, value) {\n var index\n var length\n var result\n\n if (typeof value !== 'object' || !('length' in value)) {\n return parsePrimitive(info, name, value)\n }\n\n length = value.length\n index = -1\n result = []\n\n while (++index < length) {\n result[index] = parsePrimitive(info, name, value[index])\n }\n\n return result\n}\n\n// Parse a single primitives.\nfunction parsePrimitive(info, name, value) {\n var result = value\n\n if (info.number || info.positiveNumber) {\n if (!isNaN(result) && result !== '') {\n result = Number(result)\n }\n } else if (info.boolean || info.overloadedBoolean) {\n // Accept `boolean` and `string`.\n if (\n typeof result === 'string' &&\n (result === '' || normalize(value) === normalize(name))\n ) {\n result = true\n }\n }\n\n return result\n}\n\nfunction style(value) {\n var result = []\n var key\n\n for (key in value) {\n result.push([key, value[key]].join(': '))\n }\n\n return result.join('; ')\n}\n\nfunction createAdjustMap(values) {\n var length = values.length\n var index = -1\n var result = {}\n var value\n\n while (++index < length) {\n value = values[index]\n result[value.toLowerCase()] = value\n }\n\n return result\n}\n","'use strict'\n\nvar schema = require('property-information/html')\nvar factory = require('./factory')\n\nvar html = factory(schema, 'div')\nhtml.displayName = 'html'\n\nmodule.exports = html\n","'use strict'\n\nmodule.exports = require('./html')\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stringifiable(obj) {\n // Safely stringify Object.create(null)\n /* istanbul ignore next */\n return typeof obj === 'object' && !('toString' in obj) ?\n Object.prototype.toString.call(obj).slice(8, -1) :\n obj;\n}\nvar isProduction = typeof process === 'object' && process.env.NODE_ENV === 'production';\nfunction invariant(condition, message) {\n if (!condition) {\n /* istanbul ignore next */\n if (isProduction) {\n throw new Error('Invariant failed');\n }\n throw new Error(message());\n }\n}\nexports.invariant = invariant;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar splice = Array.prototype.splice;\nvar toString = Object.prototype.toString;\nfunction type(obj) {\n return toString.call(obj).slice(8, -1);\n}\nvar assign = Object.assign || /* istanbul ignore next */ (function (target, source) {\n getAllKeys(source).forEach(function (key) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n });\n return target;\n});\nvar getAllKeys = typeof Object.getOwnPropertySymbols === 'function'\n ? function (obj) { return Object.keys(obj).concat(Object.getOwnPropertySymbols(obj)); }\n /* istanbul ignore next */\n : function (obj) { return Object.keys(obj); };\nfunction copy(object) {\n return Array.isArray(object)\n ? assign(object.constructor(object.length), object)\n : (type(object) === 'Map')\n ? new Map(object)\n : (type(object) === 'Set')\n ? new Set(object)\n : (object && typeof object === 'object')\n ? assign(Object.create(Object.getPrototypeOf(object)), object)\n /* istanbul ignore next */\n : object;\n}\nvar Context = /** @class */ (function () {\n function Context() {\n this.commands = assign({}, defaultCommands);\n this.update = this.update.bind(this);\n // Deprecated: update.extend, update.isEquals and update.newContext\n this.update.extend = this.extend = this.extend.bind(this);\n this.update.isEquals = function (x, y) { return x === y; };\n this.update.newContext = function () { return new Context().update; };\n }\n Object.defineProperty(Context.prototype, \"isEquals\", {\n get: function () {\n return this.update.isEquals;\n },\n set: function (value) {\n this.update.isEquals = value;\n },\n enumerable: true,\n configurable: true\n });\n Context.prototype.extend = function (directive, fn) {\n this.commands[directive] = fn;\n };\n Context.prototype.update = function (object, $spec) {\n var _this = this;\n var spec = (typeof $spec === 'function') ? { $apply: $spec } : $spec;\n if (!(Array.isArray(object) && Array.isArray(spec))) {\n invariant(!Array.isArray(spec), function () { return \"update(): You provided an invalid spec to update(). The spec may \" +\n \"not contain an array except as the value of $set, $push, $unshift, \" +\n \"$splice or any custom command allowing an array value.\"; });\n }\n invariant(typeof spec === 'object' && spec !== null, function () { return \"update(): You provided an invalid spec to update(). The spec and \" +\n \"every included key path must be plain objects containing one of the \" +\n (\"following commands: \" + Object.keys(_this.commands).join(', ') + \".\"); });\n var nextObject = object;\n getAllKeys(spec).forEach(function (key) {\n if (hasOwnProperty.call(_this.commands, key)) {\n var objectWasNextObject = object === nextObject;\n nextObject = _this.commands[key](spec[key], nextObject, spec, object);\n if (objectWasNextObject && _this.isEquals(nextObject, object)) {\n nextObject = object;\n }\n }\n else {\n var nextValueForKey = type(object) === 'Map'\n ? _this.update(object.get(key), spec[key])\n : _this.update(object[key], spec[key]);\n var nextObjectValue = type(nextObject) === 'Map'\n ? nextObject.get(key)\n : nextObject[key];\n if (!_this.isEquals(nextValueForKey, nextObjectValue)\n || typeof nextValueForKey === 'undefined'\n && !hasOwnProperty.call(object, key)) {\n if (nextObject === object) {\n nextObject = copy(object);\n }\n if (type(nextObject) === 'Map') {\n nextObject.set(key, nextValueForKey);\n }\n else {\n nextObject[key] = nextValueForKey;\n }\n }\n }\n });\n return nextObject;\n };\n return Context;\n}());\nexports.Context = Context;\nvar defaultCommands = {\n $push: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$push');\n return value.length ? nextObject.concat(value) : nextObject;\n },\n $unshift: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$unshift');\n return value.length ? value.concat(nextObject) : nextObject;\n },\n $splice: function (value, nextObject, spec, originalObject) {\n invariantSplices(nextObject, spec);\n value.forEach(function (args) {\n invariantSplice(args);\n if (nextObject === originalObject && args.length) {\n nextObject = copy(originalObject);\n }\n splice.apply(nextObject, args);\n });\n return nextObject;\n },\n $set: function (value, _nextObject, spec) {\n invariantSet(spec);\n return value;\n },\n $toggle: function (targets, nextObject) {\n invariantSpecArray(targets, '$toggle');\n var nextObjectCopy = targets.length ? copy(nextObject) : nextObject;\n targets.forEach(function (target) {\n nextObjectCopy[target] = !nextObject[target];\n });\n return nextObjectCopy;\n },\n $unset: function (value, nextObject, _spec, originalObject) {\n invariantSpecArray(value, '$unset');\n value.forEach(function (key) {\n if (Object.hasOwnProperty.call(nextObject, key)) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n delete nextObject[key];\n }\n });\n return nextObject;\n },\n $add: function (values, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$add');\n invariantSpecArray(values, '$add');\n if (type(nextObject) === 'Map') {\n values.forEach(function (_a) {\n var key = _a[0], value = _a[1];\n if (nextObject === originalObject && nextObject.get(key) !== value) {\n nextObject = copy(originalObject);\n }\n nextObject.set(key, value);\n });\n }\n else {\n values.forEach(function (value) {\n if (nextObject === originalObject && !nextObject.has(value)) {\n nextObject = copy(originalObject);\n }\n nextObject.add(value);\n });\n }\n return nextObject;\n },\n $remove: function (value, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$remove');\n invariantSpecArray(value, '$remove');\n value.forEach(function (key) {\n if (nextObject === originalObject && nextObject.has(key)) {\n nextObject = copy(originalObject);\n }\n nextObject.delete(key);\n });\n return nextObject;\n },\n $merge: function (value, nextObject, _spec, originalObject) {\n invariantMerge(nextObject, value);\n getAllKeys(value).forEach(function (key) {\n if (value[key] !== nextObject[key]) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n nextObject[key] = value[key];\n }\n });\n return nextObject;\n },\n $apply: function (value, original) {\n invariantApply(value);\n return value(original);\n },\n};\nvar defaultContext = new Context();\nexports.isEquals = defaultContext.update.isEquals;\nexports.extend = defaultContext.extend;\nexports.default = defaultContext.update;\n// @ts-ignore\nexports.default.default = module.exports = assign(exports.default, exports);\n// invariants\nfunction invariantPushAndUnshift(value, spec, command) {\n invariant(Array.isArray(value), function () { return \"update(): expected target of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(value) + \".\"; });\n invariantSpecArray(spec[command], command);\n}\nfunction invariantSpecArray(spec, command) {\n invariant(Array.isArray(spec), function () { return \"update(): expected spec of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(spec) + \". \" +\n \"Did you forget to wrap your parameter in an array?\"; });\n}\nfunction invariantSplices(value, spec) {\n invariant(Array.isArray(value), function () { return \"Expected $splice target to be an array; got \" + stringifiable(value); });\n invariantSplice(spec.$splice);\n}\nfunction invariantSplice(value) {\n invariant(Array.isArray(value), function () { return \"update(): expected spec of $splice to be an array of arrays; got \" + stringifiable(value) + \". \" +\n \"Did you forget to wrap your parameters in an array?\"; });\n}\nfunction invariantApply(fn) {\n invariant(typeof fn === 'function', function () { return \"update(): expected spec of $apply to be a function; got \" + stringifiable(fn) + \".\"; });\n}\nfunction invariantSet(spec) {\n invariant(Object.keys(spec).length === 1, function () { return \"Cannot have more than one key in an object with $set\"; });\n}\nfunction invariantMerge(target, specValue) {\n invariant(specValue && typeof specValue === 'object', function () { return \"update(): $merge expects a spec of type 'object'; got \" + stringifiable(specValue); });\n invariant(target && typeof target === 'object', function () { return \"update(): $merge expects a target of type 'object'; got \" + stringifiable(target); });\n}\nfunction invariantMapOrSet(target, command) {\n var typeOfTarget = type(target);\n invariant(typeOfTarget === 'Map' || typeOfTarget === 'Set', function () { return \"update(): \" + stringifiable(command) + \" expects a target of type Set or Map; got \" + stringifiable(typeOfTarget); });\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { 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\nmodule.exports = invariant;\n","'use strict'\n\nmodule.exports = alphabetical\n\n// Check if the given character code, or the character code at the first\n// character, is alphabetical.\nfunction alphabetical(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n return (\n (code >= 97 && code <= 122) /* a-z */ ||\n (code >= 65 && code <= 90) /* A-Z */\n )\n}\n","'use strict'\n\nvar alphabetical = require('is-alphabetical')\nvar decimal = require('is-decimal')\n\nmodule.exports = alphanumerical\n\n// Check if the given character code, or the character code at the first\n// character, is alphanumerical.\nfunction alphanumerical(character) {\n return alphabetical(character) || decimal(character)\n}\n","'use strict'\n\nmodule.exports = decimal\n\n// Check if the given character code, or the character code at the first\n// character, is decimal.\nfunction decimal(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n return code >= 48 && code <= 57 /* 0-9 */\n}\n","'use strict'\n\nmodule.exports = hexadecimal\n\n// Check if the given character code, or the character code at the first\n// character, is hexadecimal.\nfunction hexadecimal(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n return (\n (code >= 97 /* a */ && code <= 102) /* z */ ||\n (code >= 65 /* A */ && code <= 70) /* Z */ ||\n (code >= 48 /* A */ && code <= 57) /* Z */\n )\n}\n","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n","/*!\r\n LZ-UTF8 v0.6.3\r\n\r\n Copyright (c) 2021, Rotem Dan\r\n Released under the MIT license.\r\n\r\n Build date: 2022-07-06 \r\n\r\n Please report any issue at https://github.com/rotemdan/lzutf8.js/issues\r\n*/\r\nvar LZUTF8;\n(function (LZUTF8) {\n LZUTF8.runningInNodeJS = function () {\n return ((typeof process === \"object\") && (typeof process.versions === \"object\") && (typeof process.versions.node === \"string\"));\n };\n LZUTF8.runningInMainNodeJSModule = function () {\n return LZUTF8.runningInNodeJS() && require.main === module;\n };\n LZUTF8.commonJSAvailable = function () {\n return typeof module === \"object\" && typeof module.exports === \"object\";\n };\n LZUTF8.runningInWebWorker = function () {\n return typeof window === \"undefined\" && typeof self === \"object\" && typeof self.addEventListener === \"function\" && typeof self.close === \"function\";\n };\n LZUTF8.runningInNodeChildProcess = function () {\n return LZUTF8.runningInNodeJS() && typeof process.send === \"function\";\n };\n LZUTF8.runningInNullOrigin = function () {\n if (typeof window !== \"object\" || typeof window.location !== \"object\" || typeof document !== \"object\")\n return false;\n return document.location.protocol !== 'http:' && document.location.protocol !== 'https:';\n };\n LZUTF8.webWorkersAvailable = function () {\n if (typeof Worker !== \"function\" || LZUTF8.runningInNullOrigin())\n return false;\n if (LZUTF8.runningInNodeJS())\n return false;\n if (navigator && navigator.userAgent && navigator.userAgent.indexOf(\"Android 4.3\") >= 0)\n return false;\n return true;\n };\n LZUTF8.log = function (message, appendToDocument) {\n if (appendToDocument === void 0) { appendToDocument = false; }\n if (typeof console !== \"object\")\n return;\n console.log(message);\n if (appendToDocument && typeof document == \"object\")\n document.body.innerHTML += message + \"
    \";\n };\n LZUTF8.createErrorMessage = function (exception, title) {\n if (title === void 0) { title = \"Unhandled exception\"; }\n if (exception == null)\n return title;\n title += \": \";\n if (typeof exception.content === \"object\") {\n if (LZUTF8.runningInNodeJS()) {\n return title + exception.content.stack;\n }\n else {\n var exceptionJSON = JSON.stringify(exception.content);\n if (exceptionJSON !== \"{}\")\n return title + exceptionJSON;\n else\n return title + exception.content;\n }\n }\n else if (typeof exception.content === \"string\") {\n return title + exception.content;\n }\n else {\n return title + exception;\n }\n };\n LZUTF8.printExceptionAndStackTraceToConsole = function (exception, title) {\n if (title === void 0) { title = \"Unhandled exception\"; }\n LZUTF8.log(LZUTF8.createErrorMessage(exception, title));\n };\n LZUTF8.getGlobalObject = function () {\n if (typeof global === \"object\")\n return global;\n else if (typeof window === \"object\")\n return window;\n else if (typeof self === \"object\")\n return self;\n else\n return {};\n };\n LZUTF8.toString = Object.prototype.toString;\n if (LZUTF8.commonJSAvailable())\n module.exports = LZUTF8;\n})(LZUTF8 || (LZUTF8 = {}));\nvar IE10SubarrayBugPatcher;\n(function (IE10SubarrayBugPatcher) {\n if (typeof Uint8Array === \"function\" && new Uint8Array(1).subarray(1).byteLength !== 0) {\n var subarray = function (start, end) {\n var clamp = function (v, min, max) { return v < min ? min : v > max ? max : v; };\n start = start | 0;\n end = end | 0;\n if (arguments.length < 1)\n start = 0;\n if (arguments.length < 2)\n end = this.length;\n if (start < 0)\n start = this.length + start;\n if (end < 0)\n end = this.length + end;\n start = clamp(start, 0, this.length);\n end = clamp(end, 0, this.length);\n var len = end - start;\n if (len < 0)\n len = 0;\n return new this.constructor(this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);\n };\n var types = ['Int8Array', 'Uint8Array', 'Uint8ClampedArray', 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array', 'Float64Array'];\n var globalObject = void 0;\n if (typeof window === \"object\")\n globalObject = window;\n else if (typeof self === \"object\")\n globalObject = self;\n if (globalObject !== undefined) {\n for (var i = 0; i < types.length; i++) {\n if (globalObject[types[i]])\n globalObject[types[i]].prototype.subarray = subarray;\n }\n }\n }\n})(IE10SubarrayBugPatcher || (IE10SubarrayBugPatcher = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var AsyncCompressor = (function () {\n function AsyncCompressor() {\n }\n AsyncCompressor.compressAsync = function (input, options, callback) {\n var timer = new LZUTF8.Timer();\n var compressor = new LZUTF8.Compressor();\n if (!callback)\n throw new TypeError(\"compressAsync: No callback argument given\");\n if (typeof input === \"string\") {\n input = LZUTF8.encodeUTF8(input);\n }\n else if (input == null || !(input instanceof Uint8Array)) {\n callback(undefined, new TypeError(\"compressAsync: Invalid input argument, only 'string' and 'Uint8Array' are supported\"));\n return;\n }\n var sourceBlocks = LZUTF8.ArrayTools.splitByteArray(input, options.blockSize);\n var compressedBlocks = [];\n var compressBlocksStartingAt = function (index) {\n if (index < sourceBlocks.length) {\n var compressedBlock = void 0;\n try {\n compressedBlock = compressor.compressBlock(sourceBlocks[index]);\n }\n catch (e) {\n callback(undefined, e);\n return;\n }\n compressedBlocks.push(compressedBlock);\n if (timer.getElapsedTime() <= 20) {\n compressBlocksStartingAt(index + 1);\n }\n else {\n LZUTF8.enqueueImmediate(function () { return compressBlocksStartingAt(index + 1); });\n timer.restart();\n }\n }\n else {\n var joinedCompressedBlocks_1 = LZUTF8.ArrayTools.concatUint8Arrays(compressedBlocks);\n LZUTF8.enqueueImmediate(function () {\n var result;\n try {\n result = LZUTF8.CompressionCommon.encodeCompressedBytes(joinedCompressedBlocks_1, options.outputEncoding);\n }\n catch (e) {\n callback(undefined, e);\n return;\n }\n LZUTF8.enqueueImmediate(function () { return callback(result); });\n });\n }\n };\n LZUTF8.enqueueImmediate(function () { return compressBlocksStartingAt(0); });\n };\n AsyncCompressor.createCompressionStream = function () {\n var compressor = new LZUTF8.Compressor();\n var NodeStream = require(\"readable-stream\");\n var compressionStream = new NodeStream.Transform({ decodeStrings: true, highWaterMark: 65536 });\n compressionStream._transform = function (data, encoding, done) {\n var buffer;\n try {\n buffer = LZUTF8.BufferTools.uint8ArrayToBuffer(compressor.compressBlock(LZUTF8.BufferTools.bufferToUint8Array(data)));\n }\n catch (e) {\n compressionStream.emit(\"error\", e);\n return;\n }\n compressionStream.push(buffer);\n done();\n };\n return compressionStream;\n };\n return AsyncCompressor;\n }());\n LZUTF8.AsyncCompressor = AsyncCompressor;\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var AsyncDecompressor = (function () {\n function AsyncDecompressor() {\n }\n AsyncDecompressor.decompressAsync = function (input, options, callback) {\n if (!callback)\n throw new TypeError(\"decompressAsync: No callback argument given\");\n var timer = new LZUTF8.Timer();\n try {\n input = LZUTF8.CompressionCommon.decodeCompressedBytes(input, options.inputEncoding);\n }\n catch (e) {\n callback(undefined, e);\n return;\n }\n var decompressor = new LZUTF8.Decompressor();\n var sourceBlocks = LZUTF8.ArrayTools.splitByteArray(input, options.blockSize);\n var decompressedBlocks = [];\n var decompressBlocksStartingAt = function (index) {\n if (index < sourceBlocks.length) {\n var decompressedBlock = void 0;\n try {\n decompressedBlock = decompressor.decompressBlock(sourceBlocks[index]);\n }\n catch (e) {\n callback(undefined, e);\n return;\n }\n decompressedBlocks.push(decompressedBlock);\n if (timer.getElapsedTime() <= 20) {\n decompressBlocksStartingAt(index + 1);\n }\n else {\n LZUTF8.enqueueImmediate(function () { return decompressBlocksStartingAt(index + 1); });\n timer.restart();\n }\n }\n else {\n var joinedDecompressedBlocks_1 = LZUTF8.ArrayTools.concatUint8Arrays(decompressedBlocks);\n LZUTF8.enqueueImmediate(function () {\n var result;\n try {\n result = LZUTF8.CompressionCommon.encodeDecompressedBytes(joinedDecompressedBlocks_1, options.outputEncoding);\n }\n catch (e) {\n callback(undefined, e);\n return;\n }\n LZUTF8.enqueueImmediate(function () { return callback(result); });\n });\n }\n };\n LZUTF8.enqueueImmediate(function () { return decompressBlocksStartingAt(0); });\n };\n AsyncDecompressor.createDecompressionStream = function () {\n var decompressor = new LZUTF8.Decompressor();\n var NodeStream = require(\"readable-stream\");\n var decompressionStream = new NodeStream.Transform({ decodeStrings: true, highWaterMark: 65536 });\n decompressionStream._transform = function (data, encoding, done) {\n var buffer;\n try {\n buffer = LZUTF8.BufferTools.uint8ArrayToBuffer(decompressor.decompressBlock(LZUTF8.BufferTools.bufferToUint8Array(data)));\n }\n catch (e) {\n decompressionStream.emit(\"error\", e);\n return;\n }\n decompressionStream.push(buffer);\n done();\n };\n return decompressionStream;\n };\n return AsyncDecompressor;\n }());\n LZUTF8.AsyncDecompressor = AsyncDecompressor;\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var WebWorker;\n (function (WebWorker) {\n WebWorker.compressAsync = function (input, options, callback) {\n if (options.inputEncoding == \"ByteArray\") {\n if (!(input instanceof Uint8Array)) {\n callback(undefined, new TypeError(\"compressAsync: input is not a Uint8Array\"));\n return;\n }\n }\n var request = {\n token: Math.random().toString(),\n type: \"compress\",\n data: input,\n inputEncoding: options.inputEncoding,\n outputEncoding: options.outputEncoding\n };\n var responseListener = function (e) {\n var response = e.data;\n if (!response || response.token != request.token)\n return;\n WebWorker.globalWorker.removeEventListener(\"message\", responseListener);\n if (response.type == \"error\")\n callback(undefined, new Error(response.error));\n else\n callback(response.data);\n };\n WebWorker.globalWorker.addEventListener(\"message\", responseListener);\n WebWorker.globalWorker.postMessage(request, []);\n };\n WebWorker.decompressAsync = function (input, options, callback) {\n var request = {\n token: Math.random().toString(),\n type: \"decompress\",\n data: input,\n inputEncoding: options.inputEncoding,\n outputEncoding: options.outputEncoding\n };\n var responseListener = function (e) {\n var response = e.data;\n if (!response || response.token != request.token)\n return;\n WebWorker.globalWorker.removeEventListener(\"message\", responseListener);\n if (response.type == \"error\")\n callback(undefined, new Error(response.error));\n else\n callback(response.data);\n };\n WebWorker.globalWorker.addEventListener(\"message\", responseListener);\n WebWorker.globalWorker.postMessage(request, []);\n };\n WebWorker.installWebWorkerIfNeeded = function () {\n if (typeof self == \"object\" && self.document === undefined && self.addEventListener != undefined) {\n self.addEventListener(\"message\", function (e) {\n var request = e.data;\n if (request.type == \"compress\") {\n var compressedData = void 0;\n try {\n compressedData = LZUTF8.compress(request.data, { outputEncoding: request.outputEncoding });\n }\n catch (e) {\n self.postMessage({ token: request.token, type: \"error\", error: LZUTF8.createErrorMessage(e) }, []);\n return;\n }\n var response = {\n token: request.token,\n type: \"compressionResult\",\n data: compressedData,\n encoding: request.outputEncoding,\n };\n if (response.data instanceof Uint8Array && navigator.appVersion.indexOf(\"MSIE 10\") === -1)\n self.postMessage(response, [response.data.buffer]);\n else\n self.postMessage(response, []);\n }\n else if (request.type == \"decompress\") {\n var decompressedData = void 0;\n try {\n decompressedData = LZUTF8.decompress(request.data, { inputEncoding: request.inputEncoding, outputEncoding: request.outputEncoding });\n }\n catch (e) {\n self.postMessage({ token: request.token, type: \"error\", error: LZUTF8.createErrorMessage(e) }, []);\n return;\n }\n var response = {\n token: request.token,\n type: \"decompressionResult\",\n data: decompressedData,\n encoding: request.outputEncoding,\n };\n if (response.data instanceof Uint8Array && navigator.appVersion.indexOf(\"MSIE 10\") === -1)\n self.postMessage(response, [response.data.buffer]);\n else\n self.postMessage(response, []);\n }\n });\n self.addEventListener(\"error\", function (e) {\n LZUTF8.log(LZUTF8.createErrorMessage(e.error, \"Unexpected LZUTF8 WebWorker exception\"));\n });\n }\n };\n WebWorker.createGlobalWorkerIfNeeded = function () {\n if (WebWorker.globalWorker)\n return true;\n if (!LZUTF8.webWorkersAvailable())\n return false;\n if (!WebWorker.scriptURI && typeof document === \"object\") {\n var scriptElement = document.getElementById(\"lzutf8\");\n if (scriptElement != null)\n WebWorker.scriptURI = scriptElement.getAttribute(\"src\") || undefined;\n }\n if (WebWorker.scriptURI) {\n WebWorker.globalWorker = new Worker(WebWorker.scriptURI);\n return true;\n }\n else {\n return false;\n }\n };\n WebWorker.terminate = function () {\n if (WebWorker.globalWorker) {\n WebWorker.globalWorker.terminate();\n WebWorker.globalWorker = undefined;\n }\n };\n })(WebWorker = LZUTF8.WebWorker || (LZUTF8.WebWorker = {}));\n WebWorker.installWebWorkerIfNeeded();\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var ArraySegment = (function () {\n function ArraySegment(container, startPosition, length) {\n this.container = container;\n this.startPosition = startPosition;\n this.length = length;\n }\n ArraySegment.prototype.get = function (index) {\n return this.container[this.startPosition + index];\n };\n ArraySegment.prototype.getInReversedOrder = function (reverseIndex) {\n return this.container[this.startPosition + this.length - 1 - reverseIndex];\n };\n ArraySegment.prototype.set = function (index, value) {\n this.container[this.startPosition + index] = value;\n };\n return ArraySegment;\n }());\n LZUTF8.ArraySegment = ArraySegment;\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var ArrayTools;\n (function (ArrayTools) {\n ArrayTools.copyElements = function (source, sourceIndex, destination, destinationIndex, count) {\n while (count--)\n destination[destinationIndex++] = source[sourceIndex++];\n };\n ArrayTools.zeroElements = function (collection, index, count) {\n while (count--)\n collection[index++] = 0;\n };\n ArrayTools.countNonzeroValuesInArray = function (array) {\n var result = 0;\n for (var i = 0; i < array.length; i++)\n if (array[i])\n result++;\n return result;\n };\n ArrayTools.truncateStartingElements = function (array, truncatedLength) {\n if (array.length <= truncatedLength)\n throw new RangeError(\"truncateStartingElements: Requested length should be smaller than array length\");\n var sourcePosition = array.length - truncatedLength;\n for (var i = 0; i < truncatedLength; i++)\n array[i] = array[sourcePosition + i];\n array.length = truncatedLength;\n };\n ArrayTools.doubleByteArrayCapacity = function (array) {\n var newArray = new Uint8Array(array.length * 2);\n newArray.set(array);\n return newArray;\n };\n ArrayTools.concatUint8Arrays = function (arrays) {\n var totalLength = 0;\n for (var _i = 0, arrays_1 = arrays; _i < arrays_1.length; _i++) {\n var array = arrays_1[_i];\n totalLength += array.length;\n }\n var result = new Uint8Array(totalLength);\n var offset = 0;\n for (var _a = 0, arrays_2 = arrays; _a < arrays_2.length; _a++) {\n var array = arrays_2[_a];\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n };\n ArrayTools.splitByteArray = function (byteArray, maxPartLength) {\n var result = [];\n for (var offset = 0; offset < byteArray.length;) {\n var blockLength = Math.min(maxPartLength, byteArray.length - offset);\n result.push(byteArray.subarray(offset, offset + blockLength));\n offset += blockLength;\n }\n return result;\n };\n })(ArrayTools = LZUTF8.ArrayTools || (LZUTF8.ArrayTools = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var BufferTools;\n (function (BufferTools) {\n BufferTools.convertToUint8ArrayIfNeeded = function (input) {\n if (typeof Buffer === \"function\" && Buffer.isBuffer(input))\n return BufferTools.bufferToUint8Array(input);\n else\n return input;\n };\n BufferTools.uint8ArrayToBuffer = function (arr) {\n if (Buffer.prototype instanceof Uint8Array) {\n var arrClone = new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n Object[\"setPrototypeOf\"](arrClone, Buffer.prototype);\n return arrClone;\n }\n else {\n var len = arr.length;\n var buf = new Buffer(len);\n for (var i = 0; i < len; i++)\n buf[i] = arr[i];\n return buf;\n }\n };\n BufferTools.bufferToUint8Array = function (buf) {\n if (Buffer.prototype instanceof Uint8Array) {\n return new Uint8Array(buf[\"buffer\"], buf[\"byteOffset\"], buf[\"byteLength\"]);\n }\n else {\n var len = buf.length;\n var arr = new Uint8Array(len);\n for (var i = 0; i < len; i++)\n arr[i] = buf[i];\n return arr;\n }\n };\n })(BufferTools = LZUTF8.BufferTools || (LZUTF8.BufferTools = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var CompressionCommon;\n (function (CompressionCommon) {\n CompressionCommon.getCroppedBuffer = function (buffer, cropStartOffset, cropLength, additionalCapacity) {\n if (additionalCapacity === void 0) { additionalCapacity = 0; }\n var croppedBuffer = new Uint8Array(cropLength + additionalCapacity);\n croppedBuffer.set(buffer.subarray(cropStartOffset, cropStartOffset + cropLength));\n return croppedBuffer;\n };\n CompressionCommon.getCroppedAndAppendedByteArray = function (bytes, cropStartOffset, cropLength, byteArrayToAppend) {\n return LZUTF8.ArrayTools.concatUint8Arrays([bytes.subarray(cropStartOffset, cropStartOffset + cropLength), byteArrayToAppend]);\n };\n CompressionCommon.detectCompressionSourceEncoding = function (input) {\n if (input == null)\n throw new TypeError(\"detectCompressionSourceEncoding: input is null or undefined\");\n if (typeof input === \"string\")\n return \"String\";\n else if (input instanceof Uint8Array || (typeof Buffer === \"function\" && Buffer.isBuffer(input)))\n return \"ByteArray\";\n else\n throw new TypeError(\"detectCompressionSourceEncoding: input must be of type 'string', 'Uint8Array' or 'Buffer'\");\n };\n CompressionCommon.encodeCompressedBytes = function (compressedBytes, outputEncoding) {\n switch (outputEncoding) {\n case \"ByteArray\":\n return compressedBytes;\n case \"Buffer\":\n return LZUTF8.BufferTools.uint8ArrayToBuffer(compressedBytes);\n case \"Base64\":\n return LZUTF8.encodeBase64(compressedBytes);\n case \"BinaryString\":\n return LZUTF8.encodeBinaryString(compressedBytes);\n case \"StorageBinaryString\":\n return LZUTF8.encodeStorageBinaryString(compressedBytes);\n default:\n throw new TypeError(\"encodeCompressedBytes: invalid output encoding requested\");\n }\n };\n CompressionCommon.decodeCompressedBytes = function (compressedData, inputEncoding) {\n if (inputEncoding == null)\n throw new TypeError(\"decodeCompressedData: Input is null or undefined\");\n switch (inputEncoding) {\n case \"ByteArray\":\n case \"Buffer\":\n var normalizedBytes = LZUTF8.BufferTools.convertToUint8ArrayIfNeeded(compressedData);\n if (!(normalizedBytes instanceof Uint8Array))\n throw new TypeError(\"decodeCompressedData: 'ByteArray' or 'Buffer' input type was specified but input is not a Uint8Array or Buffer\");\n return normalizedBytes;\n case \"Base64\":\n if (typeof compressedData !== \"string\")\n throw new TypeError(\"decodeCompressedData: 'Base64' input type was specified but input is not a string\");\n return LZUTF8.decodeBase64(compressedData);\n case \"BinaryString\":\n if (typeof compressedData !== \"string\")\n throw new TypeError(\"decodeCompressedData: 'BinaryString' input type was specified but input is not a string\");\n return LZUTF8.decodeBinaryString(compressedData);\n case \"StorageBinaryString\":\n if (typeof compressedData !== \"string\")\n throw new TypeError(\"decodeCompressedData: 'StorageBinaryString' input type was specified but input is not a string\");\n return LZUTF8.decodeStorageBinaryString(compressedData);\n default:\n throw new TypeError(\"decodeCompressedData: invalid input encoding requested: '\".concat(inputEncoding, \"'\"));\n }\n };\n CompressionCommon.encodeDecompressedBytes = function (decompressedBytes, outputEncoding) {\n switch (outputEncoding) {\n case \"String\":\n return LZUTF8.decodeUTF8(decompressedBytes);\n case \"ByteArray\":\n return decompressedBytes;\n case \"Buffer\":\n if (typeof Buffer !== \"function\")\n throw new TypeError(\"encodeDecompressedBytes: a 'Buffer' type was specified but is not supported at the current envirnment\");\n return LZUTF8.BufferTools.uint8ArrayToBuffer(decompressedBytes);\n default:\n throw new TypeError(\"encodeDecompressedBytes: invalid output encoding requested\");\n }\n };\n })(CompressionCommon = LZUTF8.CompressionCommon || (LZUTF8.CompressionCommon = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var EventLoop;\n (function (EventLoop) {\n var queuedFunctions = [];\n var asyncFlushFunc;\n EventLoop.enqueueImmediate = function (func) {\n queuedFunctions.push(func);\n if (queuedFunctions.length === 1) {\n asyncFlushFunc();\n }\n };\n EventLoop.initializeScheduler = function () {\n var flush = function () {\n for (var _i = 0, queuedFunctions_1 = queuedFunctions; _i < queuedFunctions_1.length; _i++) {\n var func = queuedFunctions_1[_i];\n try {\n func.call(undefined);\n }\n catch (exception) {\n LZUTF8.printExceptionAndStackTraceToConsole(exception, \"enqueueImmediate exception\");\n }\n }\n queuedFunctions.length = 0;\n };\n if (LZUTF8.runningInNodeJS()) {\n asyncFlushFunc = function () { return setImmediate(function () { return flush(); }); };\n }\n else if (typeof window === \"object\" && typeof window.addEventListener === \"function\" && typeof window.postMessage === \"function\") {\n var token_1 = \"enqueueImmediate-\" + Math.random().toString();\n window.addEventListener(\"message\", function (event) {\n if (event.data === token_1)\n flush();\n });\n var targetOrigin_1;\n if (LZUTF8.runningInNullOrigin())\n targetOrigin_1 = '*';\n else\n targetOrigin_1 = window.location.href;\n asyncFlushFunc = function () { return window.postMessage(token_1, targetOrigin_1); };\n }\n else if (typeof MessageChannel === \"function\" && typeof MessagePort === \"function\") {\n var channel_1 = new MessageChannel();\n channel_1.port1.onmessage = function () { return flush(); };\n asyncFlushFunc = function () { return channel_1.port2.postMessage(0); };\n }\n else {\n asyncFlushFunc = function () { return setTimeout(function () { return flush(); }, 0); };\n }\n };\n EventLoop.initializeScheduler();\n })(EventLoop = LZUTF8.EventLoop || (LZUTF8.EventLoop = {}));\n LZUTF8.enqueueImmediate = function (func) { return EventLoop.enqueueImmediate(func); };\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var ObjectTools;\n (function (ObjectTools) {\n ObjectTools.override = function (obj, newPropertyValues) {\n return ObjectTools.extend(obj, newPropertyValues);\n };\n ObjectTools.extend = function (obj, newProperties) {\n if (obj == null)\n throw new TypeError(\"obj is null or undefined\");\n if (typeof obj !== \"object\")\n throw new TypeError(\"obj is not an object\");\n if (newProperties == null)\n newProperties = {};\n if (typeof newProperties !== \"object\")\n throw new TypeError(\"newProperties is not an object\");\n if (newProperties != null) {\n for (var property in newProperties)\n obj[property] = newProperties[property];\n }\n return obj;\n };\n })(ObjectTools = LZUTF8.ObjectTools || (LZUTF8.ObjectTools = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n LZUTF8.getRandomIntegerInRange = function (low, high) {\n return low + Math.floor(Math.random() * (high - low));\n };\n LZUTF8.getRandomUTF16StringOfLength = function (length) {\n var randomString = \"\";\n for (var i = 0; i < length; i++) {\n var randomCodePoint = void 0;\n do {\n randomCodePoint = LZUTF8.getRandomIntegerInRange(0, 0x10FFFF + 1);\n } while (randomCodePoint >= 0xD800 && randomCodePoint <= 0xDFFF);\n randomString += LZUTF8.Encoding.CodePoint.decodeToString(randomCodePoint);\n }\n return randomString;\n };\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var StringBuilder = (function () {\n function StringBuilder(outputBufferCapacity) {\n if (outputBufferCapacity === void 0) { outputBufferCapacity = 1024; }\n this.outputBufferCapacity = outputBufferCapacity;\n this.outputPosition = 0;\n this.outputString = \"\";\n this.outputBuffer = new Uint16Array(this.outputBufferCapacity);\n }\n StringBuilder.prototype.appendCharCode = function (charCode) {\n this.outputBuffer[this.outputPosition++] = charCode;\n if (this.outputPosition === this.outputBufferCapacity)\n this.flushBufferToOutputString();\n };\n StringBuilder.prototype.appendCharCodes = function (charCodes) {\n for (var i = 0, length_1 = charCodes.length; i < length_1; i++)\n this.appendCharCode(charCodes[i]);\n };\n StringBuilder.prototype.appendString = function (str) {\n for (var i = 0, length_2 = str.length; i < length_2; i++)\n this.appendCharCode(str.charCodeAt(i));\n };\n StringBuilder.prototype.appendCodePoint = function (codePoint) {\n if (codePoint <= 0xFFFF) {\n this.appendCharCode(codePoint);\n }\n else if (codePoint <= 0x10FFFF) {\n this.appendCharCode(0xD800 + ((codePoint - 0x10000) >>> 10));\n this.appendCharCode(0xDC00 + ((codePoint - 0x10000) & 1023));\n }\n else\n throw new Error(\"appendCodePoint: A code point of \".concat(codePoint, \" cannot be encoded in UTF-16\"));\n };\n StringBuilder.prototype.getOutputString = function () {\n this.flushBufferToOutputString();\n return this.outputString;\n };\n StringBuilder.prototype.flushBufferToOutputString = function () {\n if (this.outputPosition === this.outputBufferCapacity)\n this.outputString += String.fromCharCode.apply(null, this.outputBuffer);\n else\n this.outputString += String.fromCharCode.apply(null, this.outputBuffer.subarray(0, this.outputPosition));\n this.outputPosition = 0;\n };\n return StringBuilder;\n }());\n LZUTF8.StringBuilder = StringBuilder;\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var Timer = (function () {\n function Timer() {\n this.restart();\n }\n Timer.prototype.restart = function () {\n this.startTime = Timer.getTimestamp();\n };\n Timer.prototype.getElapsedTime = function () {\n return Timer.getTimestamp() - this.startTime;\n };\n Timer.prototype.getElapsedTimeAndRestart = function () {\n var elapsedTime = this.getElapsedTime();\n this.restart();\n return elapsedTime;\n };\n Timer.prototype.logAndRestart = function (title, logToDocument) {\n if (logToDocument === void 0) { logToDocument = true; }\n var elapsedTime = this.getElapsedTime();\n var message = \"\".concat(title, \": \").concat(elapsedTime.toFixed(3), \"ms\");\n LZUTF8.log(message, logToDocument);\n this.restart();\n return elapsedTime;\n };\n Timer.getTimestamp = function () {\n if (!this.timestampFunc)\n this.createGlobalTimestampFunction();\n return this.timestampFunc();\n };\n Timer.getMicrosecondTimestamp = function () {\n return Math.floor(Timer.getTimestamp() * 1000);\n };\n Timer.createGlobalTimestampFunction = function () {\n if (typeof process === \"object\" && typeof process.hrtime === \"function\") {\n var baseTimestamp_1 = 0;\n this.timestampFunc = function () {\n var nodeTimeStamp = process.hrtime();\n var millisecondTime = (nodeTimeStamp[0] * 1000) + (nodeTimeStamp[1] / 1000000);\n return baseTimestamp_1 + millisecondTime;\n };\n baseTimestamp_1 = Date.now() - this.timestampFunc();\n }\n else if (typeof chrome === \"object\" && chrome.Interval) {\n var baseTimestamp_2 = Date.now();\n var chromeIntervalObject_1 = new chrome.Interval();\n chromeIntervalObject_1.start();\n this.timestampFunc = function () { return baseTimestamp_2 + chromeIntervalObject_1.microseconds() / 1000; };\n }\n else if (typeof performance === \"object\" && performance.now) {\n var baseTimestamp_3 = Date.now() - performance.now();\n this.timestampFunc = function () { return baseTimestamp_3 + performance.now(); };\n }\n else if (Date.now) {\n this.timestampFunc = function () { return Date.now(); };\n }\n else {\n this.timestampFunc = function () { return (new Date()).getTime(); };\n }\n };\n return Timer;\n }());\n LZUTF8.Timer = Timer;\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var Compressor = (function () {\n function Compressor(useCustomHashTable) {\n if (useCustomHashTable === void 0) { useCustomHashTable = true; }\n this.MinimumSequenceLength = 4;\n this.MaximumSequenceLength = 31;\n this.MaximumMatchDistance = 32767;\n this.PrefixHashTableSize = 65537;\n this.inputBufferStreamOffset = 1;\n if (useCustomHashTable && typeof Uint32Array == \"function\")\n this.prefixHashTable = new LZUTF8.CompressorCustomHashTable(this.PrefixHashTableSize);\n else\n this.prefixHashTable = new LZUTF8.CompressorSimpleHashTable(this.PrefixHashTableSize);\n }\n Compressor.prototype.compressBlock = function (input) {\n if (input === undefined || input === null)\n throw new TypeError(\"compressBlock: undefined or null input received\");\n if (typeof input == \"string\")\n input = LZUTF8.encodeUTF8(input);\n input = LZUTF8.BufferTools.convertToUint8ArrayIfNeeded(input);\n return this.compressUtf8Block(input);\n };\n Compressor.prototype.compressUtf8Block = function (utf8Bytes) {\n if (!utf8Bytes || utf8Bytes.length == 0)\n return new Uint8Array(0);\n var bufferStartingReadOffset = this.cropAndAddNewBytesToInputBuffer(utf8Bytes);\n var inputBuffer = this.inputBuffer;\n var inputBufferLength = this.inputBuffer.length;\n this.outputBuffer = new Uint8Array(utf8Bytes.length);\n this.outputBufferPosition = 0;\n var latestMatchEndPosition = 0;\n for (var readPosition = bufferStartingReadOffset; readPosition < inputBufferLength; readPosition++) {\n var inputValue = inputBuffer[readPosition];\n var withinAMatchedRange = readPosition < latestMatchEndPosition;\n if (readPosition > inputBufferLength - this.MinimumSequenceLength) {\n if (!withinAMatchedRange)\n this.outputRawByte(inputValue);\n continue;\n }\n var targetBucketIndex = this.getBucketIndexForPrefix(readPosition);\n if (!withinAMatchedRange) {\n var matchLocator = this.findLongestMatch(readPosition, targetBucketIndex);\n if (matchLocator != null) {\n this.outputPointerBytes(matchLocator.length, matchLocator.distance);\n latestMatchEndPosition = readPosition + matchLocator.length;\n withinAMatchedRange = true;\n }\n }\n if (!withinAMatchedRange)\n this.outputRawByte(inputValue);\n var inputStreamPosition = this.inputBufferStreamOffset + readPosition;\n this.prefixHashTable.addValueToBucket(targetBucketIndex, inputStreamPosition);\n }\n return this.outputBuffer.subarray(0, this.outputBufferPosition);\n };\n Compressor.prototype.findLongestMatch = function (matchedSequencePosition, bucketIndex) {\n var bucket = this.prefixHashTable.getArraySegmentForBucketIndex(bucketIndex, this.reusableArraySegmentObject);\n if (bucket == null)\n return null;\n var input = this.inputBuffer;\n var longestMatchDistance;\n var longestMatchLength = 0;\n for (var i = 0; i < bucket.length; i++) {\n var testedSequencePosition = bucket.getInReversedOrder(i) - this.inputBufferStreamOffset;\n var testedSequenceDistance = matchedSequencePosition - testedSequencePosition;\n var lengthToSurpass = void 0;\n if (longestMatchDistance === undefined)\n lengthToSurpass = this.MinimumSequenceLength - 1;\n else if (longestMatchDistance < 128 && testedSequenceDistance >= 128)\n lengthToSurpass = longestMatchLength + (longestMatchLength >>> 1);\n else\n lengthToSurpass = longestMatchLength;\n if (testedSequenceDistance > this.MaximumMatchDistance ||\n lengthToSurpass >= this.MaximumSequenceLength ||\n matchedSequencePosition + lengthToSurpass >= input.length)\n break;\n if (input[testedSequencePosition + lengthToSurpass] !== input[matchedSequencePosition + lengthToSurpass])\n continue;\n for (var offset = 0;; offset++) {\n if (matchedSequencePosition + offset === input.length ||\n input[testedSequencePosition + offset] !== input[matchedSequencePosition + offset]) {\n if (offset > lengthToSurpass) {\n longestMatchDistance = testedSequenceDistance;\n longestMatchLength = offset;\n }\n break;\n }\n else if (offset === this.MaximumSequenceLength)\n return { distance: testedSequenceDistance, length: this.MaximumSequenceLength };\n }\n }\n if (longestMatchDistance !== undefined)\n return { distance: longestMatchDistance, length: longestMatchLength };\n else\n return null;\n };\n Compressor.prototype.getBucketIndexForPrefix = function (startPosition) {\n return (this.inputBuffer[startPosition] * 7880599 +\n this.inputBuffer[startPosition + 1] * 39601 +\n this.inputBuffer[startPosition + 2] * 199 +\n this.inputBuffer[startPosition + 3]) % this.PrefixHashTableSize;\n };\n Compressor.prototype.outputPointerBytes = function (length, distance) {\n if (distance < 128) {\n this.outputRawByte(192 | length);\n this.outputRawByte(distance);\n }\n else {\n this.outputRawByte(224 | length);\n this.outputRawByte(distance >>> 8);\n this.outputRawByte(distance & 255);\n }\n };\n Compressor.prototype.outputRawByte = function (value) {\n this.outputBuffer[this.outputBufferPosition++] = value;\n };\n Compressor.prototype.cropAndAddNewBytesToInputBuffer = function (newInput) {\n if (this.inputBuffer === undefined) {\n this.inputBuffer = newInput;\n return 0;\n }\n else {\n var cropLength = Math.min(this.inputBuffer.length, this.MaximumMatchDistance);\n var cropStartOffset = this.inputBuffer.length - cropLength;\n this.inputBuffer = LZUTF8.CompressionCommon.getCroppedAndAppendedByteArray(this.inputBuffer, cropStartOffset, cropLength, newInput);\n this.inputBufferStreamOffset += cropStartOffset;\n return cropLength;\n }\n };\n return Compressor;\n }());\n LZUTF8.Compressor = Compressor;\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var CompressorCustomHashTable = (function () {\n function CompressorCustomHashTable(bucketCount) {\n this.minimumBucketCapacity = 4;\n this.maximumBucketCapacity = 64;\n this.bucketLocators = new Uint32Array(bucketCount * 2);\n this.storage = new Uint32Array(bucketCount * 2);\n this.storageIndex = 1;\n }\n CompressorCustomHashTable.prototype.addValueToBucket = function (bucketIndex, valueToAdd) {\n bucketIndex <<= 1;\n if (this.storageIndex >= (this.storage.length >>> 1))\n this.compact();\n var startPosition = this.bucketLocators[bucketIndex];\n var length;\n if (startPosition === 0) {\n startPosition = this.storageIndex;\n length = 1;\n this.storage[this.storageIndex] = valueToAdd;\n this.storageIndex += this.minimumBucketCapacity;\n }\n else {\n length = this.bucketLocators[bucketIndex + 1];\n if (length === this.maximumBucketCapacity - 1)\n length = this.truncateBucketToNewerElements(startPosition, length, this.maximumBucketCapacity / 2);\n var endPosition = startPosition + length;\n if (this.storage[endPosition] === 0) {\n this.storage[endPosition] = valueToAdd;\n if (endPosition === this.storageIndex)\n this.storageIndex += length;\n }\n else {\n LZUTF8.ArrayTools.copyElements(this.storage, startPosition, this.storage, this.storageIndex, length);\n startPosition = this.storageIndex;\n this.storageIndex += length;\n this.storage[this.storageIndex++] = valueToAdd;\n this.storageIndex += length;\n }\n length++;\n }\n this.bucketLocators[bucketIndex] = startPosition;\n this.bucketLocators[bucketIndex + 1] = length;\n };\n CompressorCustomHashTable.prototype.truncateBucketToNewerElements = function (startPosition, bucketLength, truncatedBucketLength) {\n var sourcePosition = startPosition + bucketLength - truncatedBucketLength;\n LZUTF8.ArrayTools.copyElements(this.storage, sourcePosition, this.storage, startPosition, truncatedBucketLength);\n LZUTF8.ArrayTools.zeroElements(this.storage, startPosition + truncatedBucketLength, bucketLength - truncatedBucketLength);\n return truncatedBucketLength;\n };\n CompressorCustomHashTable.prototype.compact = function () {\n var oldBucketLocators = this.bucketLocators;\n var oldStorage = this.storage;\n this.bucketLocators = new Uint32Array(this.bucketLocators.length);\n this.storageIndex = 1;\n for (var bucketIndex = 0; bucketIndex < oldBucketLocators.length; bucketIndex += 2) {\n var length_3 = oldBucketLocators[bucketIndex + 1];\n if (length_3 === 0)\n continue;\n this.bucketLocators[bucketIndex] = this.storageIndex;\n this.bucketLocators[bucketIndex + 1] = length_3;\n this.storageIndex += Math.max(Math.min(length_3 * 2, this.maximumBucketCapacity), this.minimumBucketCapacity);\n }\n this.storage = new Uint32Array(this.storageIndex * 8);\n for (var bucketIndex = 0; bucketIndex < oldBucketLocators.length; bucketIndex += 2) {\n var sourcePosition = oldBucketLocators[bucketIndex];\n if (sourcePosition === 0)\n continue;\n var destPosition = this.bucketLocators[bucketIndex];\n var length_4 = this.bucketLocators[bucketIndex + 1];\n LZUTF8.ArrayTools.copyElements(oldStorage, sourcePosition, this.storage, destPosition, length_4);\n }\n };\n CompressorCustomHashTable.prototype.getArraySegmentForBucketIndex = function (bucketIndex, outputObject) {\n bucketIndex <<= 1;\n var startPosition = this.bucketLocators[bucketIndex];\n if (startPosition === 0)\n return null;\n if (outputObject === undefined)\n outputObject = new LZUTF8.ArraySegment(this.storage, startPosition, this.bucketLocators[bucketIndex + 1]);\n return outputObject;\n };\n CompressorCustomHashTable.prototype.getUsedBucketCount = function () {\n return Math.floor(LZUTF8.ArrayTools.countNonzeroValuesInArray(this.bucketLocators) / 2);\n };\n CompressorCustomHashTable.prototype.getTotalElementCount = function () {\n var result = 0;\n for (var i = 0; i < this.bucketLocators.length; i += 2)\n result += this.bucketLocators[i + 1];\n return result;\n };\n return CompressorCustomHashTable;\n }());\n LZUTF8.CompressorCustomHashTable = CompressorCustomHashTable;\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var CompressorSimpleHashTable = (function () {\n function CompressorSimpleHashTable(size) {\n this.maximumBucketCapacity = 64;\n this.buckets = new Array(size);\n }\n CompressorSimpleHashTable.prototype.addValueToBucket = function (bucketIndex, valueToAdd) {\n var bucket = this.buckets[bucketIndex];\n if (bucket === undefined) {\n this.buckets[bucketIndex] = [valueToAdd];\n }\n else {\n if (bucket.length === this.maximumBucketCapacity - 1)\n LZUTF8.ArrayTools.truncateStartingElements(bucket, this.maximumBucketCapacity / 2);\n bucket.push(valueToAdd);\n }\n };\n CompressorSimpleHashTable.prototype.getArraySegmentForBucketIndex = function (bucketIndex, outputObject) {\n var bucket = this.buckets[bucketIndex];\n if (bucket === undefined)\n return null;\n if (outputObject === undefined)\n outputObject = new LZUTF8.ArraySegment(bucket, 0, bucket.length);\n return outputObject;\n };\n CompressorSimpleHashTable.prototype.getUsedBucketCount = function () {\n return LZUTF8.ArrayTools.countNonzeroValuesInArray(this.buckets);\n };\n CompressorSimpleHashTable.prototype.getTotalElementCount = function () {\n var currentSum = 0;\n for (var i = 0; i < this.buckets.length; i++) {\n if (this.buckets[i] !== undefined)\n currentSum += this.buckets[i].length;\n }\n return currentSum;\n };\n return CompressorSimpleHashTable;\n }());\n LZUTF8.CompressorSimpleHashTable = CompressorSimpleHashTable;\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var Decompressor = (function () {\n function Decompressor() {\n this.MaximumMatchDistance = 32767;\n this.outputPosition = 0;\n }\n Decompressor.prototype.decompressBlockToString = function (input) {\n input = LZUTF8.BufferTools.convertToUint8ArrayIfNeeded(input);\n return LZUTF8.decodeUTF8(this.decompressBlock(input));\n };\n Decompressor.prototype.decompressBlock = function (input) {\n if (this.inputBufferRemainder) {\n input = LZUTF8.ArrayTools.concatUint8Arrays([this.inputBufferRemainder, input]);\n this.inputBufferRemainder = undefined;\n }\n var outputStartPosition = this.cropOutputBufferToWindowAndInitialize(Math.max(input.length * 4, 1024));\n for (var readPosition = 0, inputLength = input.length; readPosition < inputLength; readPosition++) {\n var inputValue = input[readPosition];\n if (inputValue >>> 6 != 3) {\n this.outputByte(inputValue);\n continue;\n }\n var sequenceLengthIdentifier = inputValue >>> 5;\n if (readPosition == inputLength - 1 ||\n (readPosition == inputLength - 2 && sequenceLengthIdentifier == 7)) {\n this.inputBufferRemainder = input.subarray(readPosition);\n break;\n }\n if (input[readPosition + 1] >>> 7 === 1) {\n this.outputByte(inputValue);\n }\n else {\n var matchLength = inputValue & 31;\n var matchDistance = void 0;\n if (sequenceLengthIdentifier == 6) {\n matchDistance = input[readPosition + 1];\n readPosition += 1;\n }\n else {\n matchDistance = (input[readPosition + 1] << 8) | (input[readPosition + 2]);\n readPosition += 2;\n }\n var matchPosition = this.outputPosition - matchDistance;\n for (var offset = 0; offset < matchLength; offset++)\n this.outputByte(this.outputBuffer[matchPosition + offset]);\n }\n }\n this.rollBackIfOutputBufferEndsWithATruncatedMultibyteSequence();\n return LZUTF8.CompressionCommon.getCroppedBuffer(this.outputBuffer, outputStartPosition, this.outputPosition - outputStartPosition);\n };\n Decompressor.prototype.outputByte = function (value) {\n if (this.outputPosition === this.outputBuffer.length)\n this.outputBuffer = LZUTF8.ArrayTools.doubleByteArrayCapacity(this.outputBuffer);\n this.outputBuffer[this.outputPosition++] = value;\n };\n Decompressor.prototype.cropOutputBufferToWindowAndInitialize = function (initialCapacity) {\n if (!this.outputBuffer) {\n this.outputBuffer = new Uint8Array(initialCapacity);\n return 0;\n }\n var cropLength = Math.min(this.outputPosition, this.MaximumMatchDistance);\n this.outputBuffer = LZUTF8.CompressionCommon.getCroppedBuffer(this.outputBuffer, this.outputPosition - cropLength, cropLength, initialCapacity);\n this.outputPosition = cropLength;\n if (this.outputBufferRemainder) {\n for (var i = 0; i < this.outputBufferRemainder.length; i++)\n this.outputByte(this.outputBufferRemainder[i]);\n this.outputBufferRemainder = undefined;\n }\n return cropLength;\n };\n Decompressor.prototype.rollBackIfOutputBufferEndsWithATruncatedMultibyteSequence = function () {\n for (var offset = 1; offset <= 4 && this.outputPosition - offset >= 0; offset++) {\n var value = this.outputBuffer[this.outputPosition - offset];\n if ((offset < 4 && (value >>> 3) === 30) ||\n (offset < 3 && (value >>> 4) === 14) ||\n (offset < 2 && (value >>> 5) === 6)) {\n this.outputBufferRemainder = this.outputBuffer.subarray(this.outputPosition - offset, this.outputPosition);\n this.outputPosition -= offset;\n return;\n }\n }\n };\n return Decompressor;\n }());\n LZUTF8.Decompressor = Decompressor;\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var Encoding;\n (function (Encoding) {\n var Base64;\n (function (Base64) {\n var charCodeMap = new Uint8Array([65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47]);\n var reverseCharCodeMap = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 0, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 255, 255, 255, 255]);\n var paddingCharacter = \"=\";\n var paddingCharCode = 61;\n Base64.encode = function (inputBytes) {\n if (!inputBytes || inputBytes.length == 0)\n return \"\";\n if (LZUTF8.runningInNodeJS()) {\n return (LZUTF8.BufferTools.uint8ArrayToBuffer(inputBytes)).toString(\"base64\");\n }\n else {\n return Base64.encodeWithJS(inputBytes);\n }\n };\n Base64.decode = function (base64String) {\n if (!base64String)\n return new Uint8Array(0);\n if (LZUTF8.runningInNodeJS()) {\n return LZUTF8.BufferTools.bufferToUint8Array(Buffer.from(base64String, \"base64\"));\n }\n else {\n return Base64.decodeWithJS(base64String);\n }\n };\n Base64.encodeWithJS = function (inputBytes, addPadding) {\n if (addPadding === void 0) { addPadding = true; }\n if (!inputBytes || inputBytes.length == 0)\n return \"\";\n var map = charCodeMap;\n var output = new LZUTF8.StringBuilder();\n var uint24;\n for (var readPosition = 0, length_5 = inputBytes.length; readPosition < length_5; readPosition += 3) {\n if (readPosition <= length_5 - 3) {\n uint24 = inputBytes[readPosition] << 16 | inputBytes[readPosition + 1] << 8 | inputBytes[readPosition + 2];\n output.appendCharCode(map[(uint24 >>> 18) & 63]);\n output.appendCharCode(map[(uint24 >>> 12) & 63]);\n output.appendCharCode(map[(uint24 >>> 6) & 63]);\n output.appendCharCode(map[(uint24) & 63]);\n uint24 = 0;\n }\n else if (readPosition === length_5 - 2) {\n uint24 = inputBytes[readPosition] << 16 | inputBytes[readPosition + 1] << 8;\n output.appendCharCode(map[(uint24 >>> 18) & 63]);\n output.appendCharCode(map[(uint24 >>> 12) & 63]);\n output.appendCharCode(map[(uint24 >>> 6) & 63]);\n if (addPadding)\n output.appendCharCode(paddingCharCode);\n }\n else if (readPosition === length_5 - 1) {\n uint24 = inputBytes[readPosition] << 16;\n output.appendCharCode(map[(uint24 >>> 18) & 63]);\n output.appendCharCode(map[(uint24 >>> 12) & 63]);\n if (addPadding) {\n output.appendCharCode(paddingCharCode);\n output.appendCharCode(paddingCharCode);\n }\n }\n }\n return output.getOutputString();\n };\n Base64.decodeWithJS = function (base64String, outputBuffer) {\n if (!base64String || base64String.length == 0)\n return new Uint8Array(0);\n var lengthModulo4 = base64String.length % 4;\n if (lengthModulo4 === 1)\n throw new Error(\"Invalid Base64 string: length % 4 == 1\");\n else if (lengthModulo4 === 2)\n base64String += paddingCharacter + paddingCharacter;\n else if (lengthModulo4 === 3)\n base64String += paddingCharacter;\n if (!outputBuffer)\n outputBuffer = new Uint8Array(base64String.length);\n var outputPosition = 0;\n var length = base64String.length;\n for (var i = 0; i < length; i += 4) {\n var uint24 = (reverseCharCodeMap[base64String.charCodeAt(i)] << 18) |\n (reverseCharCodeMap[base64String.charCodeAt(i + 1)] << 12) |\n (reverseCharCodeMap[base64String.charCodeAt(i + 2)] << 6) |\n (reverseCharCodeMap[base64String.charCodeAt(i + 3)]);\n outputBuffer[outputPosition++] = (uint24 >>> 16) & 255;\n outputBuffer[outputPosition++] = (uint24 >>> 8) & 255;\n outputBuffer[outputPosition++] = (uint24) & 255;\n }\n if (base64String.charCodeAt(length - 1) == paddingCharCode)\n outputPosition--;\n if (base64String.charCodeAt(length - 2) == paddingCharCode)\n outputPosition--;\n return outputBuffer.subarray(0, outputPosition);\n };\n })(Base64 = Encoding.Base64 || (Encoding.Base64 = {}));\n })(Encoding = LZUTF8.Encoding || (LZUTF8.Encoding = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var Encoding;\n (function (Encoding) {\n var BinaryString;\n (function (BinaryString) {\n BinaryString.encode = function (input) {\n if (input == null)\n throw new TypeError(\"BinaryString.encode: undefined or null input received\");\n if (input.length === 0)\n return \"\";\n var inputLength = input.length;\n var outputStringBuilder = new LZUTF8.StringBuilder();\n var remainder = 0;\n var state = 1;\n for (var i = 0; i < inputLength; i += 2) {\n var value = void 0;\n if (i == inputLength - 1)\n value = (input[i] << 8);\n else\n value = (input[i] << 8) | input[i + 1];\n outputStringBuilder.appendCharCode((remainder << (16 - state)) | value >>> state);\n remainder = value & ((1 << state) - 1);\n if (state === 15) {\n outputStringBuilder.appendCharCode(remainder);\n remainder = 0;\n state = 1;\n }\n else {\n state += 1;\n }\n if (i >= inputLength - 2)\n outputStringBuilder.appendCharCode(remainder << (16 - state));\n }\n outputStringBuilder.appendCharCode(32768 | (inputLength % 2));\n return outputStringBuilder.getOutputString();\n };\n BinaryString.decode = function (input) {\n if (typeof input !== \"string\")\n throw new TypeError(\"BinaryString.decode: invalid input type\");\n if (input == \"\")\n return new Uint8Array(0);\n var output = new Uint8Array(input.length * 3);\n var outputPosition = 0;\n var appendToOutput = function (value) {\n output[outputPosition++] = value >>> 8;\n output[outputPosition++] = value & 255;\n };\n var remainder = 0;\n var state = 0;\n for (var i = 0; i < input.length; i++) {\n var value = input.charCodeAt(i);\n if (value >= 32768) {\n if (value == (32768 | 1))\n outputPosition--;\n state = 0;\n continue;\n }\n if (state == 0) {\n remainder = value;\n }\n else {\n appendToOutput((remainder << state) | (value >>> (15 - state)));\n remainder = value & ((1 << (15 - state)) - 1);\n }\n if (state == 15)\n state = 0;\n else\n state += 1;\n }\n return output.subarray(0, outputPosition);\n };\n })(BinaryString = Encoding.BinaryString || (Encoding.BinaryString = {}));\n })(Encoding = LZUTF8.Encoding || (LZUTF8.Encoding = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var Encoding;\n (function (Encoding) {\n var CodePoint;\n (function (CodePoint) {\n CodePoint.encodeFromString = function (str, position) {\n var charCode = str.charCodeAt(position);\n if (charCode < 0xD800 || charCode > 0xDBFF)\n return charCode;\n else {\n var nextCharCode = str.charCodeAt(position + 1);\n if (nextCharCode >= 0xDC00 && nextCharCode <= 0xDFFF)\n return 0x10000 + (((charCode - 0xD800) << 10) + (nextCharCode - 0xDC00));\n else\n throw new Error(\"getUnicodeCodePoint: Received a lead surrogate character, char code \".concat(charCode, \", followed by \").concat(nextCharCode, \", which is not a trailing surrogate character code.\"));\n }\n };\n CodePoint.decodeToString = function (codePoint) {\n if (codePoint <= 0xFFFF)\n return String.fromCharCode(codePoint);\n else if (codePoint <= 0x10FFFF)\n return String.fromCharCode(0xD800 + ((codePoint - 0x10000) >>> 10), 0xDC00 + ((codePoint - 0x10000) & 1023));\n else\n throw new Error(\"getStringFromUnicodeCodePoint: A code point of \".concat(codePoint, \" cannot be encoded in UTF-16\"));\n };\n })(CodePoint = Encoding.CodePoint || (Encoding.CodePoint = {}));\n })(Encoding = LZUTF8.Encoding || (LZUTF8.Encoding = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var Encoding;\n (function (Encoding) {\n var DecimalString;\n (function (DecimalString) {\n var lookupTable = [\"000\", \"001\", \"002\", \"003\", \"004\", \"005\", \"006\", \"007\", \"008\", \"009\", \"010\", \"011\", \"012\", \"013\", \"014\", \"015\", \"016\", \"017\", \"018\", \"019\", \"020\", \"021\", \"022\", \"023\", \"024\", \"025\", \"026\", \"027\", \"028\", \"029\", \"030\", \"031\", \"032\", \"033\", \"034\", \"035\", \"036\", \"037\", \"038\", \"039\", \"040\", \"041\", \"042\", \"043\", \"044\", \"045\", \"046\", \"047\", \"048\", \"049\", \"050\", \"051\", \"052\", \"053\", \"054\", \"055\", \"056\", \"057\", \"058\", \"059\", \"060\", \"061\", \"062\", \"063\", \"064\", \"065\", \"066\", \"067\", \"068\", \"069\", \"070\", \"071\", \"072\", \"073\", \"074\", \"075\", \"076\", \"077\", \"078\", \"079\", \"080\", \"081\", \"082\", \"083\", \"084\", \"085\", \"086\", \"087\", \"088\", \"089\", \"090\", \"091\", \"092\", \"093\", \"094\", \"095\", \"096\", \"097\", \"098\", \"099\", \"100\", \"101\", \"102\", \"103\", \"104\", \"105\", \"106\", \"107\", \"108\", \"109\", \"110\", \"111\", \"112\", \"113\", \"114\", \"115\", \"116\", \"117\", \"118\", \"119\", \"120\", \"121\", \"122\", \"123\", \"124\", \"125\", \"126\", \"127\", \"128\", \"129\", \"130\", \"131\", \"132\", \"133\", \"134\", \"135\", \"136\", \"137\", \"138\", \"139\", \"140\", \"141\", \"142\", \"143\", \"144\", \"145\", \"146\", \"147\", \"148\", \"149\", \"150\", \"151\", \"152\", \"153\", \"154\", \"155\", \"156\", \"157\", \"158\", \"159\", \"160\", \"161\", \"162\", \"163\", \"164\", \"165\", \"166\", \"167\", \"168\", \"169\", \"170\", \"171\", \"172\", \"173\", \"174\", \"175\", \"176\", \"177\", \"178\", \"179\", \"180\", \"181\", \"182\", \"183\", \"184\", \"185\", \"186\", \"187\", \"188\", \"189\", \"190\", \"191\", \"192\", \"193\", \"194\", \"195\", \"196\", \"197\", \"198\", \"199\", \"200\", \"201\", \"202\", \"203\", \"204\", \"205\", \"206\", \"207\", \"208\", \"209\", \"210\", \"211\", \"212\", \"213\", \"214\", \"215\", \"216\", \"217\", \"218\", \"219\", \"220\", \"221\", \"222\", \"223\", \"224\", \"225\", \"226\", \"227\", \"228\", \"229\", \"230\", \"231\", \"232\", \"233\", \"234\", \"235\", \"236\", \"237\", \"238\", \"239\", \"240\", \"241\", \"242\", \"243\", \"244\", \"245\", \"246\", \"247\", \"248\", \"249\", \"250\", \"251\", \"252\", \"253\", \"254\", \"255\"];\n DecimalString.encode = function (binaryBytes) {\n var resultArray = [];\n for (var i = 0; i < binaryBytes.length; i++)\n resultArray.push(lookupTable[binaryBytes[i]]);\n return resultArray.join(\" \");\n };\n })(DecimalString = Encoding.DecimalString || (Encoding.DecimalString = {}));\n })(Encoding = LZUTF8.Encoding || (LZUTF8.Encoding = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var Encoding;\n (function (Encoding) {\n var StorageBinaryString;\n (function (StorageBinaryString) {\n StorageBinaryString.encode = function (input) {\n return Encoding.BinaryString.encode(input).replace(/\\0/g, '\\u8002');\n };\n StorageBinaryString.decode = function (input) {\n return Encoding.BinaryString.decode(input.replace(/\\u8002/g, '\\0'));\n };\n })(StorageBinaryString = Encoding.StorageBinaryString || (Encoding.StorageBinaryString = {}));\n })(Encoding = LZUTF8.Encoding || (LZUTF8.Encoding = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n var Encoding;\n (function (Encoding) {\n var UTF8;\n (function (UTF8) {\n var nativeTextEncoder;\n var nativeTextDecoder;\n UTF8.encode = function (str) {\n if (!str || str.length == 0)\n return new Uint8Array(0);\n if (LZUTF8.runningInNodeJS()) {\n return LZUTF8.BufferTools.bufferToUint8Array(Buffer.from(str, \"utf8\"));\n }\n else if (UTF8.createNativeTextEncoderAndDecoderIfAvailable()) {\n return nativeTextEncoder.encode(str);\n }\n else {\n return UTF8.encodeWithJS(str);\n }\n };\n UTF8.decode = function (utf8Bytes) {\n if (!utf8Bytes || utf8Bytes.length == 0)\n return \"\";\n if (LZUTF8.runningInNodeJS()) {\n return LZUTF8.BufferTools.uint8ArrayToBuffer(utf8Bytes).toString(\"utf8\");\n }\n else if (UTF8.createNativeTextEncoderAndDecoderIfAvailable()) {\n return nativeTextDecoder.decode(utf8Bytes);\n }\n else {\n return UTF8.decodeWithJS(utf8Bytes);\n }\n };\n UTF8.encodeWithJS = function (str, outputArray) {\n if (!str || str.length == 0)\n return new Uint8Array(0);\n if (!outputArray)\n outputArray = new Uint8Array(str.length * 4);\n var writeIndex = 0;\n for (var readIndex = 0; readIndex < str.length; readIndex++) {\n var charCode = Encoding.CodePoint.encodeFromString(str, readIndex);\n if (charCode <= 0x7F) {\n outputArray[writeIndex++] = charCode;\n }\n else if (charCode <= 0x7FF) {\n outputArray[writeIndex++] = 0xC0 | (charCode >>> 6);\n outputArray[writeIndex++] = 0x80 | (charCode & 63);\n }\n else if (charCode <= 0xFFFF) {\n outputArray[writeIndex++] = 0xE0 | (charCode >>> 12);\n outputArray[writeIndex++] = 0x80 | ((charCode >>> 6) & 63);\n outputArray[writeIndex++] = 0x80 | (charCode & 63);\n }\n else if (charCode <= 0x10FFFF) {\n outputArray[writeIndex++] = 0xF0 | (charCode >>> 18);\n outputArray[writeIndex++] = 0x80 | ((charCode >>> 12) & 63);\n outputArray[writeIndex++] = 0x80 | ((charCode >>> 6) & 63);\n outputArray[writeIndex++] = 0x80 | (charCode & 63);\n readIndex++;\n }\n else\n throw new Error(\"Invalid UTF-16 string: Encountered a character unsupported by UTF-8/16 (RFC 3629)\");\n }\n return outputArray.subarray(0, writeIndex);\n };\n UTF8.decodeWithJS = function (utf8Bytes, startOffset, endOffset) {\n if (startOffset === void 0) { startOffset = 0; }\n if (!utf8Bytes || utf8Bytes.length == 0)\n return \"\";\n if (endOffset === undefined)\n endOffset = utf8Bytes.length;\n var output = new LZUTF8.StringBuilder();\n var outputCodePoint;\n var leadByte;\n for (var readIndex = startOffset, length_6 = endOffset; readIndex < length_6;) {\n leadByte = utf8Bytes[readIndex];\n if ((leadByte >>> 7) === 0) {\n outputCodePoint = leadByte;\n readIndex += 1;\n }\n else if ((leadByte >>> 5) === 6) {\n if (readIndex + 1 >= endOffset)\n throw new Error(\"Invalid UTF-8 stream: Truncated codepoint sequence encountered at position \" + readIndex);\n outputCodePoint = ((leadByte & 31) << 6) | (utf8Bytes[readIndex + 1] & 63);\n readIndex += 2;\n }\n else if ((leadByte >>> 4) === 14) {\n if (readIndex + 2 >= endOffset)\n throw new Error(\"Invalid UTF-8 stream: Truncated codepoint sequence encountered at position \" + readIndex);\n outputCodePoint = ((leadByte & 15) << 12) | ((utf8Bytes[readIndex + 1] & 63) << 6) | (utf8Bytes[readIndex + 2] & 63);\n readIndex += 3;\n }\n else if ((leadByte >>> 3) === 30) {\n if (readIndex + 3 >= endOffset)\n throw new Error(\"Invalid UTF-8 stream: Truncated codepoint sequence encountered at position \" + readIndex);\n outputCodePoint = ((leadByte & 7) << 18) | ((utf8Bytes[readIndex + 1] & 63) << 12) | ((utf8Bytes[readIndex + 2] & 63) << 6) | (utf8Bytes[readIndex + 3] & 63);\n readIndex += 4;\n }\n else\n throw new Error(\"Invalid UTF-8 stream: An invalid lead byte value encountered at position \" + readIndex);\n output.appendCodePoint(outputCodePoint);\n }\n return output.getOutputString();\n };\n UTF8.createNativeTextEncoderAndDecoderIfAvailable = function () {\n if (nativeTextEncoder)\n return true;\n if (typeof TextEncoder == \"function\") {\n nativeTextEncoder = new TextEncoder(\"utf-8\");\n nativeTextDecoder = new TextDecoder(\"utf-8\");\n return true;\n }\n else\n return false;\n };\n })(UTF8 = Encoding.UTF8 || (Encoding.UTF8 = {}));\n })(Encoding = LZUTF8.Encoding || (LZUTF8.Encoding = {}));\n})(LZUTF8 || (LZUTF8 = {}));\nvar LZUTF8;\n(function (LZUTF8) {\n function compress(input, options) {\n if (options === void 0) { options = {}; }\n if (input == null)\n throw new TypeError(\"compress: undefined or null input received\");\n var inputEncoding = LZUTF8.CompressionCommon.detectCompressionSourceEncoding(input);\n options = LZUTF8.ObjectTools.override({ inputEncoding: inputEncoding, outputEncoding: \"ByteArray\" }, options);\n var compressor = new LZUTF8.Compressor();\n var compressedBytes = compressor.compressBlock(input);\n return LZUTF8.CompressionCommon.encodeCompressedBytes(compressedBytes, options.outputEncoding);\n }\n LZUTF8.compress = compress;\n function decompress(input, options) {\n if (options === void 0) { options = {}; }\n if (input == null)\n throw new TypeError(\"decompress: undefined or null input received\");\n options = LZUTF8.ObjectTools.override({ inputEncoding: \"ByteArray\", outputEncoding: \"String\" }, options);\n var inputBytes = LZUTF8.CompressionCommon.decodeCompressedBytes(input, options.inputEncoding);\n var decompressor = new LZUTF8.Decompressor();\n var decompressedBytes = decompressor.decompressBlock(inputBytes);\n return LZUTF8.CompressionCommon.encodeDecompressedBytes(decompressedBytes, options.outputEncoding);\n }\n LZUTF8.decompress = decompress;\n function compressAsync(input, options, callback) {\n if (callback == null)\n callback = function () { };\n var inputEncoding;\n try {\n inputEncoding = LZUTF8.CompressionCommon.detectCompressionSourceEncoding(input);\n }\n catch (e) {\n callback(undefined, e);\n return;\n }\n options = LZUTF8.ObjectTools.override({\n inputEncoding: inputEncoding,\n outputEncoding: \"ByteArray\",\n useWebWorker: true,\n blockSize: 65536\n }, options);\n LZUTF8.enqueueImmediate(function () {\n if (options.useWebWorker && LZUTF8.WebWorker.createGlobalWorkerIfNeeded()) {\n LZUTF8.WebWorker.compressAsync(input, options, callback);\n }\n else {\n LZUTF8.AsyncCompressor.compressAsync(input, options, callback);\n }\n });\n }\n LZUTF8.compressAsync = compressAsync;\n function decompressAsync(input, options, callback) {\n if (callback == null)\n callback = function () { };\n if (input == null) {\n callback(undefined, new TypeError(\"decompressAsync: undefined or null input received\"));\n return;\n }\n options = LZUTF8.ObjectTools.override({\n inputEncoding: \"ByteArray\",\n outputEncoding: \"String\",\n useWebWorker: true,\n blockSize: 65536\n }, options);\n var normalizedInput = LZUTF8.BufferTools.convertToUint8ArrayIfNeeded(input);\n LZUTF8.EventLoop.enqueueImmediate(function () {\n if (options.useWebWorker && LZUTF8.WebWorker.createGlobalWorkerIfNeeded()) {\n LZUTF8.WebWorker.decompressAsync(normalizedInput, options, callback);\n }\n else {\n LZUTF8.AsyncDecompressor.decompressAsync(input, options, callback);\n }\n });\n }\n LZUTF8.decompressAsync = decompressAsync;\n function createCompressionStream() {\n return LZUTF8.AsyncCompressor.createCompressionStream();\n }\n LZUTF8.createCompressionStream = createCompressionStream;\n function createDecompressionStream() {\n return LZUTF8.AsyncDecompressor.createDecompressionStream();\n }\n LZUTF8.createDecompressionStream = createDecompressionStream;\n function encodeUTF8(str) {\n return LZUTF8.Encoding.UTF8.encode(str);\n }\n LZUTF8.encodeUTF8 = encodeUTF8;\n function decodeUTF8(input) {\n return LZUTF8.Encoding.UTF8.decode(input);\n }\n LZUTF8.decodeUTF8 = decodeUTF8;\n function encodeBase64(input) {\n return LZUTF8.Encoding.Base64.encode(input);\n }\n LZUTF8.encodeBase64 = encodeBase64;\n function decodeBase64(str) {\n return LZUTF8.Encoding.Base64.decode(str);\n }\n LZUTF8.decodeBase64 = decodeBase64;\n function encodeBinaryString(input) {\n return LZUTF8.Encoding.BinaryString.encode(input);\n }\n LZUTF8.encodeBinaryString = encodeBinaryString;\n function decodeBinaryString(str) {\n return LZUTF8.Encoding.BinaryString.decode(str);\n }\n LZUTF8.decodeBinaryString = decodeBinaryString;\n function encodeStorageBinaryString(input) {\n return LZUTF8.Encoding.StorageBinaryString.encode(input);\n }\n LZUTF8.encodeStorageBinaryString = encodeStorageBinaryString;\n function decodeStorageBinaryString(str) {\n return LZUTF8.Encoding.StorageBinaryString.decode(str);\n }\n LZUTF8.decodeStorageBinaryString = decodeStorageBinaryString;\n})(LZUTF8 || (LZUTF8 = {}));\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","'use strict'\n\n/* eslint-env browser */\n\nvar el\n\nvar semicolon = 59 // ';'\n\nmodule.exports = decodeEntity\n\nfunction decodeEntity(characters) {\n var entity = '&' + characters + ';'\n var char\n\n el = el || document.createElement('i')\n el.innerHTML = entity\n char = el.textContent\n\n // Some entities do not require the closing semicolon (`¬` - for instance),\n // which leads to situations where parsing the assumed entity of ¬it; will\n // result in the string `¬it;`. When we encounter a trailing semicolon after\n // parsing and the entity to decode was not a semicolon (`;`), we can\n // assume that the matching was incomplete\n if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the entity was not valid\n return char === entity ? false : char\n}\n","'use strict'\n\nvar legacy = require('character-entities-legacy')\nvar invalid = require('character-reference-invalid')\nvar decimal = require('is-decimal')\nvar hexadecimal = require('is-hexadecimal')\nvar alphanumerical = require('is-alphanumerical')\nvar decodeEntity = require('./decode-entity')\n\nmodule.exports = parseEntities\n\nvar own = {}.hasOwnProperty\nvar fromCharCode = String.fromCharCode\nvar noop = Function.prototype\n\n// Default settings.\nvar defaults = {\n warning: null,\n reference: null,\n text: null,\n warningContext: null,\n referenceContext: null,\n textContext: null,\n position: {},\n additional: null,\n attribute: false,\n nonTerminated: true\n}\n\n// Characters.\nvar tab = 9 // '\\t'\nvar lineFeed = 10 // '\\n'\nvar formFeed = 12 // '\\f'\nvar space = 32 // ' '\nvar ampersand = 38 // '&'\nvar semicolon = 59 // ';'\nvar lessThan = 60 // '<'\nvar equalsTo = 61 // '='\nvar numberSign = 35 // '#'\nvar uppercaseX = 88 // 'X'\nvar lowercaseX = 120 // 'x'\nvar replacementCharacter = 65533 // '�'\n\n// Reference types.\nvar name = 'named'\nvar hexa = 'hexadecimal'\nvar deci = 'decimal'\n\n// Map of bases.\nvar bases = {}\n\nbases[hexa] = 16\nbases[deci] = 10\n\n// Map of types to tests.\n// Each type of character reference accepts different characters.\n// This test is used to detect whether a reference has ended (as the semicolon\n// is not strictly needed).\nvar tests = {}\n\ntests[name] = alphanumerical\ntests[deci] = decimal\ntests[hexa] = hexadecimal\n\n// Warning types.\nvar namedNotTerminated = 1\nvar numericNotTerminated = 2\nvar namedEmpty = 3\nvar numericEmpty = 4\nvar namedUnknown = 5\nvar numericDisallowed = 6\nvar numericProhibited = 7\n\n// Warning messages.\nvar messages = {}\n\nmessages[namedNotTerminated] =\n 'Named character references must be terminated by a semicolon'\nmessages[numericNotTerminated] =\n 'Numeric character references must be terminated by a semicolon'\nmessages[namedEmpty] = 'Named character references cannot be empty'\nmessages[numericEmpty] = 'Numeric character references cannot be empty'\nmessages[namedUnknown] = 'Named character references must be known'\nmessages[numericDisallowed] =\n 'Numeric character references cannot be disallowed'\nmessages[numericProhibited] =\n 'Numeric character references cannot be outside the permissible Unicode range'\n\n// Wrap to ensure clean parameters are given to `parse`.\nfunction parseEntities(value, options) {\n var settings = {}\n var option\n var key\n\n if (!options) {\n options = {}\n }\n\n for (key in defaults) {\n option = options[key]\n settings[key] =\n option === null || option === undefined ? defaults[key] : option\n }\n\n if (settings.position.indent || settings.position.start) {\n settings.indent = settings.position.indent || []\n settings.position = settings.position.start\n }\n\n return parse(value, settings)\n}\n\n// Parse entities.\n// eslint-disable-next-line complexity\nfunction parse(value, settings) {\n var additional = settings.additional\n var nonTerminated = settings.nonTerminated\n var handleText = settings.text\n var handleReference = settings.reference\n var handleWarning = settings.warning\n var textContext = settings.textContext\n var referenceContext = settings.referenceContext\n var warningContext = settings.warningContext\n var pos = settings.position\n var indent = settings.indent || []\n var length = value.length\n var index = 0\n var lines = -1\n var column = pos.column || 1\n var line = pos.line || 1\n var queue = ''\n var result = []\n var entityCharacters\n var namedEntity\n var terminated\n var characters\n var character\n var reference\n var following\n var warning\n var reason\n var output\n var entity\n var begin\n var start\n var type\n var test\n var prev\n var next\n var diff\n var end\n\n if (typeof additional === 'string') {\n additional = additional.charCodeAt(0)\n }\n\n // Cache the current point.\n prev = now()\n\n // Wrap `handleWarning`.\n warning = handleWarning ? parseError : noop\n\n // Ensure the algorithm walks over the first character and the end\n // (inclusive).\n index--\n length++\n\n while (++index < length) {\n // If the previous character was a newline.\n if (character === lineFeed) {\n column = indent[lines] || 1\n }\n\n character = value.charCodeAt(index)\n\n if (character === ampersand) {\n following = value.charCodeAt(index + 1)\n\n // The behaviour depends on the identity of the next character.\n if (\n following === tab ||\n following === lineFeed ||\n following === formFeed ||\n following === space ||\n following === ampersand ||\n following === lessThan ||\n following !== following ||\n (additional && following === additional)\n ) {\n // Not a character reference.\n // No characters are consumed, and nothing is returned.\n // This is not an error, either.\n queue += fromCharCode(character)\n column++\n\n continue\n }\n\n start = index + 1\n begin = start\n end = start\n\n if (following === numberSign) {\n // Numerical entity.\n end = ++begin\n\n // The behaviour further depends on the next character.\n following = value.charCodeAt(end)\n\n if (following === uppercaseX || following === lowercaseX) {\n // ASCII hex digits.\n type = hexa\n end = ++begin\n } else {\n // ASCII digits.\n type = deci\n }\n } else {\n // Named entity.\n type = name\n }\n\n entityCharacters = ''\n entity = ''\n characters = ''\n test = tests[type]\n end--\n\n while (++end < length) {\n following = value.charCodeAt(end)\n\n if (!test(following)) {\n break\n }\n\n characters += fromCharCode(following)\n\n // Check if we can match a legacy named reference.\n // If so, we cache that as the last viable named reference.\n // This ensures we do not need to walk backwards later.\n if (type === name && own.call(legacy, characters)) {\n entityCharacters = characters\n entity = legacy[characters]\n }\n }\n\n terminated = value.charCodeAt(end) === semicolon\n\n if (terminated) {\n end++\n\n namedEntity = type === name ? decodeEntity(characters) : false\n\n if (namedEntity) {\n entityCharacters = characters\n entity = namedEntity\n }\n }\n\n diff = 1 + end - start\n\n if (!terminated && !nonTerminated) {\n // Empty.\n } else if (!characters) {\n // An empty (possible) entity is valid, unless it’s numeric (thus an\n // ampersand followed by an octothorp).\n if (type !== name) {\n warning(numericEmpty, diff)\n }\n } else if (type === name) {\n // An ampersand followed by anything unknown, and not terminated, is\n // invalid.\n if (terminated && !entity) {\n warning(namedUnknown, 1)\n } else {\n // If theres something after an entity name which is not known, cap\n // the reference.\n if (entityCharacters !== characters) {\n end = begin + entityCharacters.length\n diff = 1 + end - begin\n terminated = false\n }\n\n // If the reference is not terminated, warn.\n if (!terminated) {\n reason = entityCharacters ? namedNotTerminated : namedEmpty\n\n if (settings.attribute) {\n following = value.charCodeAt(end)\n\n if (following === equalsTo) {\n warning(reason, diff)\n entity = null\n } else if (alphanumerical(following)) {\n entity = null\n } else {\n warning(reason, diff)\n }\n } else {\n warning(reason, diff)\n }\n }\n }\n\n reference = entity\n } else {\n if (!terminated) {\n // All non-terminated numeric entities are not rendered, and trigger a\n // warning.\n warning(numericNotTerminated, diff)\n }\n\n // When terminated and number, parse as either hexadecimal or decimal.\n reference = parseInt(characters, bases[type])\n\n // Trigger a warning when the parsed number is prohibited, and replace\n // with replacement character.\n if (prohibited(reference)) {\n warning(numericProhibited, diff)\n reference = fromCharCode(replacementCharacter)\n } else if (reference in invalid) {\n // Trigger a warning when the parsed number is disallowed, and replace\n // by an alternative.\n warning(numericDisallowed, diff)\n reference = invalid[reference]\n } else {\n // Parse the number.\n output = ''\n\n // Trigger a warning when the parsed number should not be used.\n if (disallowed(reference)) {\n warning(numericDisallowed, diff)\n }\n\n // Stringify the number.\n if (reference > 0xffff) {\n reference -= 0x10000\n output += fromCharCode((reference >>> (10 & 0x3ff)) | 0xd800)\n reference = 0xdc00 | (reference & 0x3ff)\n }\n\n reference = output + fromCharCode(reference)\n }\n }\n\n // Found it!\n // First eat the queued characters as normal text, then eat an entity.\n if (reference) {\n flush()\n\n prev = now()\n index = end - 1\n column += end - start + 1\n result.push(reference)\n next = now()\n next.offset++\n\n if (handleReference) {\n handleReference.call(\n referenceContext,\n reference,\n {start: prev, end: next},\n value.slice(start - 1, end)\n )\n }\n\n prev = next\n } else {\n // If we could not find a reference, queue the checked characters (as\n // normal characters), and move the pointer to their end.\n // This is possible because we can be certain neither newlines nor\n // ampersands are included.\n characters = value.slice(start - 1, end)\n queue += characters\n column += characters.length\n index = end - 1\n }\n } else {\n // Handle anything other than an ampersand, including newlines and EOF.\n if (\n character === 10 // Line feed\n ) {\n line++\n lines++\n column = 0\n }\n\n if (character === character) {\n queue += fromCharCode(character)\n column++\n } else {\n flush()\n }\n }\n }\n\n // Return the reduced nodes.\n return result.join('')\n\n // Get current position.\n function now() {\n return {\n line: line,\n column: column,\n offset: index + (pos.offset || 0)\n }\n }\n\n // “Throw” a parse-error: a warning.\n function parseError(code, offset) {\n var position = now()\n\n position.column += offset\n position.offset += offset\n\n handleWarning.call(warningContext, messages[code], position, code)\n }\n\n // Flush `queue` (normal text).\n // Macro invoked before each entity and at the end of `value`.\n // Does nothing when `queue` is empty.\n function flush() {\n if (queue) {\n result.push(queue)\n\n if (handleText) {\n handleText.call(textContext, queue, {start: prev, end: now()})\n }\n\n queue = ''\n }\n }\n}\n\n// Check if `character` is outside the permissible unicode range.\nfunction prohibited(code) {\n return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff\n}\n\n// Check if `character` is disallowed.\nfunction disallowed(code) {\n return (\n (code >= 0x0001 && code <= 0x0008) ||\n code === 0x000b ||\n (code >= 0x000d && code <= 0x001f) ||\n (code >= 0x007f && code <= 0x009f) ||\n (code >= 0xfdd0 && code <= 0xfdef) ||\n (code & 0xffff) === 0xffff ||\n (code & 0xffff) === 0xfffe\n )\n}\n","if performance? and performance.now\n module.exports = -> performance.now()\nelse if process? and process.hrtime\n module.exports = -> (getNanoSeconds() - nodeLoadTime) / 1e6\n hrtime = process.hrtime\n getNanoSeconds = ->\n hr = hrtime()\n hr[0] * 1e9 + hr[1]\n moduleLoadTime = getNanoSeconds()\n upTime = process.uptime() * 1e9\n nodeLoadTime = moduleLoadTime - upTime\nelse if Date.now\n module.exports = -> Date.now() - loadTime\n loadTime = Date.now()\nelse\n module.exports = -> new Date().getTime() - loadTime\n loadTime = new Date().getTime()\n","/* global define */\n\n(function (root, pluralize) {\n /* istanbul ignore else */\n if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {\n // Node.\n module.exports = pluralize();\n } else if (typeof define === 'function' && define.amd) {\n // AMD, registers as an anonymous module.\n define(function () {\n return pluralize();\n });\n } else {\n // Browser global.\n root.pluralize = pluralize();\n }\n})(this, function () {\n // Rule storage - pluralize and singularize need to be run sequentially,\n // while other rules can be optimized using an object for instant lookups.\n var pluralRules = [];\n var singularRules = [];\n var uncountables = {};\n var irregularPlurals = {};\n var irregularSingles = {};\n\n /**\n * Sanitize a pluralization rule to a usable regular expression.\n *\n * @param {(RegExp|string)} rule\n * @return {RegExp}\n */\n function sanitizeRule (rule) {\n if (typeof rule === 'string') {\n return new RegExp('^' + rule + '$', 'i');\n }\n\n return rule;\n }\n\n /**\n * Pass in a word token to produce a function that can replicate the case on\n * another word.\n *\n * @param {string} word\n * @param {string} token\n * @return {Function}\n */\n function restoreCase (word, token) {\n // Tokens are an exact match.\n if (word === token) return token;\n\n // Lower cased words. E.g. \"hello\".\n if (word === word.toLowerCase()) return token.toLowerCase();\n\n // Upper cased words. E.g. \"WHISKY\".\n if (word === word.toUpperCase()) return token.toUpperCase();\n\n // Title cased words. E.g. \"Title\".\n if (word[0] === word[0].toUpperCase()) {\n return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();\n }\n\n // Lower cased words. E.g. \"test\".\n return token.toLowerCase();\n }\n\n /**\n * Interpolate a regexp string.\n *\n * @param {string} str\n * @param {Array} args\n * @return {string}\n */\n function interpolate (str, args) {\n return str.replace(/\\$(\\d{1,2})/g, function (match, index) {\n return args[index] || '';\n });\n }\n\n /**\n * Replace a word using a rule.\n *\n * @param {string} word\n * @param {Array} rule\n * @return {string}\n */\n function replace (word, rule) {\n return word.replace(rule[0], function (match, index) {\n var result = interpolate(rule[1], arguments);\n\n if (match === '') {\n return restoreCase(word[index - 1], result);\n }\n\n return restoreCase(match, result);\n });\n }\n\n /**\n * Sanitize a word by passing in the word and sanitization rules.\n *\n * @param {string} token\n * @param {string} word\n * @param {Array} rules\n * @return {string}\n */\n function sanitizeWord (token, word, rules) {\n // Empty string or doesn't need fixing.\n if (!token.length || uncountables.hasOwnProperty(token)) {\n return word;\n }\n\n var len = rules.length;\n\n // Iterate over the sanitization rules and use the first one to match.\n while (len--) {\n var rule = rules[len];\n\n if (rule[0].test(word)) return replace(word, rule);\n }\n\n return word;\n }\n\n /**\n * Replace a word with the updated word.\n *\n * @param {Object} replaceMap\n * @param {Object} keepMap\n * @param {Array} rules\n * @return {Function}\n */\n function replaceWord (replaceMap, keepMap, rules) {\n return function (word) {\n // Get the correct token and case restoration functions.\n var token = word.toLowerCase();\n\n // Check against the keep object map.\n if (keepMap.hasOwnProperty(token)) {\n return restoreCase(word, token);\n }\n\n // Check against the replacement map for a direct word replacement.\n if (replaceMap.hasOwnProperty(token)) {\n return restoreCase(word, replaceMap[token]);\n }\n\n // Run all the rules against the word.\n return sanitizeWord(token, word, rules);\n };\n }\n\n /**\n * Check if a word is part of the map.\n */\n function checkWord (replaceMap, keepMap, rules, bool) {\n return function (word) {\n var token = word.toLowerCase();\n\n if (keepMap.hasOwnProperty(token)) return true;\n if (replaceMap.hasOwnProperty(token)) return false;\n\n return sanitizeWord(token, token, rules) === token;\n };\n }\n\n /**\n * Pluralize or singularize a word based on the passed in count.\n *\n * @param {string} word The word to pluralize\n * @param {number} count How many of the word exist\n * @param {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)\n * @return {string}\n */\n function pluralize (word, count, inclusive) {\n var pluralized = count === 1\n ? pluralize.singular(word) : pluralize.plural(word);\n\n return (inclusive ? count + ' ' : '') + pluralized;\n }\n\n /**\n * Pluralize a word.\n *\n * @type {Function}\n */\n pluralize.plural = replaceWord(\n irregularSingles, irregularPlurals, pluralRules\n );\n\n /**\n * Check if a word is plural.\n *\n * @type {Function}\n */\n pluralize.isPlural = checkWord(\n irregularSingles, irregularPlurals, pluralRules\n );\n\n /**\n * Singularize a word.\n *\n * @type {Function}\n */\n pluralize.singular = replaceWord(\n irregularPlurals, irregularSingles, singularRules\n );\n\n /**\n * Check if a word is singular.\n *\n * @type {Function}\n */\n pluralize.isSingular = checkWord(\n irregularPlurals, irregularSingles, singularRules\n );\n\n /**\n * Add a pluralization rule to the collection.\n *\n * @param {(string|RegExp)} rule\n * @param {string} replacement\n */\n pluralize.addPluralRule = function (rule, replacement) {\n pluralRules.push([sanitizeRule(rule), replacement]);\n };\n\n /**\n * Add a singularization rule to the collection.\n *\n * @param {(string|RegExp)} rule\n * @param {string} replacement\n */\n pluralize.addSingularRule = function (rule, replacement) {\n singularRules.push([sanitizeRule(rule), replacement]);\n };\n\n /**\n * Add an uncountable word rule.\n *\n * @param {(string|RegExp)} word\n */\n pluralize.addUncountableRule = function (word) {\n if (typeof word === 'string') {\n uncountables[word.toLowerCase()] = true;\n return;\n }\n\n // Set singular and plural references for the word.\n pluralize.addPluralRule(word, '$0');\n pluralize.addSingularRule(word, '$0');\n };\n\n /**\n * Add an irregular word definition.\n *\n * @param {string} single\n * @param {string} plural\n */\n pluralize.addIrregularRule = function (single, plural) {\n plural = plural.toLowerCase();\n single = single.toLowerCase();\n\n irregularSingles[single] = plural;\n irregularPlurals[plural] = single;\n };\n\n /**\n * Irregular rules.\n */\n [\n // Pronouns.\n ['I', 'we'],\n ['me', 'us'],\n ['he', 'they'],\n ['she', 'they'],\n ['them', 'them'],\n ['myself', 'ourselves'],\n ['yourself', 'yourselves'],\n ['itself', 'themselves'],\n ['herself', 'themselves'],\n ['himself', 'themselves'],\n ['themself', 'themselves'],\n ['is', 'are'],\n ['was', 'were'],\n ['has', 'have'],\n ['this', 'these'],\n ['that', 'those'],\n // Words ending in with a consonant and `o`.\n ['echo', 'echoes'],\n ['dingo', 'dingoes'],\n ['volcano', 'volcanoes'],\n ['tornado', 'tornadoes'],\n ['torpedo', 'torpedoes'],\n // Ends with `us`.\n ['genus', 'genera'],\n ['viscus', 'viscera'],\n // Ends with `ma`.\n ['stigma', 'stigmata'],\n ['stoma', 'stomata'],\n ['dogma', 'dogmata'],\n ['lemma', 'lemmata'],\n ['schema', 'schemata'],\n ['anathema', 'anathemata'],\n // Other irregular rules.\n ['ox', 'oxen'],\n ['axe', 'axes'],\n ['die', 'dice'],\n ['yes', 'yeses'],\n ['foot', 'feet'],\n ['eave', 'eaves'],\n ['goose', 'geese'],\n ['tooth', 'teeth'],\n ['quiz', 'quizzes'],\n ['human', 'humans'],\n ['proof', 'proofs'],\n ['carve', 'carves'],\n ['valve', 'valves'],\n ['looey', 'looies'],\n ['thief', 'thieves'],\n ['groove', 'grooves'],\n ['pickaxe', 'pickaxes'],\n ['passerby', 'passersby']\n ].forEach(function (rule) {\n return pluralize.addIrregularRule(rule[0], rule[1]);\n });\n\n /**\n * Pluralization rules.\n */\n [\n [/s?$/i, 's'],\n [/[^\\u0000-\\u007F]$/i, '$0'],\n [/([^aeiou]ese)$/i, '$1'],\n [/(ax|test)is$/i, '$1es'],\n [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],\n [/(e[mn]u)s?$/i, '$1s'],\n [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],\n [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],\n [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],\n [/(seraph|cherub)(?:im)?$/i, '$1im'],\n [/(her|at|gr)o$/i, '$1oes'],\n [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],\n [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],\n [/sis$/i, 'ses'],\n [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],\n [/([^aeiouy]|qu)y$/i, '$1ies'],\n [/([^ch][ieo][ln])ey$/i, '$1ies'],\n [/(x|ch|ss|sh|zz)$/i, '$1es'],\n [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],\n [/\\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],\n [/(pe)(?:rson|ople)$/i, '$1ople'],\n [/(child)(?:ren)?$/i, '$1ren'],\n [/eaux$/i, '$0'],\n [/m[ae]n$/i, 'men'],\n ['thou', 'you']\n ].forEach(function (rule) {\n return pluralize.addPluralRule(rule[0], rule[1]);\n });\n\n /**\n * Singularization rules.\n */\n [\n [/s$/i, ''],\n [/(ss)$/i, '$1'],\n [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\\w]|^)li)ves$/i, '$1fe'],\n [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],\n [/ies$/i, 'y'],\n [/\\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],\n [/\\b(mon|smil)ies$/i, '$1ey'],\n [/\\b((?:tit)?m|l)ice$/i, '$1ouse'],\n [/(seraph|cherub)im$/i, '$1'],\n [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],\n [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],\n [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],\n [/(test)(?:is|es)$/i, '$1is'],\n [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],\n [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],\n [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],\n [/(alumn|alg|vertebr)ae$/i, '$1a'],\n [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],\n [/(matr|append)ices$/i, '$1ix'],\n [/(pe)(rson|ople)$/i, '$1rson'],\n [/(child)ren$/i, '$1'],\n [/(eau)x?$/i, '$1'],\n [/men$/i, 'man']\n ].forEach(function (rule) {\n return pluralize.addSingularRule(rule[0], rule[1]);\n });\n\n /**\n * Uncountable rules.\n */\n [\n // Singular words with no plurals.\n 'adulthood',\n 'advice',\n 'agenda',\n 'aid',\n 'aircraft',\n 'alcohol',\n 'ammo',\n 'analytics',\n 'anime',\n 'athletics',\n 'audio',\n 'bison',\n 'blood',\n 'bream',\n 'buffalo',\n 'butter',\n 'carp',\n 'cash',\n 'chassis',\n 'chess',\n 'clothing',\n 'cod',\n 'commerce',\n 'cooperation',\n 'corps',\n 'debris',\n 'diabetes',\n 'digestion',\n 'elk',\n 'energy',\n 'equipment',\n 'excretion',\n 'expertise',\n 'firmware',\n 'flounder',\n 'fun',\n 'gallows',\n 'garbage',\n 'graffiti',\n 'hardware',\n 'headquarters',\n 'health',\n 'herpes',\n 'highjinks',\n 'homework',\n 'housework',\n 'information',\n 'jeans',\n 'justice',\n 'kudos',\n 'labour',\n 'literature',\n 'machinery',\n 'mackerel',\n 'mail',\n 'media',\n 'mews',\n 'moose',\n 'music',\n 'mud',\n 'manga',\n 'news',\n 'only',\n 'personnel',\n 'pike',\n 'plankton',\n 'pliers',\n 'police',\n 'pollution',\n 'premises',\n 'rain',\n 'research',\n 'rice',\n 'salmon',\n 'scissors',\n 'series',\n 'sewage',\n 'shambles',\n 'shrimp',\n 'software',\n 'species',\n 'staff',\n 'swine',\n 'tennis',\n 'traffic',\n 'transportation',\n 'trout',\n 'tuna',\n 'wealth',\n 'welfare',\n 'whiting',\n 'wildebeest',\n 'wildlife',\n 'you',\n /pok[eé]mon$/i,\n // Regexes.\n /[^aeiou]ese$/i, // \"chinese\", \"japanese\"\n /deer$/i, // \"deer\", \"reindeer\"\n /fish$/i, // \"fish\", \"blowfish\", \"angelfish\"\n /measles$/i,\n /o[iu]s$/i, // \"carnivorous\"\n /pox$/i, // \"chickpox\", \"smallpox\"\n /sheep$/i\n ].forEach(pluralize.addUncountableRule);\n\n return pluralize;\n});\n","var div = null\nvar prefixes = [ 'Webkit', 'Moz', 'O', 'ms' ]\n\nmodule.exports = function prefixStyle (prop) {\n // re-use a dummy div\n if (!div) {\n div = document.createElement('div')\n }\n\n var style = div.style\n\n // prop exists without prefix\n if (prop in style) {\n return prop\n }\n\n // borderRadius -> BorderRadius\n var titleCase = prop.charAt(0).toUpperCase() + prop.slice(1)\n\n // find the vendor-prefixed prop\n for (var i = prefixes.length; i >= 0; i--) {\n var name = prefixes[i] + titleCase\n // e.g. WebkitBorderRadius or webkitBorderRadius\n if (name in style) {\n return name\n }\n }\n\n return false\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict'\n\nvar normalize = require('./normalize')\nvar DefinedInfo = require('./lib/util/defined-info')\nvar Info = require('./lib/util/info')\n\nvar data = 'data'\n\nmodule.exports = find\n\nvar valid = /^data[-\\w.:]+$/i\nvar dash = /-[a-z]/g\nvar cap = /[A-Z]/g\n\nfunction find(schema, value) {\n var normal = normalize(value)\n var prop = value\n var Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === data && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n prop = datasetToProperty(value)\n } else {\n value = datasetToAttribute(value)\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\nfunction datasetToProperty(attribute) {\n var value = attribute.slice(5).replace(dash, camelcase)\n return data + value.charAt(0).toUpperCase() + value.slice(1)\n}\n\nfunction datasetToAttribute(property) {\n var value = property.slice(4)\n\n if (dash.test(value)) {\n return property\n }\n\n value = value.replace(cap, kebab)\n\n if (value.charAt(0) !== '-') {\n value = '-' + value\n }\n\n return data + value\n}\n\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar html = require('./lib/html')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, html])\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\n\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\n\nmodule.exports = create({\n transform: ariaTransform,\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n\nfunction ariaTransform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n}\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nvar boolean = types.boolean\nvar overloadedBoolean = types.overloadedBoolean\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\n\nmodule.exports = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: commaSeparated,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextMenu: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: commaSeparated,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
    `. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
    `\n cellSpacing: null, // `
    `\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
    `. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
    `. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `